WQuestions

Parte II · Las siete coordenadas

04

Cuánto: el eje cuantitativo (N)

Un número solo es ruido con apariencia de dato. El cuarto eje no guarda cosas: guarda valores. Y el día en que un valor viaja sin su unidad, algo siempre se rompe.

El vendedor entrega la camiseta sobre el mostrador y recita una cifra sin pensarlo: «cuarenta y nueve noventa».

Para él la frase está completa. Sabe que son dólares, porque lleva diez años cobrando en la tienda y la caja solo habla en dólares.

Pero si esos cuarenta y nueve noventa viajaran por un cable hacia otro sistema, llegarían como un número desnudo. El que lo reciba podría leerlos como soles, como euros, como unidades vendidas.

El dato del vendedor es perfecto en su cabeza y peligroso en cuanto sale de ella.

Ese desfase, entre un número que «todos saben qué significa» y un número que de verdad lo dice, es el tema de este capítulo.

La venta que registra, llamémosla venta_001, es un manojo de números: 1 camiseta, 49,90 dólares, 18 % de impuesto, 10 % de descuento y 180 gramos de peso.

Cinco lecturas, cinco unidades distintas. Y ninguna es una «cosa» con identidad propia, como sí lo son la camiseta o el vendedor.

Son respuestas a la misma pregunta repetida cinco veces: ¿cuánto?

Ese es el eje N cuánto, y este capítulo lo desarma pieza por pieza.

Por qué los números no caben en el eje de las cosas

La objeción es razonable. ¿Para qué un eje solo para los números? ¿No bastaría con guardarlos junto a las camisetas, los estantes y las cajas registradoras?

No basta, y la razón se ve apenas intentas forzarlo.

Una camiseta es un individuo físico. Tiene identidad, dura en el tiempo, aparece en varios eventos (se fabrica, se exhibe, se vende, se devuelve) y sigue siendo esa camiseta.

El número 9 no es una cosa. No hay un «9» guardado en algún cajón del universo al que podamos apuntar.

Lo que hay son innumerables hechos que usan el valor 9: los 9 dólares de un descuento, los 9 minutos de una espera, los 9 intentos de una herramienta. Cada aparición del 9 es independiente de las demás.

Idea clave · entidades contra valores

En los ejes Q O L y K, cada elemento necesita una identidad propia para no confundirse con otro.

El eje N no la necesita: para un número, su valor es su identidad. Cuando un servidor anota que un agente respondió en 340 milisegundos, nadie le inventa un código secreto al 340. El dato basta.

La diferencia suena filosófica y tiene una consecuencia muy concreta.

El eje T funciona igual: las fechas y los instantes se comparan por su valor, no por un identificador. De ahí la regla que parte el universo en dos familias.

Idea clave · Ejes de entidad y ejes de valor

Q, O, L y K son ejes de entidades, físicas o conceptuales. Cada elemento lleva su identidad encima.

N y T son ejes de valor puro: el dato es la identidad, y dos lecturas iguales son la misma. Por eso un número o una fecha se pueden guardar en bruto, y un agente o una clase nunca.

Conviene precisar, además, que N responde a dos preguntas emparentadas pero distintas, y que el modelo no las confunde:

N  Magnitud

Una medida sobre una escala continua, que siempre arrastra una unidad: 49,90 USD, 18 %, 10 %, 180 g. Preguntar «¿cuánto cuesta?» exige nombrar la escala.

N  Cardinalidad

Un conteo de cosas discretas, sin dimensión física: 4 camisetas, 3 intentos de una herramienta, 1 agente. La «unidad» aquí es la cosa contada, y suele bastar con saber qué se cuenta.

El número que viajó desnudo

Hay un caso que la ingeniería repite en sus aulas como una fábula moral, y vale la pena contarlo con datos frescos porque su moraleja es exactamente la regla de este eje.

La confusión de unidades que cuesta carísimo

El verano pasado, un equipo instaló un sistema de vigilancia para una flota de turbinas eólicas. Dos proveedores alimentaban el mismo tablero.

El fabricante de los rotores reportaba el par de torsión en libra-pie. El módulo de control que el equipo había escrito leía esos mismos campos asumiendo newton-metro.

Por separado, ninguno estaba equivocado: cada cifra era correcta en su unidad. Pero entre las dos hay un factor de 1,356, y nadie lo aplicó.

