Ir al contenido

SPARQL

De Wikipedia, la enciclopedia libre
SPARQL
Image
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[1] 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).[2][3] 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,[4][5] y SPARQL 1.1 en marzo de 2013.[6]

SPARQL permite que una consulta esté compuesta por patrones de tripletas, conjunciones, disyunciones y patrones opcionales.[7]

Existen implementaciones para múltiples lenguajes de programación.[8] También existen herramientas que permiten conectarse a un punto de acceso SPARQL y construir consultas SPARQL de forma semiautomática, como ViziQuer.[9]Además, existen herramientas para traducir consultas SPARQL a otros lenguajes de consulta, por ejemplo a SQL[10] y a XQuery.[11]

Ejemplo 1

[editar]

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

[editar]

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

[editar]

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

[editar]
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

[editar]
  • 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

[editar]
  • 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

[editar]
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)

[editar]

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

[editar]

Referencias

[editar]
  1. ↑ Beckett, Dave (6 de octubre de 2011). «What does SPARQL stand for?». [semantic-web@w3.org](mailto:semantic-web@w3.org).
  2. ↑ Jim Rapoza (2 de mayo de 2006). «SPARQL Will Make the Web Shine». eWeek. Consultado el 17 de enero de 2007.
  3. ↑ Segaran, Toby; Evans, Colin; Taylor, Jamie (2009). Programming the Semantic Web. O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. p. 84. ISBN 978-0-596-15381-6.
  4. ↑ «W3C Semantic Web Activity News – SPARQL is a Recommendation». W3.org. 15 de enero de 2008. Archivado desde el original el 20 de enero de 2008. Consultado el 1 de octubre de 2009.
  5. ↑ «XML and Semantic Web W3C Standards Timeline». 4 de febrero de 2012. Archivado desde el original el 8 de diciembre de 2017. Consultado el 27 de noviembre de 2013.
  6. ↑ Herman, Ivan (21 de marzo de 2013). «Eleven SPARQL 1.1 Specifications are W3C Recommendations». W3C blog. Archivado desde el original el 17 de abril de 2013. Consultado el 4 de octubre de 2025.
  7. ↑ «XML and Web Services in the News». xml.org. 6 de octubre de 2006. Archivado desde el original el 22 de mayo de 2007. Consultado el 17 de enero de 2007.
  8. ↑ «SparqlImplementations – ESW Wiki». Esw.w3.org. Archivado desde el original el 28 de septiembre de 2009. Consultado el 1 de octubre de 2009.
  9. ↑ «ViziQuer a tool to construct SPARQL queries automatically». lumii.lv. Archivado desde el original el 19 de abril de 2012. Consultado el 25 de febrero de 2011.
  10. ↑ «D2R Server». Archivado desde el original el 26 de febrero de 2012. Consultado el 4 de febrero de 2012.
  11. ↑ «SPARQL2XQuery Framework». Archivado desde el original el 12 de mayo de 2013. Consultado el 4 de febrero de 2012.

Enlaces externos

[editar]