Inicio / Artículos / La ingeniería de contexto basada en ontologías cuando el RAG vectorial no es suficiente

La ingeniería de contexto basada en ontologías cuando el RAG vectorial no es suficiente

Cuando el significado abarca sistemas de registro, los embeddings por sí solos no permiten realizar uniones. La ingeniería de contexto basada en ontologías valida hechos tipados, la procedencia y herramientas de vecindad para obtener respuestas fundamentadas con LLM.

5586 palabras

Una regla de negocio suele estar dispersa en el código y los documentos. Una ontología convierte esos fragmentos en un camino navegable para la ingeniería de contexto.

Los grandes sistemas heredados, con millones de líneas de código en C y C++, PHP MVC, PL/SQL, además de cientos de documentos no estructurados versionados, hacen inviable la recuperación basada únicamente en vectores, ya que el significado es relacional y está vinculado a versiones específicas. La ingeniería de contexto basada en ontologías resuelve esta deficiencia: compárela con RAG y GraphRAG, examine los estándares RDF/OWL/SKOS/SHACL y relacionados, elija una solución práctica y aplíquela a un sistema real de millones de líneas.

1. El problema: el significado nunca está en un solo lugar

Las aplicaciones modernas recién desarrolladas con documentación ordenada pueden no experimentar este problema. Los sistemas heredados sí lo padecen. El significado de un concepto único está dividido:

  • C/C++ muestra cómo se calculan los valores, pero rara vez por qué.
  • Los paquetes PL/SQL ocultan reglas críticas dentro de miles de procedimientos
  • Los templates PHP Smarty codifican la forma en que los usuarios interactúan con los datos
  • Las especificaciones, notas de lanzamiento y guías de migración explican por qué, a lo largo de numerosos lanzamientos que a menudo se contradicen entre sí
  • Mucho conocimiento solo permanece con las personas que ya se han ido
  • Pregunte qué sucede con una factura cuando un cliente cambia el contrato a mitad de mes. La respuesta no está en un solo archivo; abarca un módulo C, paquetes PL/SQL, una tabla, una especificación de 2017 y una nota de corrección de 2021. Ningún fragmento de texto lo contiene por completo. La respuesta existe como un camino entre los artefactos y debe ser modelada antes de poder confiarle esa información a un LLM.

    2. ¿Qué es la ingeniería de contexto basada en ontologías?

    La ingeniería de contexto prepara lo que el modelo podrá ver. La ingeniería de contexto basada en ontologías utiliza un grafo explícito de tipos y relaciones —módulos, paquetes, tablas, documentos, versiones, obsoletos— para seleccionar artefactos *antes* de que la búsqueda por similitud clasifique los párrafos dentro de ellos. El grafo indica qué objetos y versiones están dentro del alcance; a continuación, los embeddings eligen las palabras dentro de ese alcance.

    ¿Y qué pasa con los embeddings?

    Los embeddings capturan la similitud; las ontologías capturan el significado. Un almacén de vectores detecta párrafos que “se parecen”. Una ontología puede registrar conexiones tipadas: qué paquete mantiene qué tabla, qué motor invoca ese paquete, qué edición de la especificación documenta la regla y qué versión marca que el paquete está obsoleto. Esos son hechos. Las técnicas se combinan en un orden fijo: los hechos deciden qué puede observar el modelo; la similitud decide qué párrafo dentro de esa selección es la respuesta. Ese orden constituye el diseño.

    3. El panorama: RAG, GraphRAG y ontologías

    Antes de optar por ontologías, la mayoría de los equipos prueban fuentes más simples. Vector RAG es ideal para preguntas que requieren una sola consulta y resulta más económico de implementar. Falla cuando las relaciones y versiones sí constituyen el significado: qué especificación de versión tiene prioridad sobre otra, qué paquete implementa qué regla y qué documento sigue siendo aplicable. GraphRAG añade una estructura de grafos a los fragmentos de texto, pero aún puede submodelar la política de versiones y las relaciones tipadas a menos que el esquema esté diseñado intencionadamente. Las ontologías convierten los tipos, predicados y restricciones en elementos fundamentales, lo que permite filtrar consultas por versión y relación en lugar de depender de que la proximidad entre elementos las indique.

    Vector RAG no es “malo”. Simplemente resulta incompleto cuando el significado real reside en enlaces y versiones.

    4. Los estándares: RDF, OWL y compañía

    Los nombres de la Web Semántica suenan complejos; en realidad, las ideas son manejables.

    • RDF: triples subject → predicate → object como modelo de datos (:BillingEngine :calls :PKG_INVOICE).
    • RDFS: esquema ligero: clases, subclases, dominios y rangos; suele ser suficiente para ontologías simples.
    • OWL: constructos de lógica descriptiva más avanzados para inferencias (disyunción, cardinalidad, transitividad, equivalencia).
    • OWL 2 DL: fragmento decidible utilizado por herramientas como HermiT; expresivo pero con una curva de aprendizaje pronunciada.
    • OWL 2 EL: perfil diseñado para ontologías grandes y razonamiento escalable (por ejemplo, ELK), con una menor expresividad.
    • OWL 2 QL: perfil orientado a la respuesta a consultas en grandes conjuntos de datos relacionales.
    • SKOS: vocabularios, sinónimos y taxonomías para glosarios empresariales.
  • SHACL: formas que validan grafos RDF frente a restricciones.
  • SPARQL: lenguaje de consulta para RDF.
  • R2RML / OBDA: mapean esquemas relacionales a grafos de conocimiento virtuales.
  • Entonces, ¿cuál es mejor?

    Pregunta incorrecta. Capa de estándares. Una pila heredada realista es: RDF para hechos, RDFS para jerarquías simples, SKOS para términos comerciales, SHACL para validación, SPARQL para consultas, R2RML para exponer la base de datos, y OWL solo donde la inferencia resulta útil (análisis de impacto, enlaces derivados, reglas de obsolescencia). Usar OWL en todo lugar vuelve los proyectos frágiles; el pragmatismo por capas los mantiene funcionales.

    Cómo elegir: criterios de decisión

    1. Necesita inferencia automática? Utilice RDF/RDFS para la mayoría de los datos; reserve OWL para aquellos casos específicos que se benefician de la clasificación automatizada.
    2. Necesita garantías de calidad con muchos colaboradores? Adopte SHACL desde el primer día y realice validaciones continuas.
    3. ¿Dónde reside la verdad? Sistemas relacionales (Oracle + PL/SQL) → R2RML/OBDA como gráfico de conocimiento virtual. Documentos → cargue RDF (opcionalmente con OWL) o un gráfico de propiedades; no hay necesidad de virtualizar nada.
    4. Necesita un glosario empresarial? Los sinónimos heredados se adaptan perfectamente a SKOS.
    5. ¿Interoperabilidad frente a productividad en el procesamiento de grafos? Los grafos compartidos de larga duración favorecen la tecnología W3C; las herramientas internas que requieren algoritmos de grafos pueden incluir una proyección en gráfico de propiedades sincronizada con la fuente semántica de verdad.

    Dónde se encuentran los estándares

    Los artefactos son texto. OWL, SKOS, SHACL y R2RML pueden existir como archivos Turtle en git. Un árbol ontology/ declara qué existe: clases, relaciones, jerarquía, metadatos; a menudo con un uso limitado de OWL, más allá de las declaraciones y un uso cuidadoso de rdfs:range. Recuerde: un rango no es una restricción. Emitir :writesTable hacia un elemento que no es una tabla puede hacer que el motor de inferencia considere que el destino es un :DbTable en lugar de rechazarlo. Las verificaciones reales de pertenencia corresponden a SHACL. La elección del perfil depende del motor que lo utiliza, y no mágicamente solo del archivo.

    5. Experiencia con una base de código heredada masiva

    El sistema en código fuente superaba las dos millones de líneas en C/C++, contaba con una capa extensa de PHP, una gran cantidad de PL/SQL que albergaba mucha lógica empresarial, y cientos de documentos no estructurados a lo largo de las diferentes versiones. Algunos documentos describían comportamientos obsoletos; otros solo eran aplicables entre la versión X y Y; nada indicaba qué información era válida “hoy en día”.

    Qué se intentó primero (y por qué no fue suficiente)

    Vector RAG aplicado a código y documentos fragmentados respondía a preguntas simples, pero fallaba ante aquellas que involucraban varios artefactos o eran sensibles a la versión, al mezclar las especificaciones v2 y v3 sin una política clara. Naive GraphRAG, al no contar con semántica de versiones tipada, seguía recuperando pasajes contradictorios. Los prompts elaborados manualmente no eran escalables. El patrón de fallo era consistente: similitud sin relaciones ni versiones bien definidas.

    El enfoque basado en ontologías

    Módulos de modelo, paquetes, tablas, documentos, versiones, llamadas, escrituras, implementaciones, sustituciones, aplicaciones a versión y obsoletizaciones. Se recopilan datos de analizadores y diccionarios, se validan con SHACL, se almacenan gráficos nombrados por versión y se exponen SPARQL (y herramientas MCP) a través de un servicio de contexto que filtra según la versión del usuario antes de cualquier paso de incrustación.

    Las doce clases: cómo encontrarlas

    Las clases surgieron al analizar familias de artefactos, no al enumerar cada sustantivo. Los núcleos típicos incluyen módulos, funciones, paquetes, tablas, columnas, documentos, secciones, versiones, trabajos por lotes, APIs, pantallas de interfaz y términos comerciales (conceptos SKOS). Las relaciones se extrajeron de gráficos de llamadas, ALL_DEPENDENCIES / PL/Scope, rutas PHP y metadatos de documentos. En talleres especializados se definieron sinónimos que posteriormente SKOS formalizó.

    Qué crea el repositorio

    El repositorio de ontologías alberga archivos en formato Turtle para representar ontologías, formas, SKOS, consultas y mapeos. CI valida las propuestas de cambio mediante ejemplos SHACL, consistencia en el razonamiento y verificaciones de perfiles. Los recolectores emiten hechos candidatos a la etapa de preparación; las formas ponen en cuarentena las infracciones y generan informes al respecto. Un almacén de hechos acumula los hechos aceptados y las decisiones humanas sobre la cuarentena: el único elemento que no puede ser recreado mediante una reconstrucción. El almacén de triples es el resultado de la compilación del repositorio, el almacén de hechos y el proceso de razonamiento. Los sistemas originales siguen siendo la fuente autorizada de la verdad bruta; el repositorio, en cambio, es la fuente autorizada para la representación y validación.

    Las versiones virtuales a través de R2RML se vinculan a cada esquema de Oracle (cada esquema corresponde a una versión), escribiendo en los mismos grafos nombrados que los hechos recolectados, de modo que el servicio de contexto pueda fusionarlos por versión sin necesidad de registros adicionales. Las versiones retiradas conservan los hechos recolectados sin contar con una versión virtual activa.

    Cómo se inicializa el grafo

    Antes de los recolectores, se decide qué estándar representa a cada familia: el contrato para cada extractor. Luego se analiza C/C++ (llamadas, acceso a tablas), los diccionarios de Oracle para PL/SQL, el enrutamiento de PHP y los repositorios de documentos. Se asignan el origen, las fechas y las versiones detectables. Se hace una correspondencia con los términos de la ontología, se fusionan las duplicadas mediante SKOS, y opcionalmente se permite que un LLM proponga clasificaciones de documentos para su revisión por humanos. Se cargan las puertas SHACL. Los análisis ambiguos (SQL dinámico, punteros a funciones) llevan marcas de confianza y se consideran menos fiables.

    Cómo se actualiza el grafo

    Los deltas siguen los principios de gobernanza de software: propuesta → PR en Turtle → verificaciones automatizadas de SHACL/reasoner/profile → revisión → fusión → reconstrucción de los grafos afectados. Los recolectores vuelven a ejecutar cada lanzamiento; los nuevos hechos ingresan a la etapa de preparación; el triaje en cuarentena se divide en errores del recolector, correcciones de formas/ontologías excesivamente estrictas o hechos falsos que se mantienen fuera. Las líneas de base iniciales requerían muchas iteraciones, alrededor de diez ciclos de recolección/corrección a lo largo de semanas, con un LLM utilizado únicamente para agrupar las familias de violaciones, nunca para aceptar hechos. Los documentos siguen siendo la excepción, donde los modelos proponen contenido para revisión humana.

    Cómo lo utiliza el LLM

    En la fase de preguntas: vinculación de entidades → recorrido del grafo → compilación de contexto. Asocia la pregunta a las entidades mediante etiquetas/sinónimos SKOS; ejecuta SPARQL filtrado por la versión del usuario denominada grafo, además de los grafos compartidos (documentos filtrados con :appliesToRelease); luego entrega los hechos conectados y las secciones exactas al LLM. La búsqueda vectorial sigue encontrando párrafos dentro de los documentos permitidos. El grafo decide qué documentos y artefactos de código se consideran, para que las versiones no se mezclen.

    La diferencia es evidente en preguntas como cuál especificación rige la facturación proporcional en la versión 2022.2. Los vectores devueltos son SPEC_INV_V2 y V3 sin validez; el gráfico selecciona V3 porque se aplica a 2022.2 y, según la política, sustituye a v2, además designa PKG_INVOICE como responsable de su implementación. Las respuestas cuentan con un camino trazable: módulo → paquete → tabla → documento → versión, lo cual puede ser verificado por los desarrolladores, a diferencia de un montón de fragmentos similares.

    Resumen del pipeline

    1. Análisis. Se determinan los estándares para cada familia de artefactos; se crea una ontología central y una tabla de decisiones que sirven como contratos de recolección.
    2. Recolección. Análisis estático, extracción de datos del diccionario, rutas PHP, repositorios de documentos: cada dato incluye su origen, fecha y versión, cuando se conoce.
  • Transformación. Mapeo a términos de ontología, fusión de sinónimos, validación humana de las propuestas del LLM, cuarentena con SHACL, carga o exposición a través de OBDA.
  • Versionado. Ejecutar nuevamente los recolectores en cada lanzamiento; mantener grafos nombrados; asegurar que los mapeos estén alineados con los esquemas en uso.
  • Servicio. El servicio de contexto resuelve entidades, ejecuta consultas curadas, empaqueta contextos pequeños; los expone como herramientas MCP.
  • Generación. El LLM responde a partir del contexto empaquetado; los vectores son opcionales en documentos seleccionados.
  • Las etapas 1–4 corresponden a ingeniería de datos (la etapa 1 es una decisión; las 2–4 son pruebas continuas en cada lanzamiento). Las etapas 5–6 corresponden a ingeniería de contexto. La ontología es el contrato entre ellas.

    Costo y secuenciación

    Los costos iniciales de modelado toman tiempo, pero son menores que los ajustes interminables en RAG que no pueden codificar las versiones. El valor radica en las cadenas de trabajo que mantienen el grafo actualizado, no en un archivo Turtle estático. Comience con un subsistema; demuestre el valor en cuestión de semanas; luego amplíe la cobertura.

    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @prefix owl:  <http://www.w3.org/2002/07/owl#> .
    @prefix :     <https://example.com/legacy#> .
    
    <https://example.com/legacy> a owl:Ontology ;
        owl:versionInfo "1.4.0" .
    
    :CModule        a owl:Class ; rdfs:label "C module" .
    :PlsqlPackage   a owl:Class ; rdfs:label "PL/SQL package" .
    :BusinessRule   a owl:Class ; rdfs:label "Business rule" .
    :DbTable        a owl:Class ; rdfs:label "Database table" .
    
    :calls          a owl:ObjectProperty . # no range on purpose: a call crosses PHP, C and PL/SQL
    :writesTable    a owl:ObjectProperty ; rdfs:range :DbTable .
    :implementsRule a owl:ObjectProperty ; rdfs:range :BusinessRule .
    
    @prefix owl:  <http://www.w3.org/2002/07/owl#> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    @prefix :     <https://example.com/legacy#> .
    
    # a module that calls a package implementing a rule reaches that rule
    :reachesRule    a owl:ObjectProperty ;
                    owl:propertyChainAxiom ( :calls :implementsRule ) .
    :implementsRule rdfs:subPropertyOf     :reachesRule .
    
    # a specification that supersedes a superseded one supersedes it as well
    :supersedes     a owl:ObjectProperty , owl:TransitiveProperty .
    
    @prefix :    <https://example.com/legacy#> .
    @prefix g:   <https://example.com/legacy/graph/> .
    @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
    
    # structural facts, as collected from the sources of release 2022.2
    g:R2022_2 {
        :BillingEngine a :CModule ;
            rdfs:label "Billing engine (C)" ;
            :calls :PKG_INVOICE ;
            :readsTable :T_CONTRACT .
    
        :PKG_INVOICE a :PlsqlPackage ;
            rdfs:label "PKG_INVOICE" ;
            :hasProcedure :CALC_PRORATA ;
            :writesTable :T_INVOICE ;
            :implementsRule :ProRataRule ;
            :describedBy :SPEC_INV_V3 .
    
        :CALC_PRORATA a :PlsqlProcedure ;
            rdfs:label "CALC_PRORATA" ;
            :implementsRule :ProRataRule .
    }
    
    # facts that span releases: documents, business rules, lifecycle
    g:shared {
        :PKG_INVOICE
            :deprecatedInRelease :R2024_1 ;
            :replacedBy :PKG_INVOICE_V2 .
    
        :SPEC_INV_V3 a :SpecificationDocument ;
            :appliesToRelease :R2021_1, :R2022_2 ;
            :supersedes :SPEC_INV_V2 .
    
        :ProRataRule a :BusinessRule ;
            rdfs:label "Mid-month contract change is invoiced pro rata" .
    }
    

    6. Conclusión

    • RAG no está muerto. Es insuficiente cuando el significado se distribuye entre código, bases de datos, documentos y versiones.
    • Las ontologías son prácticas. RDF + RDFS + SKOS + SHACL forman un conjunto funcional; mantenga OWL solo donde las reglas de clasificación justifiquen su complejidad.
    • Los grafos tipados proporcionan lo que necesitan los asistentes de capa semántica. Los modelos de lenguaje siguen siendo eficaces en la redacción; la ontología controla qué hechos ingresan al prompt, para qué versión, con un camino verificable.
  • En un legado de millones de líneas, los recolectores basados en texto junto con las formas fueron el primer diseño de recuperación que logró superar las verdaderas limitaciones.
  • Este mapa se detiene antes de abarcar todo el ámbito de la ingeniería de extracción: gráficos fiables provenientes de C/C++, PL/SQL y décadas de documentos, proporcionados sin caos operativo, lo cual merece análisis detallados dedicados.

    Consejos prácticos que resisten el contacto con la producción

    Nombrar los grafos según las versiones de forma consistente en collectors y R2RML (rr:graph). Nunca permitir que la salida de modelos LLM sin restricciones genere triples. Mantener la estructura de cuarentena legible: nodo, forma, restricción. Hacer copias de seguridad del almacén de hechos de manera obsesiva. Tratar los perfiles de razonamiento como opciones de despliegue probadas en CI. Documentar la política de sustitución en la ontología para que la “especificación más reciente aplicable” sea consultable, y no algo subjetivo. Medir la calidad de las respuestas con preguntas de referencia específicas para cada versión que antes fallaban en RAG.

    Cuando los interesados soliciten “solo embeddings”, mostrar un ejemplo de fallo con versión mixta junto con la ruta del grafo. La adopción surge de la verificabilidad. Cuando los ingenieros teman la complejidad de OWL, mostrar la capa estructurada con OWL como opción. Cuando el equipo operativo tema otro tipo de base de datos, recordarles que el almacén de triples es reconstruible; el almacén de hechos y la ontología en git son las joyas más valiosas.

    La ingeniería de contexto basada en ontologías se trata menos de la IA exótica y más de revelar dónde reside el significado, así como de codificar esa verdad para que los modelos no mezclen silenciosamente épocas incompatibles de un sistema.

    Notas más detalladas sobre los recolectores y la confianza

    El análisis estático de C y C++ permite identificar bordes de llamadas y algunos puntos de acceso a tablas; sin embargo, las consultas SQL generadas en tiempo de ejecución y las llamadas indirectas a través de punteros a funciones siguen siendo incompletas. La asignación de puntuaciones de confianza evita la creación de grafos excesivamente optimistas. La extracción de PL/SQL mediante diccionarios de Oracle ofrece mayor detalle en cuanto a las dependencias, pero aún requiere revisión humana cuando predomina el SQL dinámico. Los mapas de enrutamiento de PHP vinculan los puntos de entrada visibles para el usuario con los símbolos del backend, de modo que las consultas relacionadas con las pantallas pueden dirigirse a los paquetes correspondientes.

    Los recolectores de documentos que solo incrustan PDF sin etiquetado de liberación reproducen el mismo fallo original. Es preferible utilizar pipelines que detecten rangos de “aplica a liberación” —proponidos heurísticamente y confirmados por humanos— antes de vincular secciones a paquetes.

    La cuarentena como característica del producto

    Un volumen elevado en cuarentena es una señal, no un escándalo. Los errores en los recolectores, las formas complejas y las extracciones erróneas requieren responsables diferentes. Dirigir la asistencia de los LLM para clasificar las familias de infracciones acelera el proceso de triaje sin otorgar autoridad de escritura. Una vez que la situación base se estabiliza, el volumen en cuarentena debería disminuir; los picos después de una nueva liberación indican ya sea nuevas estructuras lingüísticas o formas que han cambiado.

    Por qué son importantes los grafos nombrados

    Sin grafos nombrados, los triples de las versiones 2019 y 2024 coexisten sin etiquetas y las consultas no pueden delimitar su ámbito. Con ellos, el servicio de contexto agrega un patrón de grafo o la disciplina FROM NAMED vinculada a la versión en uso del usuario, además de hechos compartidos e inmutables. Ese único mecanismo evita la confusión entre SPEC v2/v3 de manera más efectiva que las advertencias en los mensajes.

    MCP y experiencia del desarrollador

    Al exponer envoltorios SPARQL seleccionados como herramientas MCP, los agentes de programación pueden preguntar “¿qué llama a este paquete en 2022.2?”, sin tener que crear consultas SQL para entornos de producción. Mantenga las herramientas en modo solo lectura y parametrizadas según la versión. Registre los argumentos de las herramientas para auditorías cuando sus respuestas influyan en cambios en la producción.

    Relación con BMAD y especificaciones dinámicas

    El contexto ontológico complementa los marcos de proceso que mantienen correcto el código escrito por IA: el grafo proporciona hechos fundamentados y versionados que dichos procesos pueden citar. Las especificaciones dinámicas se convierten en nodos vinculados a paquetes de implementación en lugar de páginas wiki desatendidas.

    Antipatrones a evitar

    • Incluir ontologías completas en los prompts en lugar de consultarlas.
    • Omitir SHACL porque “se confía en los recolectores”.
    • Usar la cardinalidad OWL en todas partes desde el primer día.
    • Construir únicamente un grafo de propiedades y luego necesitar semántica a nivel OWL más tarde sin una estrategia de sincronización.
    • Permitir que la búsqueda vectorial funcione sin filtrado en todas las versiones “por si acaso”.

    Evite estos y la arquitectura seguirá siendo explicable tanto para los arquitectos como para los desarrolladores que deben verificar los caminos.

    Ejemplo práctico: cambio de contrato a mediados de mes

    Volvamos a la pregunta sobre la factura. En el grafo, el nodo del motor de facturación está vinculado a paquetes que calculan cargos proporcionales; esos paquetes escriben tablas de facturas; se seleccionan los documentos que :appliesToRelease la liberación del usuario y :describes dichos paquetes; las ediciones reemplazadas se excluyen por política. El paquete de contexto podría incluir los nombres de las proceduras PL/SQL, las columnas de las tablas afectadas y dos párrafos de la especificación vigente, no cinco PDFs contradictorios. Luego, el LLM explica el comportamiento con citas que se corresponden con los bordes del grafo en los que pueden hacer clic los desarrolladores.

    Sin el grafo, la recuperación devuelve el fragmento de PDF que esté más cerca de “cambio en contrato de factura”, a menudo una nota obsoleta. El modelo suena seguro, pero el camino no es verificable.

    Patrones de diseño para recolectores

    C/C++: analizar las unidades de traducción en busca de llamadas y literales de cadena SQL cuando sea posible; registrar el origen del archivo y los símbolos; marcar las llamadas indirectas no resueltas. PL/SQL: utilizar vistas de diccionario y PL/Scope para identificar dependencias; capturar la granularidad a nivel de paquetes y procedimientos. PHP: asociar rutas y controladores con los símbolos de entrada del backend. Documentos: extraer secciones, títulos y etiquetas de versión potenciales; nunca confirmar automáticamente enlaces especulativos.

    Emitir triples de origen junto con los datos: quién los recopiló, cuándo, desde qué ruta y en qué etiqueta git del código fuente. Cuando se active la cuarentena, el origen indica a qué recolector acceder.

    Ejemplos de formas SHACL en prosa

    Es posible que las formas requieran que cada borde :writesTable apunte a un :DbTable, que cada documento contenga al menos un :appliesToRelease, y que cada paquete tenga una etiqueta no vacía. Las violaciones indican el nodo de enfoque y la restricción correspondiente. Los equipos iteran sobre las formas a medida que aprenden las peculiaridades del corpus; las flexibilizaciones temporales pasan por la misma revisión de PR que las clases ontológicas para mantener un historial verificable.

    Uso del Reasoner sin dogmas

    Ejecuta comprobaciones de consistencia en las PR para detectar tempranamente violaciones de coherencia. Utiliza con cuidado la materialización de calls transitivos; cierres muy grandes pueden hacer que los almacenes se sobrecarguen. Prefiere rutas de propiedades en tiempo de consulta para algunas traversales. El perfilado (EL vs DL) debe formar parte de la matriz de CI: lo que es válido en ELK puede diferir de las expectativas de HermiT; fija la versión del motor.

    Proyección del grafo de propiedades

    Si algoritmos como la detección de comunidades ayudan a agrupar paquetes estrechamente relacionados, proyecte periódicamente un grafo de propiedades etiquetado. Mantenga el RDF como fuente de verdad; trate al LPG como un índice derivado. Documente el retraso en la sincronización para que nadie solucione errores en la ontología utilizando una proyección desactualizada.

    Colas de revisión humana

    Las propuestas de clasificación de documentos aparecen como elementos en la cola: enlaces a paquetes sugeridos, rangos de versiones, tipos de secciones. Los revisores aceptan, editan o rechazan; las decisiones se registran en el almacén de datos. Las métricas relativas a las tasas de aceptación indican si se necesitan ajustes en los prompts o en las heurísticas. Nunca omita la cola en casos “obvios”: así es como ingresan los errores silenciosos.

    Detalles de la capa de servicio

    El servicio de contexto autentica al usuario, determina su versión en uso, realiza el enlace de entidades (coincidencia de cadenas, SKOS altLabels, posiblemente un incrustado ligero solo en las etiquetas), selecciona plantillas SPARQL de queries/, las ejecuta contra los grafos nombrados adecuados, compila un paquete de tokens delimitado y lo devuelve junto con metadatos de ruta. Límites estrictos en los triples y caracteres de sección evitan inundaciones de solicitudes. Se almacena temporalmente en caché los contextos compilados, identificados por (versión, conjunto de entidades, plantilla de consulta), para atender preguntas repetidas del IDE.

    Eskizos del catálogo de herramientas MCP

    Ejemplos: lookup_symbol, list_writers_of_table, governing_specs_for_package, impact_of_deprecating. Cada herramienta declara la versión requerida. Las respuestas incluyen URI y etiquetas comprensibles para humanos. Los agentes encadenan herramientas; el servidor sigue imponiendo SPARQL de solo lectura.

    Tabla de comparación en formato narrativo

    Vector RAG: económico, pero deficiente en versiones. GraphRAG-lite: mejor estructura, pero fácil de especificar de forma insuficiente en las versiones. Ontología completa + SHACL + grafos nombrados: mayor costo de desarrollo, rutas verificables y contexto seguro para las versiones. Híbrido: puerta de control basada en ontología + vectores dentro de los documentos; generalmente es la opción ganadora para sistemas heredados.

    Calendario de gobernanza

    Para cada serie de versiones: ejecutar recolectores, realizar triaje y cuarentena, fusionar las solicitudes de actualización de la ontología, reconstruir el almacén de triplets, probar con preguntas de referencia y publicar el esquema MCP si hay cambios en las herramientas. Asignar responsables para los elementos estructurales, los recolectores y las colas de documentos. Sin un calendario, el grafo se deteriora al igual que la wiki que reemplazó.

    Seguridad y acceso

    Algunos paquetes o documentos son confidenciales. Codifique los permisos en el grafo o filtrelos en el servicio de contexto utilizando los roles del usuario. No incluya subgrafos sin restricciones en las solicitudes dirigidas a usuarios que no puedan leer los archivos originales.

    Ejercicios de fallo

    Elimine el almacén de triples en la fase de pruebas y reconstrúyalo a partir del repositorio más el almacén de hechos para demostrar la capacidad de recuperación. Restaure periódicamente las copias de seguridad del almacén de hechos. Simule un despliegue defectuoso del recolector y asegúrese de que la cuarentena lo detecte antes de que se cargue. Estos ejercicios convierten las diapositivas de arquitectura en habilidades operativas reales.

    Integración de un segundo subsistema

    Copie la tabla de decisiones, agregue clases solo cuando los recolectores las necesiten, reutilice patrones SHACL y mantenga los esquemas conceptuales SKOS separados por dominio si hay colisiones de etiquetas. Evite una única mega-ontología que ralentice cada solicitud de integración; las importaciones modulares con un vocabulario superior reducido funcionan mejor.

    Métricas importantes

    • Precisión de las preguntas clave por versión
    • Tasa de cuarentena por colector
    • Tamaño medio del paquete de contexto
    • Proporción de respuestas con rutas completas
    • Tiempo desde la etiqueta de publicación hasta la actualización del gráfico
    • Retraso en la revisión humana en las colas de documentos

    Fíjese en estos indicadores en lugar de contar simplemente los triples. Un gráfico grande e impreciso es peor que uno pequeño y fiable.

    Ampliando el mapa de estándares intermedios de artículos

    SKOS ConceptSchemes agrupa los términos comerciales por dominio (facturación, atención, provisión). AltLabels registra los tres nombres antiguos que todavía se utilizan. ExactMatch permite vincular entre esquemas cuando lo exigen los proyectos de integración. SHACL puede requerir etiquetas de conceptos en dos idiomas si la organización es bilingüe, algo común en Europa tradicionalmente.

    Las asignaciones R2RML deben revisarse al igual que las vistas SQL: un rr:class incorrecto contamina las inferencias de tipo. Mantenga las asignaciones junto a las migraciones del esquema para que los DBAs puedan verlas. Cuando una columna deja de utilizarse, las asignaciones y los axiomas de obsolescencia de la ontología deben incluirse en la misma versión.

    Las bibliotecas de consultas SPARQL en queries/ forman parte del código del producto. Parametrice las versiones y los URI de las entidades. Realice revisiones de código en ellas. Añada consultas ASK para comprobaciones de estado (“¿existe este grafo de versiones?”) que utilice el servicio de contexto al iniciarse.

    Por qué se vuelve a explicar el orden de las técnicas

    Los equipos intentan repetidamente “añadir un grafo” después de los embeddings sin cambiar el orden de recuperación y posterior lectura. Si los vectores siguen seleccionando documentos de todas las versiones primero, el grafo se convierte en algo decorativo. Invierta este proceso: defina el alcance por grafo y luego realice la lectura. Escriba esa frase en el README de la arquitectura hasta que quede bien clara.

    Puente hacia análisis profundos de extracción

    Los extractores para macros C, código generado y codificaciones de múltiples bytes merecen sus propios manuales. Lo mismo ocurre con los PDFs procesados por OCR y las notas de lanzamiento escaneadas. El mapa ontológico anterior supone que dichos extractores existen o existirán; sin ellos, el archivo OWL más limpio no puede generar hechos. Invierta de manera proporcional: claridad en el modelado, realismo en los extractores y controles de validación.

    Ampliando la descripción del problema con síntomas operativos

    Cuando el significado está disperso, los tickets de soporte suenan igual: la interfaz muestra un estado, el trabajo en lote otro y el almacén un tercero. Los ingenieros abren tres repositorios y aún así no pueden determinar qué artefacto es la fuente autorizada para un día laboral específico. La búsqueda vectorial en esos repositorios devuelve frases que parecen relevantes porque comparten vocabulario con el ticket, pero los párrafos recuperados describen flujos obsoletos. El enfoque basado en ontologías no unifica mágicamente los repositorios; obliga a crear un mapa explícito que indique qué clase posee qué hechos y qué recolector tiene permiso para afirmarlos.

    La falta de claridad también se refleja en el tiempo de incorporación. Los nuevos empleados pasan semanas aprendiendo mapas internos que solo existen en el historial de chats. Un gráfico escrito con restricciones SHACL se convierte en un mapa navegable: se parte de “Contract”, se sigue “hasParty” hasta llegar a “Counterparty”, luego “governedBy” hasta “PolicyVersion”, y finalmente se llega al módulo de código que aplica la política. Ese camino es auditable. Un puntaje de similitud, en cambio, no lo es.

    Volviendo a los embeddings con modos de fallo

    Los embeddings comprimen las coocurrencias locales. Son eficaces cuando la respuesta es un párrafo que ya expresa el hecho. Fallan cuando la respuesta requiere una combinación de datos de diferentes sistemas: qué versión de política se aplicó a qué contrato en qué fecha, mientras una bandera de migración estaba parcialmente activada. Los bordes del grafo codifican esas combinaciones. Aun así, los embeddings pueden clasificar nodos candidatos o explicaciones una vez que el grafo ha reducido el conjunto de opciones. Tratar a los embeddings como la única herramienta de recuperación es la razón por la cual muchas demostraciones RAG funcionan bien con corpus de Preguntas Frecuentes pero se estancan en plataformas heredadas.

    La dimensionalidad y el tamaño de los fragmentos influyen en este fallo. Los fragmentos cortos mejoran la recuperación de palabras clave, pero reducen la recuperación de procedimientos de varias oraciones. Los fragmentos largos diluyen el vector con texto genérico. Ninguno de estos ajustes crea una clave foránea que nunca haya estado en el texto. Los recolectores de ontologías crean, o más bien declaran, esas claves a partir de analizadores, mapas de configuración y tablas de migración.

    Comparación de GraphRAG sin eslóganes

    Los pipelines al estilo GraphRAG extraen entidades y relaciones del texto para formar un grafo, y luego recuperan subgrafos con el fin de generar prompts. Esto resulta útil cuando el corpus constituye el sistema de registro. En los sistemas heredados, el sistema de registro suele estar formado por código, bases de datos y manuales de operación. La extracción de texto por sí sola pasará por alto los valores predeterminados no declarados en la configuración. La ingeniería de contexto basada en ontologías parte de la intención del esquema: primero se definen las doce clases, y luego se escriben recolectores que saben dónde se encuentra cada predicado. La extracción de texto de la prosa es una solución alternativa para el conocimiento no estructurado, pero no constituye la base para las restricciones estrictas.

    Los diseños híbridos son válidos: utilice GraphRAG en las islas de documentación, use recolectores de ontologías en los núcleos transaccionales, y únalos ambos en grafos nombrados con información de procedencia. La capa de servicio debe indicar qué tríos provienen de cada método para que el modelo prefiera los hechos obtenidos por recolectores de alta confianza sobre las conjeturas extraídas.

    Ampliación de la elección de estándares

    RDF destaca cuando se necesitan identificadores globales, SPARQL e intercambio de datos. Los grafos de propiedades son ideales cuando lo que importa es la experiencia de navegación y la familiaridad de los desarrolladores. OWL aporta vocabularios para restricciones y tipos inferidos; utilice un perfil que su motor de razonamiento realmente soporte. JSON-LD es un puente práctico para APIs. SHACL valida los datos de instancia sin requerir razonamiento OWL completo. Elija la solución más sencilla que permita validar datos semanalmente, consultar subgrafos para generar prompts y exportar información para auditores.

    Criterios de decisión en la práctica:

    • Habilidades del equipo: ¿quién puede escribir SPARQL, Cypher o rutas personalizadas?
    • Interoperabilidad: ¿deben los socios consumir archivos RDF en formato dump?
    • Frecuencia de validación: la verificación nocturna con SHACL es suficiente para muchos proyectos.
    • Necesidades de inferencia: las comprobaciones en mundo cerrado suelen ser más efectivas que las sorpresas del modelo OWL en mundo abierto.
    • Herramientas: ¿el servidor MCP ya entiende el formato de tu base de datos?

    El lugar donde se encuentran los estándares importa menos que versionarlos en el repositorio junto con los recolectores de datos. La desviación entre los archivos de ontología y el código de los recolectores representa una interrupción silenciosa.

    Duas clases: guion para el taller de elicitación

    Realice un taller de medio día con los líderes del dominio. Pida que se indiquen los sustantivos que aparecen en los informes de incidentes, las listas de verificación de lanzamientos y los cuestionarios regulatorios. Agrupe los duplicados. Para cada clase que quede, pregunte: ¿qué identifica de manera única una instancia?, ¿quién puede crearla?, ¿qué predicados deben existir siempre? y ¿qué sistemas la modifican? Doce no es un número mágico; es una cantidad que cabe en la memoria de trabajo. Si encuentra treinta, agrúpelos en contextos delimitados y forme grafos federados en lugar de mezclarlo todo en un único conjunto.

    Documente cada clase con: etiqueta preferida, etiquetas alternativas, política de identificadores, estados del ciclo de vida y propietario del recolector. Sin un propietario definido, el grafo se descompone.

    Diseño de repositorio que se mantiene fácilmente

    Se deben separar los módulos de ontología, los paquetes de recolección, las tareas de validación, la API de servicio y los modelos de prompt. Los triples generados no deben guardarse en git; las formas y configuraciones fijas sí deben estar en git. El proceso CI debe fallar cuando SHACL presente errores con las configuraciones fijas de referencia. Las versiones de la ontología deben etiquetarse al estilo semver, incluso si los triples son efímeros, ya que los modelos de prompt dependen de los nombres de los predicados.

    Análisis detallado de la inicialización

    Orden de arranque: cargar TBox (clases y propiedades), cargar los individuos de referencia que nunca provienen de los recolectores (por ejemplo, nombres de entornos canónicos), ejecutar los recolectores para los datos que cambian lentamente, luego los recolectores para las transacciones rápidas, después SHACL, y finalmente publicar un identificador de instantánea del grafo. El LLM nunca lee un HEAD en movimiento sin un punto de referencia de instantánea; la reproducibilidad es más importante que la apariencia de actualidad.

    Análisis detallado de las actualizaciones

    Preferir colectores incrementales identificados por marcas de agua. Al cambiar el esquema, migrar primero las formas, luego los colectores, y finalmente completar los datos faltantes. Poner en cuarentena las triplets que no cumplan con las formas en lugar de eliminarlas silenciosamente. Emitir métricas: triplets añadidos, puestos en cuarentena y violaciones de formas por clase. Notificar a los humanos cuando la tasa de cuarentena aumente después de un despliegue.

    Análisis en profundidad del uso de LLM

    Plan de recuperación: resolver entidades del texto del usuario mediante NER restringido frente a IRIs conocidos, expandir el entorno vecinal con límites de saltos y listas de permisos de predicados, serializar en una tabla Turtle compacta o en formato markdown, adjuntar información de origen y nivel de confianza, y luego llamar al modelo con herramientas que permitan realizar un salto adicional según sea necesario. Prohibir el uso de SPARQL en formato libre con el modelo en producción hasta que exista un sistema de revisión; ofrecer herramientas parametrizadas en su lugar.

    Pasos del pipeline detallados

    1. Recibir el evento o programar un tick.
    2. El colector obtiene los datos y los normaliza.
  • El mapeador emite triples candidatos con información de origen.
  • SHACL realiza la validación; los fallos se envían al grafo de cuarentena.
  • El fusionador actualiza la instantánea con claves idempotentes.
  • El indexador actualiza las proyecciones de servicio.
  • El evaluador ejecuta las preguntas de referencia sin conexión.
  • Las herramientas MCP exponen lecturas tipadas a los asistentes.
  • La telemetría cierra el ciclo.
  • Si omites cualquier paso, tendrás que reconstruir una demostración RAG frágil.

    Realismo en la secuenciación de costos

    Los costos laborales son los más importantes. Comienza con tres categorías que generen mayor carga de soporte. Automatiza sus sistemas de recolección de datos. Mide la desviación en los tickets y las tasas de respuestas incorrectas. Amplía la cobertura de categorías solo cuando el tiempo de respuesta y la validación sigan siendo óptimos. El gasto en GPU para los embeddings suele ser menor que las semanas que pasan los ingenieros discutiendo sinónimos sin contar con un archivo de vocabulario.

    Sugerencias prácticas para mantener el sistema en producción

    Incluya los IDs de las capturas en los prompts durante los incidentes. Registre el hash del subgráfico con cada respuesta del modelo. Proporcione un panel de “por qué este contexto” para los usuarios internos. Trate las solicitudes de cambios relacionadas con la ontología como si fueran solicitudes de API: revisores, notas de compatibilidad y plazos de desuso para los predicados obsoletos.

    Recopiladores y puntuación de confianza

    La confianza no es algo subjetivo. Calcúlela a partir de la prioridad de las fuentes (base de datos principal > caché secundario > wiki), la actualidad de la información y el grado de certeza al analizarla. Multiplique cuidadosamente las puntuaciones; no restaure la confianza promediando señales negativas graves. Muestre la confianza al modelo como metadatos estructurados, y no como descripciones adverbiales en el prompt.

    Interfaz de usuario para la cuarentena

    La cuarentena es un producto. Muestre los triples pendientes, las formas que fallaron, los propietarios sugeridos, además de enlaces para confirmar o corregir con un solo clic. Sin una buena interfaz de usuario, la cuarentena se convierte en un desorden sin control y la confianza se derrumba.

    Gráficos nombrados como contratos

    Cada recolector escribe en su grafo con nombre propio. La vista de fusión es un grafo de grafos que cuenta con políticas explícitas. El retroceso implica eliminar una versión de un grafo con nombre, no realizar operaciones arqueológicas en un dump monolítico de triple store.

    Ergonomía de MCP

    Las herramientas deben reflejar las clases: getContract, listPoliciesForContract, getDeploymentAffecting. Los argumentos son IRIs o claves de negocio resolubles en IRIs. Las respuestas incluyen únicamente predicados permitidos. Los tiempos de espera y los límites de bytes protegen la ventana de contexto.

    Especificaciones dinámicas

    Las clases de ontología deben alinearse con los ADRs y las especificaciones dinámicas. Cuando una especificación modifica una regla, la estructura y las pruebas del recolector también cambian en la misma solicitud de pull. Los asistentes que leen tanto el grafo como la especificación reducen los conflictos entre “documentación y código”.

    Antipatrones ampliados

    • Una clase gigante “Thing” con propiedades libres.
  • Recuperación exclusiva mediante incrustación para preguntas de cumplimiento.
  • Permitir que el modelo genere IRIs.
  • Descarte silencioso de triples inválidos.
  • Uso de volcados completos de ontologías como prompts.
  • Omitir la evaluación de preguntas clave.
  • Mezclar entornos en un mismo grafo sin espaciado de nombres.
  • Narrativa de ejemplo funcional

    A mediados del mes, cambian los términos de pago de un contrato. El responsable de contratos ve una nueva fila de versión. Las formas requieren los campos effectiveFrom y approvedBy. La actualización se almacena en el grafo denominado contracts. Una pregunta de soporte pregunta qué términos serán aplicables al día siguiente. El proceso de resolución de entidades accede al IRI del contrato, la consulta a los vecinos devuelve ambas versiones con sus fechas, el prompt incluye únicamente la versión aplicable junto con el origen del cambio, y la respuesta cita el ID de aprobación. El Vector RAG por sí solo podría recuperar el fragmento antiguo en PDF que aún se encuentra en la wiki.

    Patrones de los responsables de contratos

    Descargas con marca de agua JDBC, recorridores del árbol Git para la configuración, recorridores OpenAPI para mapas de servicios, recolectores de etiquetas de métricas en tiempo de ejecución y cargas manuales en CSV para excepciones. Cada patrón necesita claves idempotentes y un sistema de manejo de mensajes no entregados.

    SHACL en lenguaje operativo

    Las formas establecen que: cada contrato debe tener exactamente un estado actual proveniente de un enum; cada PolicyVersion debe apuntar a un hash de bytes; cada Deployment debe hacer referencia a un Service. Las violaciones se convierten en tickets accionables, no en ruido de registros.

    Razonadores

    Utilice la clasificación cuando permita eliminar etiquetado manual duplicado. Evite inferencias complejas en un entorno abierto que generen elementos nuevos. Prefiera reglas SPARQL o SHACL-SPARQL para tareas de mantenimiento en entornos cerrados si OWL sorprende a sus operadores.

    Proyección del grafo de propiedades

    Si los desarrolladores piensan en términos de rutas, exporten el RDF a un grafo de propiedades cada noche para su exploración, manteniendo al mismo tiempo el RDF como fuente de intercambio y validación. Documenten qué predicados se convierten en aristas y cuáles en propiedades.

    Colas de revisión humana

    Algunos predicados siempre requieren la intervención humana: etiquetas de interpretación legal, indicadores de excepciones y fusiones de partes duplicadas. Creen colas con acuerdos de nivel de servicio. El grafo no está completo hasta que esas colas se vacían o se renuncia explícitamente a su revisión.

    Capa de servicio

    Almacenen en caché las serializaciones de los vecinos según (iri, snapshot, hop, hash de lista blanca). Compresen el contenido para consultas rápidas. Eliminen los prefijos no utilizados. Ofrezcan tanto perfiles detallados para depuración como versiones compactas para producción.

    Bocetos de catálogo de herramientas

    • resolve_entity(text, class_hint)
    • get_neighborhood(iri, hops, predicates)
    • diff_snapshots(id_a, id_b, class)
    • list_quarantine(class, since)
  • explain_triple(sujeto, predicado, objeto)
  • Cada herramienta devuelve JSON con información sobre su origen.

    Comparación narrativa de las opciones

    RAG vectorial puro: rápido para demostraciones, pero deficiente en operaciones de unión. Document GraphRAG: ofrece una mejor integración de entidades en dominios con mucho texto narrativo. Recopiladores de ontologías: son los más adecuados cuando los sistemas de registro están estructurados y el significado es transversal. Los equipos más experimentados utilizan una combinación de estos métodos con una jerarquía clara.

    Calendario de gobernanza

    Triage semanal de estructuras, revisión mensual del vocabulario, talleres trimestrales sobre clases y notas de lanzamiento para la versión semántica de las ontologías. Indique las fechas en un calendario gestionado por un responsable designado.

    Seguridad

    Los almacenes de triples contienen relaciones comerciales sensibles. Aplique políticas ACL por cada grafo específico, redacte las instrucciones de servicio de forma segura y nunca incluya datos confidenciales en los prompts. Realice auditorías de las llamadas a las herramientas.

    Ejercicios de respuesta ante fallos

    Dañe intencionadamente un recolector en la fase de pruebas. Verifique que el aislamiento aumente, que los servicios sigan utilizando la última captura de estado válida y que se activen las alertas. Practique la restauración. Si el ejercicio resulta intimidante, la situación en producción será aún peor.

    Integración del segundo subsistema

    Copie la plantilla del recolector, registre un nuevo gráfico con nombre, agregue formas, incluya tres preguntas clave y realice pruebas de escritura paralela durante una semana antes de transferir gradualmente a los asistentes. No intente integrar múltiples subsistemas de golpe.

    Métricas que realmente orientan

    Tasa de respuestas incorrectas en el conjunto de preguntas clave, número medio de pasos necesarios para obtener la respuesta, tasa de aislamiento, retraso del recolector, antigüedad de la captura de estado en el momento de responder y tasa de anulaciones por parte del humano. Las métricas superficiales como el recuento triple engañan.

    Síntesis final sin eslóganes

    La ingeniería de contexto basada en ontologías es un proceso estructurado de compilación de contexto: entidades tipadas, hechos validados, información sobre el origen de los datos y herramientas que obtienen solo la cantidad necesaria de contexto para obtener una respuesta fundamentada. Los embeddings siguen siendo útiles dentro de este enfoque. No sustituyen al conocimiento de qué sistema posee qué significado.