SPARQL
Definición
SPARQL es un acrónimo recursivo del inglés SPARQL Protocol and RDF Query Language. Se trata de un lenguaje estandarizado para la consulta de grafos RDF, normalizado por el RDF Data Access Working Group (DAWG) del World Wide Web Consortium (W3C). Es una tecnología clave en el desarrollo de la Web Semántica que se constituyó como Recomendación oficial del W3C el 15 de Enero de 2008.
Al igual que sucede con SQL, es necesario distinguir entre el lenguaje de consulta y el motor para el almacenamiento y recuperación de los datos. Por este motivo, existen múltiples implementaciones de SPARQL, generalmente ligados a entornos de desarrollo y plataforma tecnológicas.
En un principio SPARQL únicamente incorpora funciones para la recuperación sentencias RDF. Sin embargo, algunas propuestas también incluyen operaciones para el mantenimiento (creación, modificación y borrado) de datos.
Ejemplo1
PREFIX dc: <http://purl.org/dc/elements/1.1/> SELECT ?title WHERE { <http://ejemplo.org/libros> dc:title ?title }
Ejemplo 2
SPARQL permite el acceso a información disponible en la web a traves de diversas plataformas como es el caso de DBpedia que provee de acceso a toda la información de Wikipedia.
En el ejemplo de abajo podemos ver cómo llevar a cabo una consulta que nos muestre un listado de músicos españoles junto con su nombre, su fecha de nacimiento y de fallecimiento.
PREFIX dcterms: <http://purl.org/dc/terms/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX dbp: <http://dbpedia.org/ontology/> SELECT ?musico ?nombreMusico ?fechaNacimiento ?fechaFallecimiento WHERE{ ?musico dcterms:subject <http://dbpedia.org/resource/Category:Spanish_musicians>; rdfs:label ?nombreMusico ; dbp:birthDate ?fechaNacimiento ; dbp:deathDate ?fechaFallecimiento . FILTER (LANG(?nombreMusico) = "es") }
Ejemplo 3
En el ejemplo2 hemos visto el uso de FILTER que nos permite eliminar resultados de nuestra búsqueda. FILTER admite tipos de datos de tipo Bool, Int, Float, dataTime, etc. y frecuentemente usa operadores del tipo >, <, >=, <=, =, !=, ||, &&
PREFIX ex: <http://example.org#> SELECT ?nom ?ed WHERE{ ?x ex:nombre ? nom . ?x ex:edad ?ed FILTER (?ed<40 || ?ed >18) }
Conversión/Creación de tipos de datos
str(arg) : conversión a una cadena de caracteres. Por ejemplo las url que utilicemos deben ser convertidas a una cadena de caracteres para poder ser tratadas como tales.
lang(arg) : nos devuelve el idioma del argumento que se le pasa ("en", "es", "fr", etc.).
datatype(arg) : tipo de datos (integer, float, etc.).
uri(arg), iri(arg) conversión del argumento en un dato tipo URI/IRI
bnode(arg) : nodo anonimo
strdt (literal, tipo) : genera literal con un tipo de datos.
strdt("1234", "xsd:integer")="1234"^^<xsd:integer>
strlang(literal, tipo): genera literal con un idioma dado.
strlang("Universidad", "es")="Universidad"@"es"
Funciones de comprobacion de tipos de dato
isNumeric(arg) = true si es un numero
isBlank(arg)= true si es un nodo anónimo
isLiteral(arg) = true si es un literal
isIRI(arg) = true si es una IRI
Funciones condicionales
bound(arg) = true si tiene un valor
exists(patron) = true si cumple un patrón
not exists(patron) = true si no se cumple el patrón
if(cond, expr1, expr2) = si se cumple la condición devuelve expr1, si no, devuelve expr2
coalesce (expresion1, expresion2, ...) = devuelve la primera expresión que se evalúa sin error
Modificadores de las consultas
ORDER BY : los ordena en base a algun criterio
DINSTINCT : soluciones únicas
REDUCED : elimina algunos, todos o ningún duplicado
LIMIT : restricción del número de resultados
OFFSET : control del punto de inicio de las soluciones en la secuencia global de soluciones
PREFIX foaf: <http://xmlns.com/foaf/0.1/> SLECT DISTINCT?name WHERE f ?x foaf:name ?name.g ORDER BY ?name LIMIT 3 OFFSET 1
Interfaces públicas SPARQL (DBpedia)
Usando DBpedia podemos crear metadatos RDF y URIs. DBpedia transforma en RDF tripletas (Sujeto, Predicado, Objeto) que han sido introducidas en Wikipedia. La creación de una página en Wikipedia provoca, por tanto, la creación de información RDF en DBpedia. Es decir, cuando se crea un contenido en wikipedia del tipo http://www.es.wikipedia.org/wiki/starcraft se crea a su vez una entrada en http://www.dbpedia.org/resource/starcraft . A través de la interfaz pública Virtuoso SPARQL Query Editor podemos llevar a cabo consultas en la base de datos de DBpedia. Las consultas SPARQL serán traducidas a SQL de forma transparente al usuario. Ejemplos de consultas.
Ver además
Enlaces externos
- SPARQL, lenguaje de consulta en RDF (en castellano)
- Grupo de trabajo del W3C para el acceso a datos (DAWG) (en inglés)
- Lenguaje de consulta RDF (en inglés)
- Lenguajes de recuperación: SeRQL y SPARQL