Parte V · En la práctica
Música, química, fútbol, contratos
Un modelo que solo se prueba en lo cómodo no se ha probado. Aquí lo llevamos a cuatro mundos que no se parecen entre sí ni se parecen a un negocio: una partitura, una llama, una cancha y un contrato. Cada uno empuja un eje distinto hasta que cruje. Veremos dónde cede con elegancia y dónde deja una grieta anotada.
En una sala de ensayo, a las once de la mañana, una pianista repite por séptima vez los primeros nueve compases de una sonata. La obra que toca fue escrita hace más de dos siglos y no le pertenece a nadie; el sonido que llena la sala, en cambio, existe solo ahora, sale de sus manos y se apagará en segundos. A trescientos kilómetros, en un banco de pruebas, un inyector descarga una bocanada de metano que se enciende sin que nadie la encienda: no hay autor, solo condiciones que se cumplieron. Esa misma tarde, en un estadio, veintidós personas corren a la vez y, de toda esa simultaneidad, un sistema deberá conservar apenas lo que importa. Y en una notaría, un papel firmado dispone qué está permitido y qué no durante los próximos doce meses, mucho antes de que ocurra ninguno de los hechos que regula.
Cuatro escenas, cuatro mundos. Ninguno es una venta, una historia clínica ni un expediente administrativo. Y, sin embargo, todos pretendemos describirlos con las mismas siete preguntas. Si el modelo de WQuestions es lo que dice ser (un sistema de coordenadas universal) tiene que aguantar aquí. Este capítulo lo somete a los cuatro a propósito, buscando la grieta.
Por qué los dominios incómodos
Hasta este punto, la Parte V recorrió ocho dominios industriales (del spa al banco, de la universidad a la mina) y el modelo aguantó con poca fricción. Eso es alentador, pero también es sospechoso: todos esos dominios, por exigentes que fueran, compartían un aire de familia. Son comerciales, clínicos o administrativos; tienen personas que deciden, transacciones que se registran, fechas que se anotan. Un modelo puede encajar bien en ocho variantes de la misma forma y romperse en la novena que rompe el molde.
Por eso elegimos cuatro dominios cualitativamente distintos, cada uno escogido porque tensa una parte distinta del modelo hasta el punto de fractura. No buscamos modelar cada uno en profundidad (eso ya lo hicimos con los ocho industriales); buscamos, de cada mundo, su fricción más característica, ponerla bajo la lupa y ver qué pasa. La estrategia es la de un ingeniero de estructuras que no admira el puente terminado, sino que lo carga con camiones hasta oír dónde rechina.
Los cuatro ejes de estrés
Cada dominio empuja una zona distinta de la arquitectura:
Conviene adelantar la conclusión para leer el capítulo sin suspenso falso: el esqueleto no se quiebra en ninguno de los cuatro. Algunos casos se resuelven con limpieza; otros piden un rol de dominio que extiende el catálogo; unos pocos dejan un pendiente que dejamos señalado. Ese balance (mucha cobertura, pocas grietas y todas conocidas) es justo lo que distingue una propuesta probada de una promesa.
Música: cuando la categoría se vuelve un árbol
Empecemos por la sala de ensayo. El objeto a modelar es una composición musical (tomemos la Sonata para piano n.º 14, «Claro de luna», op. 27 n.º 2, de Beethoven) junto con una interpretación concreta: la que da la pianista Hélène Renaud el 12 de junio de 2026 en la Sala Devereux. Queremos poder preguntar tanto por la obra abstracta («¿cuántos movimientos tiene?») como por esa noche particular («¿quién la tocó y dónde?»). Son dos preguntas sobre dos cosas distintas que comparten un nombre.
Y ahí está la primera tensión. Una composición es una entidad atemporal: fue creada en 1801, sí, pero no ocurre en ningún instante; persiste como objeto cultural, idéntica a sí misma se toque o no se toque. Una interpretación, en cambio, ocurre: tiene fecha, lugar, intérprete y se desvanece. El reflejo ingenuo es colocar la obra en el eje del tiempo (un patrón temporal abstracto) pero el modelo lo rechaza: el eje T es para momentos y rangos, no para entidades estables. La obra vive en K, lo categórico y atemporal; la interpretación vive en O, lo situado. Es exactamente la separación que el capítulo de la clase fijó como D1 (los conceptos atemporales habitan K, las entidades creadas y situadas habitan O) y aquí encuentra su caso límite más nítido.
(claro_de_luna) ∈ K
subtipo_de: sonata_para_piano
compositor: beethoven
anio_composicion: 1801
movimientos: [adagio_sostenuto, allegretto, presto_agitato] ← otros K
(interpretacion_5512) ∈ O
instancia_de: accion_interpretar
agente: helene_renaud ∈ M(O→Q)
obra_interpretada: claro_de_luna ∈ M(O→K)
lugar_de: sala_devereux ∈ M(O→L)
momento: 2026-06-12T20:30Z ∈ M(O→T)
duracion_min: 16 ∈ M(O→N)
Mira la línea obra_interpretada. Su signatura es M(O→K): conecta un
evento situado con una categoría atemporal. El rol genérico tema del catálogo no
servía, porque su signatura es O→O y rechaza valores en K. El prototipo obligó a
usar un rol de dominio (un predicado declarado para este caso) que apunta de
O hacia K. No es un parche aislado: es exactamente la forma que reaparecerá con el medicamento
que se prescribe (un evento O apuntando al fármaco K) y con el plan que se contrata. La música
no es excepcional; es la primera vez que el patrón «evento que refiere a una categoría»
asoma, y por eso lo nombramos aquí.
La recursión categórica
La segunda tensión es más estructural. Una sonata se compone de movimientos; cada movimiento,
de secciones; cada sección, de frases; cada frase, de motivos; cada motivo, de notas. Son
cinco niveles de jerarquía anidada, y todos viven en K. Esto rompe una expectativa cómoda: que
el eje de las categorías sea una lista plana de etiquetas. No lo es. Es un
árbol denso, con dos relaciones internas que conviene distinguir:
subtipo_de (una sonata es un tipo de obra) y compuesto_por
(una sonata se arma con tres movimientos). La primera es taxonómica; la segunda, de
composición.
Con esa estructura, una consulta como «¿qué obras de Beethoven contienen un movimiento en
forma de adagio?» deja de ser una búsqueda por igualdad y pasa a ser un
recorrido transitivo: bajar por compuesto_por hasta encontrar un
nodo cuyo subtipo_de sea movimiento_adagio. El eje K, que en el spa
o el taxi parecía una simple etiqueta de clasificación, aquí muestra su otra cara: la de una
ontología navegable con profundidad arbitraria.
Lo nuevo que aportó la música
El eje K no es una lista de etiquetas: es
un grafo de categorías con jerarquía interna. Dos relaciones lo estructuran —subtipo_de
(taxonomía) y compuesto_por (composición)— y las consultas interesantes son
recorridos transitivos, no comparaciones de igualdad. Cualquier dominio con todo–partes
conceptuales (un plan de estudios, una norma con artículos, una receta con subrecetas) hereda
esta forma.
Lo que la música deja pendiente
El tiempo musical (los compases, los pulsos, el tempo) no es
tiempo absoluto y no entra en T. Por ahora se modela como K
(compas_4_4, figura_negra) o se reifica en O cuando hace falta
hablar de un compás concreto de una interpretación. Funciona, pero es una solución de
compromiso: un sistema de patrones temporales relativos, finos y periódicos, es trabajo
documentado y pendiente en la hoja de ruta. No rompe nada operativamente; el tratamiento de
primera clase está por construir.
Química: una reacción que nadie hace
Pasemos al banco de pruebas. El objeto es la combustión del metano: la reacción que ocurre cuando hay metano, oxígeno y energía de activación suficiente, y que produce dióxido de carbono y agua. Modelarla somete al sistema a presiones que ningún dominio comercial ejerce, y la primera es brutal en su simplicidad.
¿Quién hizo la reacción?La pregunta que no tiene respuesta
La respuesta honesta es: nadie. Una reacción química no la hace
ningún agente en sentido intencional; ocurre porque las condiciones físicas se cumplieron. No
hay vendedor, ni conductor, ni motor antifraude detrás. Esto pone a prueba, sin red de
seguridad, la decisión que el capítulo de las situaciones llamó D5: la
agencia contextual. Esa decisión establece que el rol agente no es
obligatorio (solo lo es si el verbo lo exige) y que, cuando lo es, puede ocuparlo un humano,
una organización, un programa o un sensor. La química es el caso donde el rol queda
sencillamente vacío, y el grafo lo acepta sin marcar un error.
La plantilla y la instancia
La segunda presión es más rica. La química distingue con naturalidad dos cosas que el lenguaje cotidiano confunde. Por un lado, la combustión del metano en general: una entidad categórica que describe la estequiometría invariante (un mol de CH₄ más dos moles de O₂ producen un mol de CO₂ y dos moles de H₂O). Por otro, esta combustión concreta que ocurrió en el cilindro número tres a las 14:32, con cantidades reales y a una escala determinada. El modelo necesita capturar las dos y, sobre todo, conectar la instancia con su plantilla.
(combustion_metano) ∈ K ← la plantilla, atemporal
reactivos_esteq: [{ch4: 1}, {o2: 2}]
productos_esteq: [{co2: 1}, {h2o: 2}]
energia_activacion: kj_por_mol
(reaccion_3187) ∈ O ← la instancia, situada
instancia_de: combustion_metano ∈ M(O→K)
factor_escala: 0.5 ← la mitad de la estequiometría
insumo: n_0_5mol_ch4 (multi) ∈ M(O→N)
insumo: n_1mol_o2 (multi) ∈ M(O→N)
lugar_de: cilindro_3 ∈ M(O→L)
momento: 2026-05-16T14:32Z ∈ M(O→T)
— agente: ∅ (D5: el verbo no lo exige)
El puente entre ambas es la línea instancia_de más el factor_escala.
La plantilla guarda las proporciones puras; la instancia guarda cuánto de esas proporciones se
consumió realmente. Con eso, todas las cantidades concretas se derivan multiplicando la
estequiometría por el factor, y un evaluador puede verificar el balance de masa sin que nadie
lo haya tecleado dos veces.
factor_escala. La flecha instancia_de (un cable del eje
M) las une. El mismo molde sirve para sonata→interpretación,
receta→preparación y regla→aplicación.Durante el modelado quedaron registradas dos fricciones que aún persisten, y conviene nombrarlas con precisión:
Uno · el rol paciente es demasiado estrecho. En química, «el
paciente» de la reacción es el metano: una cantidad N ligada
a una categoría K, no un agente Q.
El rol canónico paciente tiene signatura O→Q y rechaza esto. La
solución por ahora es un rol de dominio insumo: O→N (múltiple), que cubre el
caso con limpieza. Pero deja en evidencia que la signatura canónica podría tener que
ensancharse.
Dos · reactivo y producto no están en el catálogo.
El catálogo canónico (lo que el capítulo del lexicon llamó D8) no los
incluye. La política liberal del modelo permite registrarlos como roles de dominio sin
pedir permiso, así que el dominio funciona hoy. Pero queda anotado el parche de canonizarlos
algún día, porque el patrón es universal: toda transformación tiene entradas y
salidas, no solo las químicas.
Lo nuevo que aportó la química
La pareja plantilla en K + instancia en O + factor de escala resultó ser un patrón general, no un truco químico. La sonata es plantilla y la interpretación su instancia; la receta es plantilla y la preparación su instancia; el procedimiento operativo estándar de una fábrica es plantilla y cada corrida su instancia; la guía clínica es plantilla y cada atención su instancia. La química fue, sencillamente, donde el molde se hizo nítido.
Fútbol: dos relojes y un marcador que no se afirma
Vamos al estadio. El objeto es un partido concreto: en nuestra reconstrucción, un clásico de eliminatorias en el que la delantera Mara Solís marca al minuto 67 con un remate de zurda, tras una asistencia de Tania Ojeda. Modelar un partido trae complicaciones que el spa y el taxi jamás presentaron, y la primera es la concurrencia.
En cada instante del partido hay veintidós jugadoras haciendo cosas a la vez, más la árbitra, los cuerpos técnicos y el público. Registrarlo todo sería absurdo e inútil. Aquí conviene una aclaración importante: esto no es una fricción del modelo, es una decisión de granularidad. Lo que se modela es solo lo significativo (los goles, las tarjetas, los cambios, las jugadas clave) y el resto queda implícito. El mérito del modelo es que no obliga a registrar lo que no importa: no exige llenar un campo por cada jugadora en cada segundo. Y, en efecto, no lo hace.
El doble reloj
La segunda complicación es más sutil: en un partido conviven dos tiempos. El
tiempo absoluto (la hora del reloj de pared, 2026-09-14T21:14:07Z) y el minuto de
partido (el «minuto 67», que vive en una escala relativa al pitazo inicial y que se detiene en
el entretiempo). No son el mismo eje. El modelo los absorbe con un doble registro: cada evento
lleva un momento: T absoluto y, opcionalmente, un minuto_partido: N
relativo. Así, dos consultas distintas conviven sin pisarse: «¿qué pasó a las 21:14 hora
local?» recorre el eje T, y «¿qué pasó al minuto
67?» recorre el eje N.
(gol_4471) ∈ O
instancia_de: evento_gol
agente: mara_solis ∈ M(O→Q)
asistente: tania_ojeda ∈ M(O→Q)
equipo: seleccion_sur ∈ M(O→O)
momento: 2026-09-14T21:14:07Z ∈ M(O→T) ← reloj absoluto
minuto_partido: 67 ∈ M(O→N) ← reloj de juego
parte_de: clasico_4471 ∈ M(O→O)
El marcador es estado derivado
La tercera complicación es la más instructiva del capítulo entero. El «Selección Sur 2 – Selección Norte 1» no es un hecho que alguien afirma: es la conclusión de agregar todos los goles registrados. Nadie escribe el marcador como dato; el marcador se deriva. Es exactamente la misma forma estructural que la fidelidad del spa (siete sesiones acumuladas dan una gratis) y que el costo total de un viaje en el taxi: el modelo almacena los hechos primitivos (cada gol como evento reificado) y un evaluador externo recorre el grafo y agrega. El modelo no calcula marcadores; los prepara para que cualquier evaluador lo haga.
goles_sur = count(u, Pattern(
fixed={"equipo": seleccion_sur},
type_constraint=u.ind("evento_gol"),
))
goles_norte = count(u, Pattern(
fixed={"equipo": seleccion_norte},
type_constraint=u.ind("evento_gol"),
))
marcador = f"{goles_sur} - {goles_norte}" # el estado, derivado al vuelo
Durante el modelado apareció una fricción concreta, una sola. El rol partes
aplicado a un partido (sus dos equipos) traía la signatura T→Q, que asume que las
partes son agentes. Pero un equipo es más cómodo como O:
un colectivo compuesto, no un agente individual. El parche propuesto es generalizar
partes a O→V (admitiendo cualquier eje de valor como rango). El
prototipo confirmó la fricción y la sorteó con un rol de dominio (parte: O→O),
pero la canonización del parche es trabajo pendiente real, no resuelto.
Hechos primitivos y estado derivado
Hecho primitivo: algo que ocurrió y se afirma directamente (un gol, un pago, un diagnóstico). Se almacena. Estado derivado: una conclusión obtenida agregando hechos primitivos (un marcador, un saldo, una fidelidad acumulada). No se almacena: se calcula por consulta cuando se necesita. WQuestions guarda la historia de los cambios y deriva el estado; no guarda el estado y olvida la historia.
Lo nuevo que aportó el fútbol
La distinción entre hechos primitivos y estado derivado quedó nítida aquí, y rompe una expectativa que casi todos los sistemas relacionales arrastran: la de almacenar el «estado actual» como tal. El precio de derivar es que el evaluador externo debe existir. La ganancia es enorme: el pasado nunca se pierde. Siempre se puede reconstruir el marcador al minuto 30, porque los goles siguen ahí, fechados.
Contratos: cuando lo normativo manda sobre lo factual
Última escena, la notaría. El objeto es un contrato de alquiler a doce meses, con cláusulas, obligaciones recíprocas, una cláusula de rescisión por impago y (llegado el caso) una rescisión efectiva. Es el dominio donde lo factual (lo que pasó) queda en segundo plano frente a lo normativo (lo que está permitido, exigido o prohibido). El contrato existe y obliga antes de que ocurra ningún hecho que regule.
La primera tensión es la vigencia (del contrato entero y de cada cláusula por
separado). Algunas cláusulas valen durante todo el plazo; otras solo en ventanas específicas
(la de actualización del alquiler aplica únicamente en el aniversario). El modelo absorbe esto
con la decisión que el capítulo de las situaciones llamó D6 (la vigencia: las
propiedades que cambian se reifican con un rango de inicio/fin). Al
implementarlo se vuelve evidente que la bitemporalidad completa sería lo ideal: no
solo registrar cuándo algo es cierto, sino también cuándo lo afirmamos. Esa
segunda mitad queda documentada como pendiente.
Condición, consecuente y argumento
La segunda tensión son los condicionales. Una cláusula tiene la forma
«si X, entonces Y»: si el inquilino impaga dos meses, el arrendador puede rescindir.
El modelo la trata reificando la cláusula como una situación con dos cables, condicion
y consecuente:
(clausula_14) ∈ O
instancia_de: clausula_contrato
parte_de: contrato_alq_2208 ∈ M(O→O)
condicion: impago_2_meses
consecuente: rescision_autorizada
vigencia: [2026-01-01 .. 2026-12-31] (D6)
Cuando una rescisión efectivamente ocurre, no se dispara sola. Un evaluador (humano o
algorítmico) verifica que la condición se cumpla y emite la rescisión como un hecho nuevo, que
apunta a la cláusula con el cable justificado_por:
Ese cable no es decorativo. El capítulo sobre el porqué mostró que no existe un eje «por qué»:
el porqué se reparte en cuatro cables distintos (causado_por, motivado_por,
con_finalidad y justificado_por), y esa decisión es D7.
En lo normativo, el cable que importa es el último: la justificación. La auditoría
legal («¿bajo qué autoridad se rescindió este contrato?») se reduce a seguir
justificado_por hasta la cláusula, y de la cláusula al contrato. La cadena de
razonamiento entera está en el grafo, no en la cabeza de un abogado.
La tercera tensión es la mutabilidad. ¿Qué ocurre cuando una cláusula se
renegocia? La regla del modelo es severa y deliberada: los hechos son inmutables.
Una renegociación no edita el hecho viejo; es una situación nueva que lo
rectifica o lo cancela. El historial se preserva entero y el «estado
actual» se reconstruye por consulta (exactamente lo que vimos en la clínica con un
rediagnóstico y en el taxi con una cancelación).
En lo normativo, el sistema no debe producir solo el resultado; debe producir la cadena de razones que lo justifica.La lección del contrato
Lo que el contrato deja pendiente
Uno · bitemporalidad completa. Tenemos el tiempo
de validez (cuándo algo es cierto) pero no el de transacción (cuándo lo
afirmamos). Para un litigio que pregunte «¿qué sabía el sistema en mayo de 2024?»
hace falta agregar tx_inicio/tx_fin a cada hecho. El prototipo ya
guarda un tx_time, pero todavía no lo expone como parámetro de consulta.
Dos · reglas de derivación versionadas. Si la ley cambia y un contrato firmado antes debe leerse bajo la ley vieja, el evaluador necesita saber qué versión de qué regla aplicar. La regla misma se versiona con D6, pero la mecánica de evaluación versionada queda como trabajo de la capa superior, el motor de inferencia.
Lo nuevo que aportó el contrato
La importancia de la estructura argumentativa explícita.
En un dominio normativo, el producto valioso no es el veredicto («rescindido» o «no
rescindido»), sino la cadena de razones que lo sostiene. Al exigir un
justificado_por que apunte a una cláusula, el modelo obliga a
producir esa cadena. No es opcional: un hecho normativo sin justificación queda visiblemente
incompleto.
Lo que emergió de los cuatro
Vistos en serie, los cuatro dominios incómodos dejan tres lecciones que trascienden a cada uno y que conviene grabar.
🧩
El molde plantilla–instancia es universal
Apareció en química (reacción genérica frente a concreta), en música (sonata frente a interpretación) y antes en clínica (protocolo frente a atención) y en taxi (tarifa estándar frente a aplicada). No pertenece a ningún dominio: es un patrón de modelado tan central como la reificación, y merece figurar como convención explícita en el lexicon de cualquier proyecto.
⚙️
El evaluador externo es estructural
Marcador del fútbol, fidelidad del spa, precio dinámico del taxi, evaluación de cláusulas del contrato, conteo de visitas para un diagnóstico: todo el estado derivado es trabajo del evaluador. El modelo guarda los hechos primitivos y prepara el grafo; el razonamiento se construye encima. Es un principio arquitectónico, no una simplificación postergada.
🔧
Las grietas son pocas y conocidas
Tras ocho dominios (los cuatro de aquí más los cuatro
previos), las fricciones reales son cuatro: roles canónicos del catálogo D8 algo estrechos
(paciente, partes, tema); bitemporalidad completa;
tiempo musical y patrones temporales finos; y reglas de derivación versionadas. Cuatro
pendientes documentados, ningún punto de quiebre.
Esa última lección es la que más importa para un lector escéptico. Un modelo que nunca falla en público suele ser un modelo que no se ha probado en serio; un modelo que declara con precisión sus cuatro grietas (y muestra que ninguna lo derrumba) es un modelo que ha pasado por el banco de pruebas. Las cuatro pendientes son el mapa de hasta dónde llega hoy la arquitectura y qué le falta para llegar más lejos.
Y como cada gol, cada reacción y cada cláusula son situaciones del mismo tipo, la pregunta que de verdad importa deja de ser «¿quién marcó el gol 4471?» para volverse «¿quién encabeza la tabla de goleadores?» o «¿cuántos contratos siguen sin entrar en vigencia?»: el ranking no es una pieza aparte, es ordenar lo que ya contamos.
El balance de la Parte V
El modelo se sostuvo a lo largo de los doce dominios del libro (ocho industriales y cuatro de estrés) apoyado en un prototipo en Python de unas 2.250 líneas y un catálogo canónico de 38 roles. Donde hubo fricción, hubo parche o un pendiente documentado. En ninguno de los doce el esqueleto se quebró. Esa es, en una frase, la evidencia que la Parte V se propuso reunir.
Con esto cierra la sala de máquinas. Hemos cargado el puente con camiones hasta oírlo rechinar en cuatro lugares distintos, y los cuatro chirridos están anotados en el plano. Queda una pregunta que recorre todo el libro por debajo y que la siguiente parte pone al frente: si las preguntas son un vocabulario común, ¿qué cambia para las máquinas que hoy aprenden a hablar (los grandes modelos de lenguaje) cuando ese vocabulario existe? A eso vamos.