Recursos y herramientas
3Recursos de grafos → uso concreto
Mapa de cada recurso de grafos al lugar donde se usó, con un ejemplo real. Se declaran los huecos sin inflar, a saber, Neo4j/Cypher no se abordó (TFM RDF-céntrico), Protégé/Owlready2 quedó sustituido por owlrl, ShEx por SHACL y GraphDB está listo pero no desplegado en vivo. El flujo además se incluye como cuaderno Jupyter reproducible (notebook/ekg.ipynb). La fuerza está en lo que sí se hizo: RDF/RDFS/Turtle/SPARQL/OWL-RL/SHACL/SKOS/Wikidata/VoID.
| Recurso | Dónde | Ejemplo | Estado |
|---|---|---|---|
| RDF 1.1 (triples, IRIs) | ekg-python-150.ttl | 1772 triples sujeto-predicado-objeto con URIs pyedu:/pyr: | usado |
| RDF Schema 1.1 (clases, dominio/rango) | TBox + consulta 02 | rdfs:domain/range; inferencia por rdfs:subClassOf | usado |
| Turtle | ekg-python-150.ttl | serialización canónica legible (1772 triples) | usado |
| SPARQL 1.1 (SELECT, paths, CONSTRUCT) | consultas/01..08 + rag_ekg.py | requierePrerrequisito+ (03), CONSTRUCT (06), federada (08) | usado |
| OWL 2 RL (inferencia) | scripts/inferir.py (owlrl) | contraste 0→157 y 1772→4786 | usado |
| SHACL | validar.py + shapes-ekg.ttl | 10 NodeShapes; conforme (0) vs 6 violaciones | usado |
| JSON-LD 1.1 | exportar.py → ekg-python.jsonld | round-trip del canónico | usado |
| Wikidata Query Service (federada + enlace) | consulta 08 + resolver_wikidata*.py | 30 skos:exactMatch (no owl:sameAs) | usado |
| RDFLib | todos los scripts del grafo | Graph().parse/serialize | usado |
| MyST Markdown | memorias/*/myst.yml | memorias → web/PDF/DOCX | usado |
| GraphDB | cargar_graphdb.py + README-GraphDB | cliente REST, ruleset owl2-rl; carga lista, no desplegado en vivo | parcial |
| Protégé / Owlready2 | — | razonamiento hecho con owlrl; sin flujo Protégé/Owlready2 | parcial |
| ShEx | — | la validación de formas se hizo con SHACL | hueco |
| Neo4j / Cypher (property graphs) | — | no abordado: el TFM es RDF-céntrico (declarado) | hueco |
| Jupyter | notebook/ekg.ipynb | cuaderno reproducible (RDFLib + owlrl + 8 consultas + SHACL); el flujo también corre por scripts .py | usado |
usado · parcial · hueco declarado
3·bHerramientas de grafos del proyecto
Cada herramienta del temario, con su papel real en el proyecto y los huecos (lo que se exploró como alternativa pero no se desplegó). Las capturas de las herramientas con interfaz gráfica (Protégé, GraphDB Workbench, RDFShape, Arrows) las inserta el autor siguiendo los snippets y las instrucciones del anexo de reproducibilidad.
RDFLib + owlrl + pyshacl usado
Núcleo del entregable: parseo, inferencia OWL-RL (1772→4786) y validación SHACL (0/6). Reproducible con scripts/*.py y el cuaderno notebook/ekg.ipynb.
Wikidata Query Service usado
Consulta federada SERVICE a Wikidata; 30 skos:exactMatch verificados, 20 con descripción en español (ver grafo "Federado").
GraphDB (Ontotext) parcial
Carga reproducible con ruleset OWL2-RL (scripts/cargar_graphdb.py, README-GraphDB.md); el grafo canónico da 157 conceptos y 4786 inferidos. Despliegue en vivo no incluido — captura del Workbench pendiente del autor.
Property graph (Neo4j / Cypher / Arrows) parcial
El EKG se re-expresa como grafo de propiedades (ver grafo "Property graph"). El Cypher equivalente se genera en salidas/grafos/ekg_lpg.cypher; el TFM es RDF-céntrico (decisión declarada).
MATCH (c:Concepto)-[:REQUIERE]->(p:Concepto) RETURN c,pShEx + RDFShape parcial
Esquema ShEx equivalente a dos NodeShapes en ontologia/ekg-shapes.shex, validable en RDFShape; la validación efectiva del entregable usa SHACL (pyshacl).
Protégé + OWLViz / owlready2 hueco declarado
Editor y razonador de ontologías. El razonamiento se realizó con owlrl (perfil OWL 2 RL); la edición de la TBox se hizo en Turtle. Captura del árbol de clases en Protégé pendiente del autor (hueco declarado).
RDF Playground parcial
Editor en línea para ilustrar inferencia OWL/RDFS; el contraste 0→157 se reproduce también en su pestaña OWL.
Jupyter / Colab usado
Cuaderno reproducible notebook/ekg.ipynb (RDFLib + owlrl + 8 consultas + SHACL) con badge Colab.
Nobel Prize / SPARQLWrapper hueco declarado
Endpoint público para practicar SPARQL federado. La federación del entregable apunta a Wikidata; la consulta a Nobel con SPARQLWrapper queda como ejemplo (requiere red).
from SPARQLWrapper import SPARQLWrapper, JSON\n# endpoint = 'https://data.nobelprize.org/sparql'Nube LOD / LOV parcial
El grafo se sitúa en la Web de Datos, donde reutiliza 6 vocabularios (RDFS, OWL, SKOS, DC, FOAF, schema.org) y enlaza a Wikidata (ver grafo "Vocabularios / LOD").
Si este trabajo te resulta útil y quieres referenciarlo, esta es la cita recomendada.
Bueno Junquero, A. (2026). Integración de un grafo de conocimiento educativo con un LLM mediante RAG. Trabajo Fin de Máster, Máster Universitario en Investigación en Inteligencia Artificial, UNED. Director, José Luis Fernández Vindel.