Parte III · Cómo funcionan juntas
Puentes: objetos, bits, grafos y cadenas
Nada de esto es magia, y nada es del todo nuevo. WQuestions se asienta sobre cuatro ideas que el lector técnico ya domina (la programación orientada a objetos, el bit, el grafo y la cadena de bloques). Este capítulo tiende los puentes, y marca dónde el puente sostiene y dónde se rompe.
Imagina a un programador con quince años de oficio leyendo este libro por encima del hombro de un colega. Hacia el capítulo 7 levanta una ceja.
«¿Tripletas? Eso ya existe. Yo modelo con clases y objetos desde que aprendí a programar. Mis datos viven en tablas que se consultan en milisegundos. Y eso de los hechos que no se pueden borrar suena a blockchain, una moda que ya pasó.»
Tiene razón en cada observación, y por eso vale la pena tomárselo en serio.
WQuestions no se inventó en el vacío. Respira el mismo aire que la programación orientada a objetos, los bits, las bases de grafos y los libros de cuentas inmutables.
Este capítulo se dedica a contestarle, una objeción a la vez.
El método será siempre el mismo.
Para cada tecnología conocida tenderemos un puente: un mapa que muestra qué pieza de WQuestions se corresponde con qué pieza que ya conoces.
Y luego marcaremos el punto exacto donde el puente deja de aguantar peso. Porque la analogía sirve para entrar, y engaña si se lleva demasiado lejos.
Cuatro puentes, cuatro secciones.
Puente uno · Objetos: la programación orientada a objetos
La primera reacción de cualquier ingeniero es la más natural: «esto ya lo hago con clases».
Y en parte lleva razón. La programación orientada a objetos lleva medio siglo organizando el software con la misma intuición que WQuestions: el mundo se describe con cosas que pertenecen a categorías y que se relacionan entre sí.
El parecido es tan hondo que conviene hacerlo explícito antes de señalar la grieta.
Tres conceptos de la programación orientada a objetos tienen un gemelo casi perfecto aquí.
Cuando un programador escribe v = Venta(...) está fabricando un individuo a
partir de un molde. Nosotros decimos lo mismo con el cable instancia_de, que ata
un sujeto del eje O a su clase del eje K.
Cuando una clase VentaOnline hereda de Venta, declara que
todo lo que vale para una venta vale para una venta en línea. Nosotros lo escribimos con
subtipo_de entre dos conceptos del eje K.
Y los atributos de un objeto (su monto, su vendedor) son nuestros
cables del eje M.
(venta_online, subtipo_de, venta) ∈ M(K, K) // herencia
(venta_001, instancia_de, venta_online) ∈ M(O, K) // instanciación
(venta_001, vendedor, vendedor_17) ∈ M(O, Q) // asociación
(venta_001, monto_usd, 49.90) ∈ M(O, N) // atributo
Para fijar el paralelo, traduzcamos la misma entidad (nuestra venta canónica) a una clase de Python y, justo al lado, a las tripletas equivalentes. Mira primero el código que el programador escéptico reconoce a primera vista:
class Venta:
def __init__(self, id, vendedor, cliente, articulo, monto, momento):
self.id = id
self.vendedor = vendedor # asociación → Vendedor
self.cliente = cliente # asociación → Cliente
self.articulo = articulo # asociación → Articulo
self.monto = monto # atributo (float)
self.momento = momento # atributo (datetime)
def aplicar_descuento(self, pct): # comportamiento, acoplado al dato
self.monto *= (1 - pct / 100)
v = Venta("venta_001", vendedor_17, cliente_1042,
camiseta_88, 49.90, "2026-05-14T16:32")
Y ahora la misma venta como hechos atómicos. Fíjate en que no hay método: el dato está separado de lo que se le hace.
(venta_001, instancia_de, venta) ∈ M(O, K)
(venta_001, vendedor, vendedor_17) ∈ M(O, Q)
(venta_001, cliente, cliente_1042) ∈ M(O, Q)
(venta_001, objeto, camiseta_88) ∈ M(O, O)
(venta_001, monto_usd, 49.90) ∈ M(O, N)
(venta_001, momento, 2026-05-14T16:32) ∈ M(O, T)
Línea por línea, los atributos de la clase reaparecen como tripletas. La figura siguiente pone las dos representaciones frente a frente: a la izquierda, el objeto como caja cerrada con sus casillas; a la derecha, el mismo hecho desplegado como estrella de nodos en el grafo.
Dónde se rompe el puente
La analogía es buena para entrar, y traicionera si se la lleva más allá. Hay dos diferencias que no son de grado, sino de naturaleza, y conviene nombrarlas con precisión.
La primera: los objetos juntan dato y comportamiento; WQuestions los separa.
Un objeto Venta guarda el monto y sabe aplicarse un descuento. El dato y
el código que lo toca viven en la misma caja.
Eso es elegante para programar, y ata la información a un lenguaje y a una versión del software.
Nuestras tripletas no saben hacer nada. Son afirmaciones inertes sobre el mundo. El comportamiento vive en otra capa.
Un dato que no carga lógica es un dato que cualquier sistema puede leer, sin importar en qué lenguaje fue escrito.
La segunda: los objetos fijan el esquema en el código; WQuestions lo deja abierto.
En cuanto compilas la clase Venta, sus campos quedan tallados en piedra.
Si mañana el negocio quiere registrar el lote de inventario, alguien debe abrir el archivo, añadir un atributo, recompilar y migrar los datos viejos.
Añadir un cable nuevo a un sujeto del grafo es escribir una tripleta más. No hay esquema que recompilar, porque el esquema nunca estuvo cerrado.
Es la diferencia entre un mundo que solo admite lo previsto y uno que admite lo que la realidad traiga.
Idea clave
Los objetos encierran dato y comportamiento en una caja cuyo esquema se fija al compilar. WQuestions deja los datos como tripletas inertes y manda el comportamiento a otra capa.
No es que una sea correcta y la otra no. Sirven a cosas distintas. Los objetos optimizan la ejecución de un programa. WQuestions optimiza que muchos programas distintos compartan los mismos hechos.
Un último hilo conecta esta sección con el capítulo anterior.
En programación, dos variables que apuntan al mismo objeto comparten su referencia: ese puntero invisible que distingue «el mismo objeto» de «un objeto igual».
Esa referencia es lo que en el capítulo 11 llamamos el identificador único.
El puntero del objeto y el identificador del grafo cumplen la misma función: dar identidad estable a una cosa.
Resumamos el puente entero en una sola tabla. A la izquierda, el vocabulario que el ingeniero ya domina; a la derecha, su correspondiente en el modelo.
| Programación orientada a objetos | WQuestions | Comentario |
|---|---|---|
| Clase | Concepto del eje K | El molde, la categoría atemporal. |
Instanciación (new Venta()) | Cable instancia_de | Fabricar un individuo del molde. |
Herencia (extends) | Cable subtipo_de | Especializar una categoría. |
| Atributo / campo | Predicado funcional del eje M | Un valor por sujeto. |
| Asociación / referencia | Predicado del eje M a otra entidad | Un cable hacia otro nodo. |
| Referencia de objeto (puntero) | Identificador único (UID) | Misma función: identidad estable. |
| Método (comportamiento) | — (vive en otra capa) | El modelo desacopla el dato del código. |
| Esquema fijado al compilar | Esquema abierto y extensible | Mundo cerrado vs. mundo abierto. |
Puente dos · Bits
Pasada la primera objeción, el programador afina la segunda, y es más visceral.
«Entiendo el mapa con los objetos. Pero descomponer cada venta en veinte tripletas parece un caos. Donde yo guardaba una fila ahora tengo veinte líneas. Es muchísimo más espacio, y leer veinte líneas para entender una venta es agotador.»
La objeción es legítima. La respuesta exige cambiar de escala mental.
Las tripletas son al conocimiento lo que los bits son a todo lo digital: atómicas, uniformes, abrumadoras de a una, e imprescindibles en masa.El principio del bit
Detengámonos ahí, porque es la clave de la sección.
Una fotografía, por dentro, son millones de unos y ceros. A ningún ingeniero se le ocurriría quejarse de que «un bit no dice nada» o de que «son demasiados para leerlos».
El bit no se diseñó para que un humano lo lea de uno en uno. Se diseñó para ser la unidad uniforme sobre la que se construye todo lo digital, porque su simplicidad permite operar billones a velocidad de máquina.
La tripleta aspira a ser eso mismo para el conocimiento: el átomo uniforme del significado.
Queda el miedo al almacenamiento, que es el más concreto. ¿No ocupa una barbaridad guardar cada hecho como una tripleta de texto larga, con su sujeto y su predicado repetidos miles de veces? La respuesta es que no, y la razón merece detallarse, porque deshace un malentendido común.
Las bases especializadas en tripletas jamás guardan el texto que tú escribes.
Usan un diccionario: cada cadena que se repite, un cable como
monto_usd o un valor como vendedor_17, se guarda una sola
vez y de ahí en adelante se referencia con un número corto.
Donde tú ves vendedor_17 mil veces, la máquina ve un número mil veces. Y los
números repetidos se comprimen casi a la nada.
A eso se suma guardar juntos todos los valores de una misma posición, donde la repetición es máxima y la compresión, brutal.
En la práctica
El cable instancia_de puede aparecer en cien millones
de tripletas. En disco no son cien millones de copias de la palabra: es un número,
repetido en una columna que el compresor reduce a casi nada.
La máquina nunca lee la tripleta como texto. Opera sobre números. Lo que para ti es prosa, para ella son índices. El miedo al tamaño nace de imaginar el grafo como un archivo de texto gigante, y esa imagen es falsa.
El programador escéptico empieza a aflojar. Las tripletas no son un derroche: son la versión del bit aplicada al significado, y la industria del almacenamiento ya resolvió hace décadas el problema de comprimir cosas atómicas y repetidas. Lo cual nos lleva, naturalmente, a las bases de datos que hacen justo esto.
Puente tres · Grafos: bases ya no relacionales, sino dirigidas al dato
«Está bien, pero ¿en qué motor corro todo esto? Yo tengo PostgreSQL.»
Aquí la respuesta es la más alentadora del capítulo: no hace falta inventar nada.
La industria lleva veinte años construyendo bases que abandonaron las tablas para abrazar la red de nodos y enlaces.
WQuestions no compite con ellas. Encuentra en ellas su casa. El contraste con el modelo de tablas ya lo vimos en el capítulo 8; aquí miramos las que sí encajan.
Esas tecnologías se agrupan en tres familias, y conviene conocerlas por su nombre, porque la afinidad con WQuestions varía mucho de una a otra.
Almacenes de tripletas(8). Son las más cercanas en espíritu: guardan el mundo como tripletas, igual que nosotros. Nacieron del estándar RDF de la web semántica.
Aquí están Apache Jena, GraphDB, Blazegraph, Virtuoso, Amazon Neptune y Stardog.
Si WQuestions tuviera que elegir un motor de fábrica, sería uno de estos. La unidad de almacenamiento ya es la tripleta.
Grafos de propiedades. En vez de tripletas puras, modelan el mundo como nodos y flechas a los que se les cuelgan propiedades.
Son rapidísimos recorriendo relaciones: amigos de amigos, rutas, cadenas de suministro. Los referentes son Neo4j, Memgraph y TigerGraph.
Encajan bien, aunque colgar propiedades de la flecha exige una traducción menor respecto de nuestra tripleta.
Inmutables y temporales. Aquí ocurre la coincidencia más asombrosa del capítulo.
Datomic y XTDB guardan la información como datoms:
hechos con la forma [entidad, atributo, valor, momento].
Léelo de nuevo. Es nuestra tripleta más una marca de tiempo. Casi exactamente lo que el modelo propone.
Y XTDB distingue de fábrica entre cuándo ocurrió un hecho en el mundo y cuándo el sistema se enteró, que es justo la vigencia de la regla D6 del capítulo 9.
El datom de Datomic merece quedar escrito al lado de nuestra tripleta, porque el parecido es difícil de exagerar:
// WQuestions — tripleta tipada
(venta_001, monto_usd, 49.90) ∈ M(O, N)
// Datomic / XTDB — datom: tripleta + tiempo de transacción
[venta_001 :monto_usd 49.90 tx-2026-05-14T16:32]
// la única diferencia: ellos añaden el "cuándo lo supo el sistema" de fábrica
Pongamos las tres familias en una tabla, marcando con claridad cuáles son las más afines al modelo. La afinidad alta significa que adoptar WQuestions sobre ese motor casi no exige traducción.
| Familia | Unidad de dato | Ejemplos | Afinidad con WQuestions |
|---|---|---|---|
| Triple / RDF stores | Tripleta (s, p, o) |
Jena/Fuseki, GraphDB, Blazegraph, Virtuoso, Amazon Neptune, Stardog | Muy alta · la unidad ya es la tripleta |
| Datalog · inmutables · temporales | Datom [e, a, v, t] |
Datomic, XTDB (bitemporal de fábrica) | Máxima · tripleta + tiempo, casi idéntica |
| Property graphs | Nodo + arista con propiedades | Neo4j, Memgraph, TigerGraph | Alta · recorrido veloz, traducción menor |
| Relacional (referencia, ver cap. 8) | Fila en una tabla de esquema fijo | PostgreSQL, MySQL, Oracle | Posible, pero forzada · tablas rígidas |
Precedente
Datomic, ideado por Rich Hickey, y su sucesor libre XTDB son los precedentes industriales más directos de WQuestions en lo que toca al almacenamiento.
Comparten tres convicciones: el dato es una tripleta; los hechos no se sobrescriben, se acumulan; y el tiempo es de primera clase, no una columna más.
Donde WQuestions añade algo es en el significado: tipar cada cable por los ejes de las preguntas, para que el grafo no solo se pueda consultar, sino que se entienda entre dominios y lo lea una IA sin manual.
Puente cuatro · Cadenas: lo que tomamos de la blockchain
Queda la objeción que el programador soltó al principio, casi con desdén: «esto de los hechos que no se borran suena a blockchain, y eso fue una burbuja». Aquí conviene separar la tecnología de moda de la idea que la hizo valiosa, porque la idea es excelente y WQuestions la hereda casi de oficio.
Lo notable es que el modelo ya tiene, sin buscarlo, los dos cimientos de un libro de cuentas al estilo blockchain.
El primero: los hechos no se tocan. Aquí nunca se borra ni se sobrescribe nada. Corregir el mundo es afirmar un hecho nuevo que deja en evidencia al anterior, no pisarlo.
El segundo: la vigencia de la regla D6, que fecha cada situación con su rango.
Junta las dos piezas y tienes, sin añadir una línea, un libro que solo crece y se puede auditar: la historia completa de cómo el sistema fue creyendo lo que cree.
Idea clave
Inmutabilidad de los hechos + bitemporalidad (D6) = un libro mayor append-only y auditable, gratis. No es algo que WQuestions deba construir: es lo que ya es. La blockchain hizo célebre la idea de un registro que solo crece y nunca se reescribe; el modelo la tenía desde su primera decisión de diseño.
Sobre esa base, importar el resto de la maquinaria de la blockchain es directo, y son tres piezas que se agregan encima de lo que ya existe.
Procedencia por hecho. Cada tripleta puede llevar pegada su credencial: quién la afirmó, cuándo, y una firma que lo prueba.
No es adorno. Es la diferencia entre un dato y un dato del que alguien responde.
Se modela como todo lo demás: el acto de afirmar se vuelve una situación con su agente, su instante y su firma.
{
"hecho": ["venta_001", "monto_usd", 49.90],
"afirmado_por": "vendedor_17",
"momento": "2026-05-14T16:32:00-05:00",
"firma": "0x9f2a…c4",
"hash_previo": "0x71be…08",
"hash": "0xa3d0…11"
}
Cadena de huellas. Si cada hecho guarda la huella del anterior, como el
campo hash_previo de arriba, la cadena entera delata cualquier manipulación.
Alterar un hecho viejo rompe todas las huellas posteriores, y la falsificación salta a la vista. Es la misma garantía que sostiene una blockchain, aplicada a nuestro libro de hechos.
Consenso y federación. Cuando el grafo deja de ser de una sola empresa y pasa a compartirse entre varias, hace falta un protocolo que decida qué hechos entran al registro común y quién puede afirmar qué.
Eso ya es terreno de la seguridad del grafo compartido, que el capítulo 30 trata a fondo.
Fíjate en el hecho número 2 de la figura: corrige el monto a 47,90 sin borrar el 49,90 original.
Eso es la inmutabilidad del modelo en acción, atada a la vigencia del capítulo 9. El hecho viejo cierra su rango, el nuevo abre el suyo, y la cadena de huellas deja constancia firmada de quién corrigió y cuándo.
Un auditor que llegue dentro de cinco años podrá reconstruir la verdad completa.
El escéptico, convencido
Volvamos al programador del comienzo, que ya no levanta la ceja.
Las cuatro objeciones tenían fundamento, y las cuatro tienen respuesta.
WQuestions se parece a los objetos en cómo piensa las cosas y las categorías, y los supera al separar el dato del comportamiento y dejar el esquema abierto.
Se parece a una avalancha de bits, y funciona por la misma razón que ellos: la uniformidad es lo que vuelve la información operable y comprimible a gran escala.
Vive en las bases de grafos que la industria ya construyó, y en Datomic y XTDB casi sin traducción.
Y hereda lo mejor de la blockchain, el registro inmutable y auditable, sin pagar el precio de la moda.
WQuestions no pide tirar lo que ya sabes. Pide reconocer que las preguntas estaban debajo de todo eso desde el principio.El sentido de los cuatro puentes
Ninguno de estos puentes es decorativo.
Cada uno responde a un lector que llega con su herramienta favorita y una pregunta legítima: «¿esto qué me aporta sobre lo que ya tengo?».
La respuesta, repetida cuatro veces, es la misma. WQuestions no reemplaza tu pila tecnológica. Le pone debajo una capa de significado que hace que tus objetos, tus bits, tus grafos y tus cadenas por fin se entiendan entre sí.
Con los cuatro puentes tendidos, queda la última pieza del camino del lenguaje a los hechos: cómo el verbo de una frase se convierte en la regla de un cable.