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.
Ejemplo 1 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 }
Ejemplo 2 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")
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 y 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 anónimo 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 comprobación de tipos de dato isNumeric(arg) = true si es un número. 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(patrón) = true si cumple un patrón. not exists(patrón) = 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 sobre la base de algún criterio. DISTINCT 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/> SELECT 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, 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.
Véase también RDF Web Semántica OWL
Referencias
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 Ejemplos de consultas SPARQL (en castellano)
Categoría:Acrónimos de informática Categoría:Web semántica Categoría:Estándares del World Wide Web Consortium Categoría:Lenguajes de consulta Categoría:Servicios web