Durante semanas el sistema creyó que las turbinas trabajaban muy por debajo de su límite y subió la carga.

El error se acumuló en silencio hasta que un rodamiento, sometido a un esfuerzo un 36 % mayor del que el tablero mostraba, se agrietó.

Nadie hizo mal una sola multiplicación. El número había viajado sin su unidad pegada. Es el mismo pecado que desintegró al Mars Climate Orbiter en 1999.

La moraleja no es sobre aritmética. Es sobre diseño de datos, y se enuncia en una sola línea.

Un número sin su unidad no es información: es ruido disfrazado de dígitos.La regla del eje N

De ahí sale una regla sin excepciones: un valor del eje N nunca viaja solo. Siempre va con su unidad.

Y aquí los ejes empiezan a trabajar en equipo. Una unidad (gramo, segundo, bar, token) no es un objeto físico ni un número. Es una categoría.

Y las categorías, como vimos en el capítulo anterior, viven en K.

El número vive en N. La unidad que lo interpreta vive en K. Un cable los une.

tripletas
(venta_001, monto,         49.90)     ∈ M(O, N)
(venta_001, unidad_monto,  Currency:USD) ∈ M(O, K)

(sesion_ia_5521, latencia_ms,   2100)     ∈ M(O, N)
(sesion_ia_5521, unidad_lat,    milisegundo) ∈ M(O, K)

A primera vista parece burocracia. ¿No es obvio que el monto de una venta se cobra en dólares?

Hoy sí. Deja de serlo el día en que una sucursal nueva reporta en soles, y tu sistema, que asumía dólares en silencio, suma 49,90 USD con 49,90 PEN como si fueran lo mismo.

La unidad escrita es el seguro contra ese día.

Cuándo conviene reificar una medición

Atar cada número a su unidad con un par de tripletas resuelve la mayoría de los casos.

Pero cuando una medición va a sufrir muchas conversiones, o cuando importa de dónde salió (con qué instrumento, en qué momento, sobre qué evento), lo más limpio es convertir la medición en una entidad: darle sitio propio en el eje O, con sus propias propiedades.

Compara las dos formas de registrar el mismo monto.

La simple cuelga el valor y la unidad del evento. La reificada crea una entidad medicion_monto_001 que reúne cantidad, unidad, instrumento y momento, y la ata a la venta. La figura las pone lado a lado.

Medición simple el valor cuelga del evento venta_001 O · evento monto 49.90 unidad USD basta para un dato fijo Medición reificada la medición es una entidad en O venta_001 O · evento tiene_medicion medicion_monto_001 O · medición reificada cantidad = 49.90 unidad = qudt:USD instrumento = caja_pos momento = 16:32 trazable, convertible, auditable
Figura 4.1. Dos maneras de modelar una misma medición. A la izquierda, el valor (N) y la unidad (K) cuelgan directamente del evento: suficiente cuando el dato es fijo y obvio. A la derecha, la medición se eleva a entidad en O y gana cantidad, unidad, instrumento y momento propios: el dato pasa de número suelto a hecho trazable.

Esa segunda versión es lo que separa a un sistema que escupe «49.90» de uno que afirma, con todas las letras: «49,90 USD, cobrados por la caja sobre la venta venta_001, a las 16:32».

El primero es un número flotando en el vacío. El segundo es un hecho que se puede auditar, convertir y sumar sin riesgo.

El catálogo oficial: QUDT

Llegados aquí surge una duda práctica: ¿hace falta sentarse a escribir un diccionario con todas las unidades del mundo? La respuesta es un no rotundo. Este es uno de esos raros problemas que la industria ya resolvió de forma definitiva.

Precedente · QUDT(18)

La ontología pública QUDT (Quantities, Units, Dimensions and Types) [18] cataloga miles de unidades: sus dimensiones físicas, sus factores de conversión exactos y sus identificadores oficiales.

Para milisegundos usas qudt:MilliSEC. Para el peso de la prenda, qudt:GM. Para los dólares de nuestra venta, qudt:USD. Cuando WQuestions adopta una unidad, no la inventa: se engancha a este catálogo.

El enganche es directo. La categoría que vive en K, digamos K:USD, declara su ancla con una propiedad que apunta al recurso de QUDT.

Así, dos sistemas que jamás se han visto coinciden en que hablan de dólares, porque los dos apuntan a la misma dirección.

