Recursos y herramientas
3Recursos de grafos → uso concreto
Mapa de cada recurso de grafos al punto donde lo apliqué, con un ejemplo real. El TFM es RDF-céntrico por diseño: resuelvo el razonamiento con owlrl, la validación con SHACL (pyshacl) y las consultas con SPARQL sobre rdflib, y dejo GraphDB cargable con su script REST. El flujo completo se reproduce con el cuaderno EKG-Python-proyecto-completo.ipynb y cubre 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..10 + 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 reproducible con cargar_graphdb.py | 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) | — | fuera del foco RDF del TFM; el grafo se re-expresa en Cypher (ver "Property graph") | parcial |
| Jupyter | notebook/EKG-Python-proyecto-completo.ipynb | cuaderno reproducible (RDFLib + owlrl + consultas SPARQL + 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. Para las de interfaz gráfica (Protégé, GraphDB Workbench, RDFShape, Arrows) documento en el anexo de reproducibilidad los pasos y las capturas que ilustran su uso.
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 EKG-Python-proyecto-completo.ipynb (ejecutado en Colab).
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) usado
Carga reproducible con ruleset OWL2-RL (scripts/cargar_graphdb.py, README-GraphDB.md); sobre el grafo canónico, el Workbench de GraphDB muestra los 157 conceptos y los 4786 triples inferidos, según el anexo de reproducibilidad.
Property graph (Neo4j / Cypher / Arrows) usado
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 por diseño.
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 usado
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. El árbol de clases puede abrirse en Protégé siguiendo el anexo de reproducibilidad.
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 EKG-Python-proyecto-completo.ipynb (RDFLib + owlrl + consultas SPARQL + SHACL), ejecutado en Google 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
# 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").
3·cCapturas de las herramientas en uso
Estas capturas documentan el uso real de las herramientas de la asignatura sobre los artefactos del proyecto: el modelado y el razonamiento en Protégé, la validación de integridad con SHACL, la consulta y el cierre OWL 2 RL en GraphDB, y la re-expresión del grafo como grafo de propiedades en Neo4j.

owl:Thing y skos:Concept).





:Concepto, 188 aristas :REQUIERE/:CONTRASTA).Si este trabajo te resulta útil y quieres referenciarlo, esta es la cita recomendada.
Bueno Junquero, A. (2026). Integración de grafos de conocimiento educativos con modelos de lenguaje masivos mediante arquitecturas RAG para evaluación personalizada en la enseñanza de programación. Trabajo Fin de Máster, Máster Universitario en Investigación en Inteligencia Artificial, UNED. Director, José Luis Fernández Vindel.