Unificando España en un Grafo: Ingeniería de Datos Semánticos con Wikidata e IGN


Los sistemas de información geográfica tienen enormes capacidades, pero no contamos con un grafo que nos proporcione una arquitectura conceptual que nos permita hacer consultas de alta complejidad sobre datos y estructuras geográficas de España.


A pesar de ser abundante, los datos geográficos sobre España están dispersos (IGN, Wikidata, DBpedia), son incoherentes jerárquicamente y difíciles de consultar en su conjunto. Y sobre todo no tienen una base semántica con la que razonar.


Por eso me propuse crear un Grafo de Conocimiento unificado y normalizado. La ontología más el grafo consiguen que tengamos a nuestra disposición razonamiento semántico geográfico para la totalidad del país.

Un grafo geográfico de este tipo debe permitirnos hacer razonamientos del tipo: Una entidad está ubicada en un lugar, ese lugar tiene un tipo (municipio, localidad) y este último está contenido en otras entidades mayores como una provincia. De ese modo obtenemos mayor contexto geográfico y semántico sobre la primera.


Existen grafos semánticos con mucha información geográfica sobre España pero esta se encuentra inconexa y vagamente jerarquizada:

  • Wikidata: Muy rica fuente de datos, pero las relaciones de dependencia territorial resultan a menudo caóticas.
  • DBpedia: rica en categorías y descripciones, pero sin información geográfica exacta.
  • Tesaruo Geográfico del Ministerio de Cultura: fuente normalizada y oficial, pero sin información geográfica exacta.
  • BTN100: tras su transformación a rdf contiene una gran cantidad de información geográfica exacta, pero sus tipos y clases están aisladas del resto de grafos.


Objetivos del proyecto

  • Construir un grafo homogéneo.
  • Crear una ontología clara y reutilizable.
  • Unificar datos de Wikidata, BTN100, DBpedia y Tesauro MEC.
  • Permitir inferencias geográficas robustas.

Arquitectura y diseño del grafo


Articulación de las clases


La ontología se fundamenta en la superclase Lugar, que unifica cualquier tipo de entidad que podamos ubicar en el espacio geográfico. De ella dependen varias subclases que agrupan conceptualmente las entidades:

  • Asentamiento humano.
  • Lugar Administrativo.
  • Lugar Marítimo y Fluvial.
  • Lugar Transporte.
  • Lugar Montaña.

Las propiedades se mantienen al mínimo que permite la expresividad de relaciones de “contención” entre entidades y sus propiedades inversas.

Decisiones clave de modelado

Como la intención es la creación de un grafo lo más completo posible, creo un modelo híbrido:

  • Administrativo: Siguiendo estándares oficiales (IGN/Eurostat).
  • Físico: Adaptando la flexibilidad de Wikidata.


De este modo conseguimos un modelo donde podemos preguntar, por ejemplo, por ríos o accidentes geográficos ubicados o contenidos en entidades administrativas,
uniendo dos dominios que suelen estar separados en bases de datos relacionales.

Extracción (Wdumper)


Para evitar el coste computacional de procesar el dump completo de Wikidata, implementé una estrategia de slicing semántico usando Wdumper, filtrando solo el subgrafo relevante para la geografía española.

SPARQL avanzado: inserciones masivas y razonamiento jerárquico

Una vez que tenemos los tipos y propiedades gracias a la ontología podemos asignar primero los tipos y después construir las propiedades con eficacia.

El problema de la Jerarquía (P131)

Uno de los mayores retos de Wikidata es la inconsistencia en la propiedad P131 (located in). Para normalizar la jerarquía administrativa española y permitir inferencias transitivas correctas, diseñé una serie de consultas SPARQL de actualización (INSERT/DELETE) que reordenan la cadena de dependencias:

Algoritmo en forma de SPARQL:

Si dos entidades tienen la relación <em>P131: A <P131> B, entonces:</em>

<em>A </em>lugares:Contenida_en_entidades_mayores B y su inversa

B lugares:Posee_entidades_menores BLenguaje del código: HTML, XML (xml)

Si dos entidades tienen la relación <em>P131: A <P131> B y B pertenece a una clase con una propiedad que relaciona a las entidades de la clase a la que pertenece con las entidades de la clase A, entonces,</em>
por ejemplo:
Si
A <P131> B
A rdf:type Lugares:Municipio
B rdf:type Lugares:Provincia
Entonces
A lugares:Esta_contenido_en_Provincia B y su inversa
B lugares:Contiene_Municipios ALenguaje del código: HTML, XML (xml)