json
{
  "id": "K:USD",
  "eje": "K",
  "etiqueta": "dólar estadounidense (moneda)",
  "ancla_qudt": "http://qudt.org/vocab/unit/USD",
  "dimension": "moneda",
  "convertir_a": { "unidad": "qudt:PEN", "factor": 3.75 }
}

Unidades que la IA tuvo que inventar

Hay industrias tan recientes que QUDT todavía no tiene palabras para ellas. La inteligencia artificial es el ejemplo perfecto.

¿En qué unidad se mide la longitud de un texto que un modelo procesa? ¿Cómo se mide el «tamaño» de un modelo, o lo que cuesta cada consulta?

Algunas de estas magnitudes nacieron hace pocos años y aún no tienen nombre oficial en ningún catálogo.

La regla para una unidad sin catálogo

  1. Si la unidad existe en QUDT, se usa QUDT. Sin discusión.
  2. Si es un concepto nacido ayer, el desarrollador define una unidad nueva en el eje K, la describe con precisión y, cuando es posible, le programa una fórmula que la convierta a una unidad conocida.

Para una sesión de agente como sesion_ia_5521, el eje K tendría que alojar unidades que ningún físico del siglo XX habría imaginado:

unidades nuevas en K
K:token                   — fragmento de texto con que un modelo lee y escribe.
K:parametro_modelo        — mide el "tamaño" de un modelo (p. ej. 7B, 70B).
K:precision_clasificador  — tasa de acierto, escala continua entre 0 y 1.
K:USD_por_millon_tokens   — unidad compuesta: con ella facturan los proveedores.

La última es la más interesante: una unidad compuesta que mezcla dinero y capacidad de proceso.

Un sistema maduro deja armar estas unidades híbridas y guardarlas en K sin temblar, porque «dólar por millón de tokens» es una razón entre dos magnitudes que el eje ya sabe nombrar por separado.

Y como toda magnitud que cambia rápido, se ve mejor en una curva que en una tabla. La caída del costo por millón de tokens cuenta, ella sola, buena parte de la historia económica de la IA reciente.

Figura 4.2. Costo por millón de tokens de un modelo abierto a lo largo de un año, en la unidad compuesta K:USD_por_millon_tokens. Cada cifra es una magnitud con unidad y fecha; modelarlas así permite comparar precios entre proveedores sin sumar peras con manzanas. Pasa el cursor sobre los puntos para ver los valores.

Cuando los ejes se sincronizan, las matemáticas dejan de ser ciegas

En cuanto cada número lleva su unidad pegada, operaciones que antes eran trampas mortales se vuelven seguras y automáticas. Tres ejemplos lo dejan claro.

Conversión. Un tablero recibe la latencia de cuatro agentes: uno reporta en milisegundos, dos en microsegundos, otro en segundos.

Si las unidades están registradas en K con su factor a la unidad base, el sistema lo lleva todo a una escala común antes de operar. La regla vive en un solo sitio, y nadie escribe traductores a mano.

Suma. Pídele a un sistema mal diseñado el promedio de «340 ms, 1200 µs y 0,7 s» y sumará los números pelados para devolverte una cifra ridícula.

Con las unidades escritas, el motor sabe que no puede mezclar escalas y las iguala antes de calcular. Por increíble que parezca, la suma ciega ocurre a diario en tableros de empresa.

El tiempo dentro del dinero. Cien dólares de 2020 no son cien dólares de hoy.

Si modelas un contrato indexado, «100 USD» no alcanza. El número tiene que arrastrar la unidad y la fecha. El valor del dinero cambia, y el modelo lo maneja apoyándose en la vigencia que veremos más adelante.

Un motor que intente sumar 100 USD con 100 JPY debe detenerse en seco, igual que se negaría a sumar camisetas con porcentajes.

La cantidad deja de ser un número suelto y pasa a ser un hecho que se explica solo: valor más unidad, con la unidad anclada en K.

El modelo sabe hacer cuentas

Todo lo anterior estaría escrito en modo condicional si el motor no existiera. Existe. El prototipo calcula sobre magnitudes respetando las unidades, y conviene ver por dónde lo hace, porque la solución vuelve a ser la misma de siempre: más hechos.

La física de cada unidad no vive en el código. Vive en el eje K, colgando de la propia categoría.

