Conectando pasado y presente: Un Viaje de SKOS a SPARQL por la Toponimia Histórica de España

¿No sería interesante poder visualizar en un mapa los nombres históricos de los lugares, ciudades y asentamientos de la Península Ibérica, las Islas Canarias y Baleares? ¿Filtrar por épocas y culturas y conocer los nombres con que llamaban los antiguos pobladores al lugar donde vivían?

Ese es el objetivo central de este proyecto: construir un grafo unificado de toponimia histórica, conectando con los Tesauros MEC, con Wikidata, con mi ontología de lugares de España y con mi grafo de monumentos, para permitir exploraciones semánticas avanzadas y visualización geográfica en tiempo real.


El Problema y el Objetivo


Los tesauros MEC incluyen vinculación (LOD) hacia dbpedia en inglés, geonames, Getty Vocabularies, Linked Data Service de la Bbiblioteca del Congreso de EEUU y un largo etc de otros tesauros y vocabularios controlados.


«59070 resultados para la propiedad skos:closeMatch»

Sin embargo, los Tesauros MEC no incluyen directamente coordenadas geográficas que podamos usar para proyectar en un mapa. La dificultad, por tanto, estriba en vincular los datos culturales aislados (Tesauros) con datos geográficos actuales (Wikidata/Grafo) para darles un uso práctico.


Definición de los Tesauros Mec

Los Tesauros MEC del Ministerio de Cultura son vocabularios controlados basados en SKOS, diseñados para evitar ambigüedades terminológicas (sinónimos, polisemia…) y describir con precisión entidades culturales.

En este proyecto empleo especialmente dos:


El Tesauro de Toponimia Histórica contiene 1.191 conceptos, y son estos los que pretendemos geolocalizar. De los 1.191 algunos son divisiones territoriales que no podemos vincular con ninguna actual.


De ellos, 1.132 son efectivamente entidades que podemos vincular puntualmente con lugares actuales (ciudades antiguas, asentamientos, topónimos). Y 884 incluyen ya una vinculación con el Tesauro Geográfico mediante skos:relatedMatch.


El Tesauro Geográfico, por su parte, posee 45.847 conceptos skos, referidos a entidades geográficas del mundo. Un futuro proyecto podría consistir en vincular completamente todos los conceptos a Wikidata y Dbpedia. De momento nos centraremos en los que refieren a España.


Preparación: cargando los RDF en Apache Jena Fuseki


Para poder realizar consultas y transformaciones con libertad, creo un dataset TDB2 en Apache Jena Fuseki, donde cargo los RDF de los tesauros previamente descargados de aquí.

Una vez cargados, analizo su estructura SKOS y las propiedades que conectan Toponimia Histórica con el Tesauro Geográfico. La clave aquí es skos:relatedMatch, que utilizo como base para construir relaciones semánticas más funcionales para adaptarse a este y a otros de mis proyectos.

A partir de aquí ya podríamos realizar una consulta que salte entre grafos y servicios SPARQL para rescatar las coordenadas del lugar actual donde se encontraba el lugar histórico.

El Desafío: Conectar Mundos Distintos

El Tesauro de Toponimia Histórica utiliza la propiedad skos:relatedMatch para vincular conceptos históricos (ej. «al-Faray») con sus equivalentes geográficos actuales dentro del propio catálogo de tesauros del MEC. Sin embargo, este último carece de información espacial de alta calidad (coordenadas, jerarquía administrativa) necesaria para la visualización en un mapa.

La solución fue establecer un puente hacia el Grafo de Lugares de España (alineado con Wikidata), que sí contiene las propiedades geográficas y espaciales clave (como wdt:P625 para coordenadas, y relaciones de contención provincial/autonómica).

Metodología de Emparejamiento (Entity Matching)


