| SPARQL | ||
|---|---|---|
|
| ||
|
Carlos Buil Aranda y Eric Prud'hommeaux https://www.w3.org/TR/sparql11-query/ | ||
| Información general | ||
| Apareció en | 15 de enero de 2008 | |
SPARQL (pronunciado "sparkle", un acrónimo recursivo de SPARQL Protocol and RDF Query Language) es un lenguaje de consulta semántica para bases de datos, capaz de recuperar y manipular datos almacenados en formato Resource Description Framework (RDF). Fue establecido como estándar por el RDF Data Access Working Group (DAWG) del World Wide Web Consortium y es reconocido como una de las tecnologías fundamentales de la Web semántica. El 15 de enero de 2008, W3C reconoció SPARQL 1.0 como una recomendación oficial, y SPARQL 1.1 en marzo de 2013.
SPARQL permite que una consulta esté compuesta por patrones de tripletas, conjunciones, disyunciones y patrones opcionales.
Existen implementaciones para múltiples lenguajes de programación. También existen herramientas que permiten conectarse a un punto de acceso SPARQL y construir consultas SPARQL de forma semiautomática, como ViziQuer.Además, existen herramientas para traducir consultas SPARQL a otros lenguajes de consulta, por ejemplo a SQL y a XQuery.
Por ejemplo, si queremos obtener un listado de nombres de libros podemos ejecutar la siguiente consulta:
PREFIX dc: <http://purl.org/dc/elements/1.1/>
SELECT ?title
WHERE { <http://ejemplo.org/libros> dc:title ?title }
SPARQL permite el acceso a información disponible en la web a través 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")
}
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)
}
strdt("1234", "xsd:integer")="1234"^^<xsd:integer>
strlang("Universidad", "es")="Universidad"@"es"
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT?name
WHERE f ?x foaf:name ?name.g
ORDER BY ?name
LIMIT 3
OFFSET 1
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, se crea a su vez una entrada en DBpedia. 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.