Con la forma que ya viste en la ficha de K:USD: su ancla en QUDT, su unidad base y su factor exacto. Una unidad compuesta declara de qué se compone, y con eso basta.

tripletas
(K:ToneladaMetrica,  unidad_base,   K:Gramo)             ∈ M(K, K)
(K:ToneladaMetrica,  factor_a_base, 1e6)                 ∈ M(K, N)
(K:OnzaTroy,         factor_a_base, 31.1034768)          ∈ M(K, N)

(K:GramoPorTonelada, numerador,     K:Gramo)             ∈ M(K, K)
(K:GramoPorTonelada, denominador,   K:ToneladaMetrica)   ∈ M(K, K)

De esas cinco tripletas sale, sin que nadie lo programe, que multiplicar toneladas por gramos-por-tonelada da gramos.

El motor reduce cada unidad a potencias de unidades base y las combina al operar. La tonelada y la onza troy son las dos gramo con distinto factor. Y el gramo por tonelada es masa entre masa, o sea nada, con una escala de una millonésima.

Poner esa aritmética en el grafo tiene una consecuencia práctica: un dominio añade K:token o K:USD_por_millon_tokens sin tocar una línea de código.

Lo que el motor se niega a hacer

Sumar gramos con segundos falla, y falla diciendo por qué: no se pueden comparar. Pedir un resultado en segundos cuando salió en gramos falla. Y una magnitud que llega sin unidad se rechaza citando la regla de este capítulo.

Es lo contrario de lo que hizo el sistema de las turbinas. Allí ninguna multiplicación estaba mal, y el desastre vino de que nadie se negó a nada.

La regla del cálculo también es un hecho, no una función escondida.

Declaras qué operar y en qué unidad quieres el resultado, y lo que el motor escribe sale con su procedencia encima: de qué situación salió y qué regla lo autoriza.

Así es como el capítulo 23 obtiene las onzas de oro de una extracción sin que nadie teclee el número.

tripletas
(regla_oro_fino,     expresion,       "monto * ley_mineral")
(regla_oro_fino,     unidad_destino,  K:OnzaTroy)

# 2.480 t × 8,6 g/t = 21.328 g, y a 31,1034768 g/oz:
(prod_oro_extr_001,  monto,           685.7 K:OnzaTroy)
(prod_oro_extr_001,  calculado_de,    extr_001)
(prod_oro_extr_001,  justificado_por, regla_oro_fino)

Un número derivado que no dice de dónde sale es tan opaco como un número sin unidad.El corolario de la regla del eje N

Fíjate en la simetría con la que abrió el capítulo. La unidad impide que un número se malinterprete; la procedencia impide que un número calculado se vuelva incuestionable. En los dos casos la cura es idéntica: no dejar que el número viaje solo.

Incertidumbre: cuando «cuánto» no es un único número

En el mundo real los números casi nunca son exactos.

Un estudio sobre un modelo de lenguaje informa una precisión del 78,3 % ± 2,1 %. Un agente no devuelve una latencia fija, sino una campana de valores con su media y sus extremos.

El eje N acepta la respuesta a «¿cuánto?» en tres formatos.

2100N valor puntualun escalar fijo milisegundoK
[1800, 2400]N rangopiso y techo milisegundoK
latencia_5521O distribuciónM(O→O) reificada normal(μ=2100, σ=180)O
  1. Valor puntual. Un número fijo y simple, con su unidad: 2100 ms.
  2. Rango. Un intervalo con piso y techo: [1800 ms, 2400 ms], útil cuando solo conoces los extremos.
  3. Distribución. Aquí el modelo se pone serio: la distribución estadística se reifica como entidad en el eje O y gana propiedades (media, desviación, tipo de curva, tamaño de muestra). El valor deja de ser un punto y se vuelve un objeto con estructura.

Por qué esto importa con la IA

Si le haces dos veces la misma pregunta a un modelo generativo, obtienes dos respuestas distintas. Su «calidad» no es un número grabado en piedra, sino un abanico de probabilidades.

Cuando un informe anuncia que un modelo logra un 78,3 % de eficacia, te está dando el promedio de miles de pruebas. Modelar bien el dato significa que el sistema sepa que ese 78,3 % es la punta de algo estadístico, no una cifra plana.

La venta y el agente, eje a eje