Para lograr esta interconexión vital, se aplicó una metodología en dos pasos que capitaliza la vinculación existente en el Tesauro y la extiende al ecosistema LOD:

  1. Transformación Interna y Reclasificación.
    • Identificación y Filtrado: Se filtraron los 884 conceptos de tipo lugares:Lugar_Histórico que poseían la propiedad skos:relatedMatch con el Tesauro Geográfico.
    • Creación de la Propiedad Semántica: La propiedad skos:relatedMatch fue transformada en la nueva propiedad lugares:Se_refiere_a_lugar_actual. Esto no es solo un cambio de nombre; es una promoción semántica que reinterpreta una relación léxica (SKOS) como una relación ontológica de referencia.
  2. La Vinculación Crítica con Wikidata (owl:sameAs)
    • Heurísticas de Vinculación: Se emplearon heurísticas (basadas en coincidencia de etiquetas preferentes y, donde era posible, coordenadas geográficas si estaban disponibles) para asegurar la máxima precisión.
    • Resultado: Se generaron 913 relaciones owl:sameAs, formalizando la equivalencia entre las entidades.

Este fue el paso esencial que transformó el dataset en Linked Open Data. Utilizando la lista de los 884 lugares geográficos de referencia (ya seleccionados en el paso anterior), se ejecutó el proceso de Entity Matching para conectarlos con el Grafo de Lugares de España, que está alineado con Wikidata.

Ejemplo de Creación de LOD:


<http://tesauros.mecd.es/tesauros/geografico/1128352> owl:sameAs <http://www.wikidata.org/entity/Q23982870> .Lenguaje del código: HTML, XML (xml)

Creación de la Propiedad Inversa y la Federación de Consultas


Al establecer la relación owl:sameAs, el valor real de este proceso se desbloqueó:

  1. Conexión de Coordenadas: Ahora, una consulta puede saltar del nombre histórico (al-Faray) a la entidad de referencia del Tesauro, luego a su entidad equivalente en Wikidata (owl:sameAs) y, finalmente, rescatar la coordenada precisa (wdt:P625).
  2. Habilitación de la Bidireccionalidad: Se diseñó y construyó la propiedad inversa lugares:Tiene_nombre_histórico mediante una consulta CONSTRUCT en SPARQL:
construct {
   ?a lugares:Tiene_nombre_histórico ?b
 }
      WHERE {
      ?b a lugares:Lugar_Histórico.
      ?b lugares:Se_refiere_a_lugar_actual ?lugartesauro.
      ?lugartesauro owl:sameAs ?a.
 }


Esta propiedad inversa es fundamental. Permite que cualquier lugar actual en el mapa sea consultado para descubrir los nombres históricos que se le atribuyeron a lo largo del tiempo, facilitando la exploración de datos y la creación de la interfaz de usuario.

El emparejamiento de entidades fue la llave para transformar un conjunto de datos estático y aislado en un recurso dinámico y federable, base de la potente capacidad de exploración semántica del proyecto.

Esto abre la puerta a las consultas de doble salto:

Lugar histórico → lugar actual → coordenadas.

lugar actual → coordenadas →Lugar histórico


Alineación con mi ontología de Edades y Culturas Arqueológicas


El Tesauro de Toponimia Histórica utiliza skos:narrower, skos:broader y skos:member como mecanismos de agrupación semántica. Ejemplo: Antigüedad tardía reúne bajo sí multitud de topónimos.

Aprovecho esta estructura para integrarla con mis propias clases:

  • monu:Antigüedad_tardía
  • (y el resto de Edades y Culturas Arqueológicas)

Creo nuevas propiedades semánticas:

  • lugares:LugHistóricoÉpoca
  • lugares:LugHistóricoCultura


Ejemplo de construcción:

CONSTRUCT {
  ?b a lugares:Lugar_Histórico ;
     lugares:LugHistóricoÉpoca monu:Antigüedad_tardía .
}
WHERE {
  <http://tesauros.mecd.es/tesauros/toponimiahistorica/faceta/1211794> skos:member ?b .
}Lenguaje del código: HTML, XML (xml)


Rindiéndonos resultados como este:

<http://tesauros.mecd.es/tesauros/toponimiahistorica/1212861>
        a                          lugares:Lugar_Histórico ;
        lugares:LugHistóricoÉpoca  monu:Antigüedad_tardía .Lenguaje del código: HTML, XML (xml)

Cada concepto en la ontología de monumentos tiene sus descripciones que se utilizan en la aplicación web, como texto descriptivo.

Generamos dos propiedades adicionales, que nos permiten agrupar directamente desde nuestros conceptos de Edades y Culturas arqueológicas y señalar los lugares históricos:

  • monu:Cultura_Arque_tiene_Lugares_Históricos
  • monu:Epoca_tiene_Lugares_Históricos