Entity Matching multifuente: Wikidata ↔ BTN-100 ↔ DBpedia ↔ Tesauro MEC


Interconectar entidades entre grafos es la mejor forma de garantizar que nuestros datos sean fiables, completos, interoperables y de tener a nuestra disposición la mayor cantidad de información posible.

Se han usado diversas estrategias de reconciliación:

  • Por ID/Estructura: Wikidata ↔ Wikipedia ↔ DBpedia (Mapeo directo). (con método robusto basado en schema:about).
  • Por Texto (Fuzzy): Etiquetas coincidentes con el Tesauro MEC.
  • Wikidata ↔ BTN100 con normalización lingüística.
  • Geosparql (Futuro/Intento): la coincidencia por coordenadas es el siguiente paso lógico para desambiguar lugares con el mismo nombre (ej. «Santa María»).


Tarql : Se utiliza como una herramienta de Rapid Prototyping para convertir CSVs «legacy» a RDF limpio.

Propagación inductiva de propiedades a partir de categorías DBpedia


Dado que Dbpedia incluye como skos:Concept las Categorías de Wikipedia, como medio alternativo a los tipos y clases para subsumir entidades. Vinculé dichas categorías a las entidades el grafo como prueba experimental. Aportando así una capa adicional de relaciones al grafo.

El objetivo es añadir más propiedades a cada categoría. Basadas estas en las entidades que contienen, a través de en un proceso “inductivo” para posteriormente rescatar mayor cantidad de entidades de las que posee la categoría originalmente.


Con la búsqueda de texto: “Camino de Santiago Francés”, accedemos a entidades del grafo que han quedado vinculadas a dicha categoría, en este caso localidades por las que cruza.

Resultados del proyecto

  • 120.000 lugares integrados y armonizados.
  • 100 clases ontológicas.
  • 17 propiedades de objeto consolidadas.
  • Jerarquías corregidas y unificadas.

Implementación Web


Se implementa una aplicación web donde visualizar los datos y relaciones del grafo. Utiliza las librerías leaftlet.js para mapas, Wicket.js (una biblioteca ligera de Javascript que lee y escribe cadenas de texto bien conocido (WKT)) Vis.js para visualizaciones y Yasgui para implementar un punto SPARQL donde realizar consultas.

Inferencias semánticas que ahora son posibles

Aplicaciones prácticas

  • Análisis territorial avanzado.
  • Cruce con datos inmobiliarios, turísticos, comerciales, logísticos.
  • Visualización geográfica semántica.
  • Motores de recomendación basados en grafos.
  • Análisis Inmobiliario.
  • Rutas óptimas basadas en semántica.
  • Turismo inteligente.
  • Análisis de mercado.
  • Cross-selling geolocalizado.
  • Visualización territorial para GIS.
  • Análisis de accesibilidad.
  • Catálogos inmobiliarios basados en contexto semántico.
  • Sistemas de recomendación.
  • Periodismo de Datos.

Próximos pasos

  • GeoSPARQL.
  • Inferencias espaciales.
  • Validación SHACL.
  • Publicar un endpoint.
  • Herramientas de visualización.

Conclusión

  • No existe un grafo geográfico unificado de España tan completo.
  • Fusiona fuentes oficiales, crowdsourced y académicas.
    • BTN100 = oficial
    • Wikidata = colaborativa
    • DBpedia = académica
    • Tesauro MEC = institucional cultural
  • Se implementan técnicas de alto nivel
    • Ontología sólida
    • SPARQL avanzado
    • Entity linking
    • Limpieza semántica
    • Normalización multifuente
    • Razonamiento territorial

¿Necesitas integrar datos heterogéneos en tu organización? Contacta conmigo.

Enlaces a recursos

Estadísticas

TipoNúmero de entidadesDbpedia sameAsTesauros sameAsBTN sameAs
lugares:Lugar120.50143.06938.48074.698
lugares:Asentamiento_Humano70.0667.13012.15515.484
lugares:Lugar_Administrativo11.0549.7447.0668.876
lugares:Lugar_Marítimo_y_Fluvial19.3081.27782.009
lugares:Lugar_Transporte6.2051.647
7.703
lugares:Lugar_Montaña1.45716711516

Comentarios

Deja una respuesta

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