Conviene ver el eje N en acción sobre nuestros dos casos vivos. Cada uno es, mirado de cerca, un pequeño enjambre de magnitudes y conteos, cada cual con su unidad.

👕

La venta de una camiseta

Monto de 49,90 USD, descuento del 10 %, impuesto del 18 %, peso de 180 g. Cuatro magnitudes con cuatro unidades, más un conteo suelto (1 camiseta) que no necesita escala. Ojo con la talla M: no entra en N, porque es una categoría del eje K, no un número.

🤖

Una sesión de agente de IA

Entrada de 4180 tokens, salida de 920, latencia de 2100 ms, costo de 0,015 USD y precisión del 78,3 % ± 2,1 %. Seis magnitudes, seis unidades, dos de ellas inventadas por la propia industria y dos que llegan con su margen de error a cuestas. Ninguna existía en un catálogo físico clásico.

La prueba de verdad llega cuando alguien hace una pregunta que cruza los dos mundos.

«¿Cuántos dólares y cuántos tokens cuesta pedirle al agente la ficha técnica de un catálogo de cuarenta camisetas?»

Es una pregunta razonable para un negocio, y mezcla páginas, tokens, dólares y tiempo.

Responderla exige que el sistema sepa qué unidad lleva cada número y cómo se convierten entre sí. Sin eso, cualquier respuesta es una adivinanza disfrazada de cálculo.

Un número solo dice poco; muchos cuentan el negocio

Una magnitud aislada, los 49,90 dólares de venta_001, describe un solo hecho y poco más.

El eje cuantitativo cobra sentido cuando se acumula: el total facturado del día, el descuento promedio de la campaña, el ticket medio por cliente.

Y como cada importe cuelga de una situación con su tipo puesto, sumarlos sobre miles de ventas no es una capa que se añade por fuera. Es la operación más natural del eje.

Sumar montos es recorrer el mismo cable monto sobre todas las ventas a la vez.

python
# Total facturado — suma del monto sobre todas las ventas
suma(u, "monto", Pattern(type_constraint=u.ind("venta")))

La trampa de programación: el escalar pelado

El error clásico, el que asoma en producción y cuesta dinero real, es guardar 100 en una columna llamada monto dando por hecho que «ya se sabe» que son dólares.

Un día el sistema integra un proveedor que factura en yenes. Otro operario carga 100 pensando en soles. Y la suma 100 + 100 arroja 200 de una moneda que no existe.

Es la misma falla que agrietó el rodamiento de la turbina y desintegró una sonda en Marte.

La desnudez numérica está prohibida

Una magnitud jamás se guarda como un número pelado. Se guarda como el par valor + unidad, con la unidad anclada en K por su URI.

Un motor que intente sumar 100 USD con 100 JPY se detiene en seco, igual que se negaría a sumar peras con tornillos. El número, solo, miente por omisión.

El inventario de cajas está completo

Con el eje N instalado, el catálogo queda cerrado.

Tenemos los cuatro pilares del mundo físico, el zócalo de las categorías (K) y el terreno firme de las magnitudes (N).

Ya están listos los cajones para cualquier valor que exista.

Recapitulemos lo construido antes de seguir:

1. N es un eje de valor puro. A diferencia de los objetos, un número es su propia identidad y no necesita un código interno (UUID) para existir.

2. La desnudez numérica está prohibida. Todo número entra con una unidad pegada, y esa unidad habita siempre en el catálogo del eje K.

3. La medición como evento. Si la unidad no es obvia, o si habrá conversiones, la medición se reifica: se eleva a entidad formal en el eje O.

4. Estándares mundiales. Usamos QUDT para no reinventar unidades básicas; para los conceptos emergentes (token, parámetros, precisión) creamos unidades propias en K.

5. Tolerancia estadística. El eje admite la incertidumbre como rango o como distribución reificada, no solo como un promedio plano.

Lo que falta ya no son cajones. Son los cables que conecten estos valores entre sí.

Las etiquetas que le explican a la máquina cómo se relaciona un agente con un objeto, y cómo un objeto sostiene una magnitud.

Esos cables viven en el eje M cómo, el de los predicados.

Y como veremos enseguida, la frontera entre «tener una propiedad» y «estar relacionado con algo» es mucho más delgada de lo que dicta el sentido común. Es solo cuestión de cuántos valores caben.