Búsqueda por Comunidades Autónomas gracias a la ontología de lugares

La capacidad semántica de la ontología de lugares de España nos va a permitir hacer búsquedas de lugares históricos por Comunidades Autónomas, aunque también podría hacerse por Provincias…

Mi ontología de geográfica permite inferir pertenencias jerárquicas:

  • lugar → municipio
  • municipio → provincia
  • provincia → CCAA

Gracias a estas relaciones, puedo recuperar todos los lugares históricos situados dentro de una Comunidad Autónoma, aunque su ubicación provenga de diferentes rutas jerárquicas (P131, capitalidad, contención semántica…).

La consulta lo hace de forma sistemática recorriendo todas las vías de inferencia. Buscando sistemáticamente cualquier lugar actual que esté situado dentro de la Comunidad Autónoma utilizando para ello las propiedades de la Ontología de Lugares de España.


Hispania Romana: visualización de asentamientos por provincias romanas


También podemos visualizar los asentamientos de la época romana dentro de las propias divisiones administrativas de la época. Aprovecho para construir y utilizar Posee_entidades_menores a partir de las relaciones skos: del Tesauro de Toponimia Histórica.

Construyo relaciones del tipo:

lugares:Posee_entidades_menoresLenguaje del código: CSS (css)

Para representar provincias o regiones romanas del Tesauro de Toponimia Histórica y sus ciudades subordinadas.

Esto permite ver, por ejemplo:

Las ciudades romanas asociadas a la provincia Carthaginensis, y su correspondencia actual en el mapa.


¿Qué restos (monumentos) estuvieron en qué ciudades antiguas?


Como experimento de razonamiento deductivo semántico me propuse cruzar el grafo de monumentos con los lugares históricos con el fin de intentar crear una relación entre esos lugares históricos y los restos que pudieron haber pertenecido a esa ciudad o asentamiento y que tenemos ubicados en sus lugares actuales.

Como experimento, cruzo:

  • Mi grafo de monumentos.
  • Mi grafo de lugares actuales.
  • Mi grafo de lugares históricos.
  • Las Edades/Culturas arqueológicas.

La lógica es:

  • Un monumento está situado en un lugar actual.
  • Ese monumento pertenece a una época histórica.
  • Un lugar histórico también pertenece a la misma época.
  • Por tanto, probablemente ese monumento estuvo en ese asentamiento histórico.

Consulta:

SELECT *
WHERE {
  ?a a monu:Sitio_de_interés ;
     monu:Esta_situado_en ?b ;
     monu:Monumento_tiene_epoca ?epoca .
  SERVICE <https://javiermurcia.tech/fuseki/Lugares-Historicos/> {
    ?b lugares:Tiene_nombre_histórico ?nomhisto .
    ?nomhisto lugares:LugHistóricoÉpoca ?epoca .
  }
}Lenguaje del código: HTML, XML (xml)

Se obtienen 2.594 posibles emparejamientos. No todos son perfectos, pero muchos son sorprendentemente plausibles.

Con este experimento de inferencia he intentado ir más allá de la vinculación directa y aplicar razonamiento deductivo (mediante constructs o queries con patrones complejos) para descubrir nuevas relaciones (monu:Estuvo_situado_en).

En efecto, la calidad del razonamiento depende de la granularidad y la consistencia de las ontologías de origen, lo que abre una línea de trabajo futuro para aplicar reglas de inferencia más sofisticadas.

Visualización y acceso público

  • Leaflet para mapas interactivos
  • YASGUI para ejecutar consultas SPARQL en la web


Métricas de Vinculación y Curación

Conceptos skos en Tesauro Toponimia Histórica1191
Con relación skos:relatedMatch a Tesauro Geográfico884
Con la propiedad lugares:Se_refiere_a_lugar_actual vinculados913


Conclusión: un proyecto que une semántica, arqueología y territorio


Este proyecto demuestra el potencial de la web semántica y el modelado ontológico para:

  • Recuperar memoria histórica del territorio.
  • Integrar datos dispersos en un grafo coherente.
  • Permitir exploración geográfica avanzada.
  • Establecer conexiones nuevas entre lugares, culturas y épocas.
  • Generar conocimiento inédito mediante razonamiento semántico.

Los datos y los constructs generados están disponibles públicamente.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *