Datos enlazados (Linked Open Data)
Para el W3C, el concepto Linked Open Data (Datos enlazados) es la forma que tiene la Web Semántica de vincular los datos que están distribuidos
por toda la Web.
En el siguiente enlace podemos ver un diagrama con las bases
de datos públicas y la representación de las relaciones entre ellas. Es decir,
podemos ver la manera en que las bases de datos se apoyan en otras bases de
datos enlazado la información de ambas para aprovecharse de la reutilización de información común.
Almacenamiento de datos
Para poder compartir toda esta información con el resto de la Web, es necesario seleccionar un
destino para almacenar nuestros ficheros de texto RDF o grafos RDF. Estos
almacenamientos son conocidos como “triple store”.
A grandes rasgos, tenemos
dos opciones:
- Base de datos relacionales: Son las Bbdd más comúnmente utilizadas. En este caso la información se organiza en tablas y cada tabla tiene un conjunto de campos que la definen. Algunas de las Bbdd más conocidas son Oracle, MySql, Postgresql o SqlServer.
- Base de datos de grafos: La razón que nos lleva a utilizar este tipo de bases de datos es que la importancia reside en las relaciones entre entidades. En estas bases de datos las información se organiza en grafos con nodos que representan las entidades y aristas que representan las relaciones. Algunas de las Bbdd más conocidas son Neo4J InfoGrid o AllegroGraph .
Existen algunas bases de datos públicas RDF:
- La dbpedia es una base de datos que expone la información accesible desde la Wikipedia en formato rdf.
- La Imdb es una base de datos con información referentes a películas y contenido audiovisual.
Acceso de datos
SPARQL es una recomendación
del W3C para consultar los datos RDF de un almacén de datos.
Muchas de las Bases de datos RDF públicas permiten consultar sus datos mediante un servicio Web denominado punto
de entrada (endpoint).
Este servicio Web permite a las
organizaciones que generan los datos publicarlos y ofrecer una forma para
acceder a ellos.
Podemos consultar los datos desde el punto de entrada (endpoint) mediante el lenguaje SPARQL. Algunos ejemplos son:
- Punto de entrada a la dbpedia.
- Punto de entrada a la dbpedia en español.
- Punto de entrada a los datos públicos del ayuntamiento de Zaragoza.
También podemos acceder a los
datos en algunos casos utilizando el navegador para acceder a toda la información de un recurso de manera visual. Ejemplo: El recurso España de la dbpedia
Dados los siguientes triples RDF extraídos de la dbpedia vamos a realizar consultas basadas en esta información.
@prefix rdf: https://www.w3.org/1999/02/22-rdf-syntax-ns# @prefix rdfs: http://www.w3.org/2000/01/rdf−schema# @prefix dbprop: http://dbpedia.org/property . @prefix dbpedia-owl: http://dbpedia.org/ontology . @prefix dbpedia: http://dbpedia.org/resource . dbpedia:Madrid rdf:type dbpedia-owl:Place . dbpedia:Madrid dbpedia-owl:country dbpedia:España . dbpedia:Madrid dbprop:capital dbpedia:España . dbpedia:Madrid foaf:name "Madrid"@es dbpedia:España rdf:type dbpedia-owl:Country .
Consulta SPARQL
SELECT y WHERE son palabras reservadas del lenguaje
Encabezado de consulta está
formado por una lista de variables que representan la respuesta de la consulta.
Patrón de consulta es una lista
de triples RDF que sigue la estructura sujeto-predicado-objeto y puede contener
variables.
Una variable comienza con el
símbolo de interrogación seguido de un identificador “?”
Resultado de la consulta se
obtiene reemplazando cada variable por un URI del grafo que representa nuestro
modelo de dominio. Veámoslo con un ejemplo:
select ?X ?nombre where { ?X dbpedia-owl:country dbpedia:Spain . ?X rdf:type dbpedia-owl:Place . ?X foaf:name ?nombre } LIMIT 50
- La variable ?X puede ser reemplazada por el URI dbpedia:Madrid.
- La variable ?nombre puede ser reemplazada por el literal "Madrid"@es.
- Así sucesivamente con todos los reemplazos de variables que coincidan con los triples RDF indicados en el patrón de consulta.
La lista completa de
la consulta anterior la podemos obtener en diferentes formatos rdf
o formato html
Operador AND
Se utiliza para expresar la
conjunción de patrones y se representa mediante el carácter punto “.”
Operador SELECT
Se utiliza para indicar el
resultado de nuestra consulta. Después de la palabra reservada SELECT
indicaremos las variables que representan a los datos que queremos obtener.
Operador FILTER
Permite filtrar los resultados de
la consulta añadiendo algunas condiciones.
Por ejemplo, la siguiente consulta muestra
todos los recursos de tipo Lugar en España y para cada uno de ellos muestra la URI del recurso, el nombre y la población.
select ?lugar ?nombre ?poblacion where { ?lugar rdf:type dbpedia-owl:Place . ?lugar dbpedia-owl:country dbpedia:Spain . ?lugar foaf:name ?nombre . ?lugar dbpedia-owl:populationTotal ?poblacion . }
Sobre la consulta anterior podemos
añadir un filtro para obtener los lugares cuya población es mayor.
select ?lugar ?nombre ?poblacion where { ?lugar rdf:type dbpedia-owl:Place . ?lugar dbpedia-owl:country dbpedia:España . ?lugar foaf:name ?nombre . ?lugar dbpedia-owl:populationTotal ?poblacion . filter (?poblacion > 1000000) . }
Además podemos añadir una conjunción de
condiciones al filtro usando el operador “&&”.
filter (?poblacion > 1000000 && ?nombre = "Asturias"@es) .
También
podemos añadir una disyunción de condiciones usando el operador “||”
filter (?poblacion > 1000000 || ?nombre = "Bayas"@es) .
Operador OPTIONAL
Permite obtener los datos en el
caso de que la información no esté completa. Es especialmente útil en el
contexto de la web semántica porque en numerosas ocasiones los datos están
incompletos.
select ?lugar ?nombre ?alcalde where { ?lugar rdf:type dbpedia-owl:Place . ?lugar dbpedia-owl:country dbpedia:España . ?lugar foaf:name ?nombre . OPTIONAL {?lugar dbpedia-owl:mayor ?alcalde .} }
Operador UNION
Permite hacer la unión de un
conjunto de resultados. Por ejemplo podemos obtener información de lugares de
la provincia de Madrid unido a los lugares de Portugal.
select ?lugar ?nombre ?pais where { ?lugar rdf:type dbpedia-owl:Place . ?lugar foaf:name ?nombre . ?lugar dbpedia-owl:country ?pais . {?lugar dbpedia-owl:province dbpedia:Comunidad_de_Madrid .} UNION {?lugar dbpedia-owl:country dbpedia:Portugal . }}
Operador CONSTRUCT
Permite obtener los resultados de
la consulta en forma de Grafo RDF en lugar de obtener la respuesta como una
tabla.
Es útil por ejemplo para redefinir las URI definida por la una base de datos externa. En el siguiente ejemplo modificamos la URI definida por la dbpedia por una que nos gusta más.
CONSTRUCT{ ?lugar ex:alcalde ?alcalde } where { ?lugar rdf:type dbpedia-owl:Place . ?lugar dbpedia-owl:country dbpedia:España . ?lugar foaf:name ?nombre . OPTIONAL {?lugar dbpedia-owl:mayor ?alcalde .} }
Funciones
Son operadores que se utilizan
normalmente dentro de un FILTER. Vamos a ver las funciones más útiles a
continuación.
isIRI: Verifica si el resultado es
una URI.
isLiteral: Verifica si el
resultado es un literal.
bound: Verifica si existe un
resultado.
En anteriores artículos:
Suscríbete al boletín de novedades
En próximos artículos:
- Damos por finalizado este bloque sobre la Web Semántica.
- Si te han gustado los contenidos y quieres aprender mas... Haznos llegar tus inquietudes, comentarios, dudas y sugerencias.
- Tenemos muchos más contenidos sobre la web semántica y nos gustaría compartirlos: Lenguaje de ontologías OWL, características avanzadas del lenguaje SPARQL 1.1, principales herramientas de desarrollo para trabajar con la web semántica, ejemplos de aplicaciones reales de la web semántica y otros ...
No hay comentarios:
Publicar un comentario