Enlazado a Wikidata
Conecté el grafo del proyecto con la red de datos abiertos enlazando treinta de sus conceptos con sus entidades equivalentes en Wikidata. Aquí cuento cómo lo hice, qué consulta federada llegué a ejecutar y por qué este puente con datos abiertos aporta interoperabilidad real, no un adorno.
1Treinta enlaces a Wikidata
Para cada concepto del grafo que tiene una contraparte clara en la web de datos, declaré un enlace
skos:exactMatch hacia su entidad en Wikidata. En total verifiqué treinta de estos
enlaces sobre el grafo canónico ekg-python-150.ttl, por encima del mínimo de quince que me había
fijado en el anteproyecto.
skos:exactMatch verificadosElegí skos:exactMatch y no owl:sameAs de forma deliberada. La diferencia parece menor,
pero es semántica y tiene consecuencias en la inferencia.
skos:exactMatch, no owl:sameAsCon owl:sameAs el razonador OWL 2 RL fusionaría mi concepto con la entidad de Wikidata y le
heredaría todas sus afirmaciones. Con skos:exactMatch declaro una correspondencia conceptual fuerte
sin esa fusión. Por eso la consulta ?x a pyedu:Concepto con inferencia devuelve 157,
solo mis conceptos propios, y las treinta entidades de Wikidata no se infieren como concepto del
grafo.
skos:exactMatch a su entidad de
Wikidata; desde esa entidad se alcanzan sus identificadores externos y su descripción en español
(representación esquemática con la paleta del proyecto).2La consulta federada que ejecuté
El enlace no es decorativo. Lo puse a trabajar con una consulta federada SPARQL real. La
consulta 08_federada_wikidata.rq recorre cada concepto enlazado, salta en vivo al endpoint público
de Wikidata mediante SERVICE y trae de vuelta la descripción en español de la entidad equivalente.
Ejecutada contra el endpoint, devolvió veinte filas reales.
PREFIX pyedu: <https://w3id.org/ekg-python/schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?concepto ?etiqueta ?descripcionWikidata WHERE {
?concepto skos:exactMatch ?wd ; rdfs:label ?etiqueta .
FILTER(LANG(?etiqueta) = "es")
SERVICE <https://query.wikidata.org/sparql> {
?wd schema:description ?descripcionWikidata .
FILTER(LANG(?descripcionWikidata) = "es")
}
}
# → 20 filas. Ej.: python → "lenguaje de programación de alto nivel"
| Concepto del grafo | Entidad Wikidata | Descripción en español (Wikidata) |
|---|---|---|
| Python | wd:Q28865 | lenguaje de programación de alto nivel |
| Búsqueda binaria | wd:Q243754 | algoritmo de búsqueda |
| Recursión | wd:Q264164 | método en ciencias de computación |
| Diccionario | wd:Q1379956 | estructura de datos que asocia claves con valores |
| Herencia | wd:Q272071 | concepto en informática |
Las etiquetas de entidad (wd:Q…) corresponden a las
entidades enlazadas en el grafo; las descripciones son las que el endpoint de Wikidata devolvió en español. La
consulta trae veinte descripciones porque no toda entidad enlazada publica una descripción en español.
Con una sola consulta combino datos de mi grafo local (qué conceptos enlazo y con qué etiqueta) con datos que viven en Wikidata (la descripción), sin copiar Wikidata a mi disco. Eso es justo lo que prometen los datos enlazados: cruzar fuentes distintas en tiempo de consulta gracias a un identificador compartido.
3Reutilizar identificadores externos
La pieza que hace posible todo lo anterior es el identificador externo. En lugar de inventar
un nombre propio y aislado para "Recursión", reutilizo el identificador que Wikidata ya mantiene para ese mismo
concepto, wd:Q264164. Reutilizar identificadores estables y públicos en vez de acuñar los míos es lo
que evita las islas de datos y permite que terceros reconozcan de qué hablo.
Apoyado en esa reutilización, el grafo no se queda solo en su esquema propio. También reutiliza vocabularios
estándar y publica su enlace con Wikidata como un linkset declarado en su descripción
void.ttl (Vocabulary of Interlinked Datasets), para que el puente sea descubrible y no quede
implícito.
Linkset a Wikidata (void:linkPredicate skos:exactMatch) | 30 enlaces |
Entidades del conjunto (void:entities) | 157 |
Triples afirmados (void:triples) | 1772 |
| Vocabularios reutilizados | RDFS, OWL, SKOS, Dublin Core, FOAF, schema.org |
| Licencia | CC BY 4.0 |
Reutilizar identificadores y vocabularios ajenos no es pereza, es interoperabilidad. Cada identificador compartido es un punto de anclaje por el que mi grafo se enlaza con el resto de la web de datos.
4Por qué esto aporta interoperabilidad
Enlazar a datos abiertos cambia lo que mi grafo puede hacer. Sin enlace, "Recursión" es solo una cadena de
texto dentro de mi esquema, que nadie de fuera sabe interpretar. Con el enlace skos:exactMatch a
wd:Q264164, ese mismo concepto pasa a estar identificado de forma que cualquier sistema que conozca
Wikidata lo reconoce sin que tengamos que ponernos de acuerdo de antemano.
De esa interoperabilidad salen ventajas concretas. Puedo enriquecer mis conceptos con descripciones,
etiquetas en otros idiomas o relaciones que vivan en Wikidata, en tiempo de consulta y sin duplicar esos datos.
Otra persona puede combinar mi grafo con el suyo apoyándose en los identificadores comunes. Y la procedencia
queda clara, porque cada enlace dice con qué entidad pública se corresponde cada concepto. El uso
deliberado de skos:exactMatch mantiene esa apertura sin contaminar mi modelo con inferencias que no
quiero, que era justo el equilibrio que buscaba.
Treinta enlaces skos:exactMatch, una consulta federada que los pone a trabajar y la reutilización
de identificadores externos convierten un grafo cerrado en un nodo de la web de datos abiertos, interoperable y
enriquecible sin copiar nada.
5Ver también
El grafo de conocimiento
La Grafoteca interactiva, el Turtle del EKG, la consulta federada en su contexto y la descripción FAIR void.ttl con el linkset a Wikidata.
Sistema RAG y fine-tuning
Cómo el grafo enlazado se convierte en contexto del sistema RAG que genera la retroalimentación de código.
Recursos y herramientas
El mapa de cada recurso de grafos a su uso concreto, con los huecos declarados.
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.