SPARQL (pronunciado " chispa " / s p ɑː k ə l / , un acrónimo recursivo [2] para el Protocolo SPARQL y RDF Query Language ) es un lenguaje de consulta RDF , es decir, una semántica lenguaje de consulta de bases de datos Capaz de recuperar y manipular los datos almacenados en formato RDF (Resource Description Framework) . [3] [4] Fue convertido en estándar por el Grupo de trabajo de acceso a datos RDF (DAWG) del World Wide Web Consortium, y es reconocida como una de las tecnologías clave de la web semántica . El 15 de enero de 2008, el W3C reconoció SPARQL 1.0 como recomendación oficial, [5] [6] y SPARQL 1.1 en marzo de 2013. [7]
Paradigma | Lenguaje de consulta |
---|---|
Desarrollador | W3C |
Apareció por primera vez | 2008 |
Lanzamiento estable | 1.1 / 21 de marzo de 2013 |
Sitio web | www |
Implementaciones importantes | |
Jena , [1] OpenLink Virtuoso [1] |
SPARQL permite que una consulta consista en patrones triples , conjunciones , disyunciones y patrones opcionales . [8]
Existen implementaciones para múltiples lenguajes de programación . [9] Existen herramientas que permiten conectarse y construir semiautomáticamente una consulta SPARQL para un punto final SPARQL, por ejemplo, ViziQuer. [10] Además, existen herramientas para traducir consultas SPARQL a otros lenguajes de consulta, por ejemplo a SQL [11] y XQuery . [12]
Ventajas
SPARQL permite a los usuarios escribir consultas sobre lo que puede llamarse libremente datos de "valor-clave" o, más específicamente, datos que siguen la especificación RDF del W3C . Por tanto, toda la base de datos es un conjunto de triples "sujeto-predicado-objeto". Esto es análogo al uso que hacen algunas bases de datos NoSQL del término "valor-clave del documento", como MongoDB .
En términos de bases de datos relacionales SQL , los datos RDF también se pueden considerar una tabla con tres columnas: la columna de asunto, la columna de predicado y la columna de objeto. El asunto en RDF es análogo a una entidad en una base de datos SQL , donde los elementos de datos (o campos) para un objeto comercial dado se colocan en múltiples columnas, a veces repartidos en más de una tabla, e identificados por una clave única . En RDF, esos campos se representan en cambio como filas de predicado / objeto separadas que comparten el mismo sujeto, a menudo la misma clave única, siendo el predicado análogo al nombre de la columna y el objeto a los datos reales. A diferencia de las bases de datos relacionales, la columna del objeto es heterogénea: el tipo de datos por celda suele estar implícito (o especificado en la ontología ) por el valor del predicado . Además, a diferencia de SQL, RDF puede tener varias entradas por predicado; por ejemplo, uno podría tener múltiples entradas "secundarias" para una sola "persona", y puede devolver colecciones de tales objetos, como "niños".
Por lo tanto, SPARQL proporciona un conjunto completo de operaciones de consulta analíticas tales como JOIN
, SORT
, AGGREGATE
para los datos cuyo esquema es intrínsecamente parte de los datos en lugar de requerir una definición de esquema separado. Sin embargo, la información del esquema (la ontología) a menudo se proporciona externamente, para permitir la unión de diferentes conjuntos de datos sin ambigüedades. Además, SPARQL proporciona una sintaxis de recorrido de gráficos específica para datos que se pueden considerar como un gráfico.
El siguiente ejemplo muestra una consulta simple que aprovecha la definición de ontología foaf
("amigo de un amigo").
Específicamente, la siguiente consulta devuelve nombres y correos electrónicos de cada persona en el conjunto de datos:
PREFIJO foaf : SELECT ? Nombre de correo electrónico? DONDE { persona? Un foaf : Persona . ? persona foaf : nombre ? nombre . ? persona foaf : mbox ? correo electrónico . }
Esta consulta une todos los triples con un sujeto coincidente, donde el predicado de tipo, " a
", es una persona ( foaf:Person
), y la persona tiene uno o más nombres ( foaf:name
) y buzones de correo ( foaf:mbox
).
El autor de esta consulta eligió hacer referencia al tema utilizando el nombre de variable " ?person
" para una mayor claridad legible. Dado que el primer elemento del triple es siempre el tema, el autor podría haber utilizado fácilmente cualquier nombre de variable, como " ?subj
" o " ?x
". Cualquiera que sea el nombre que se elija, debe ser el mismo en cada línea de la consulta para significar que el motor de consultas debe unir las triples con el mismo asunto.
El resultado de la unión es un conjunto de filas - ?person
, ?name
, ?email
. Esta consulta devuelve ?name
y ?email
porque a ?person
menudo es un URI complejo en lugar de una cadena amigable para los humanos. Tenga en cuenta que cualquiera ?person
puede tener varios buzones de correo, por lo que en el conjunto devuelto, una ?name
fila puede aparecer varias veces, una para cada buzón.
Esta consulta puede distribuirse a varios puntos finales SPARQL (servicios que aceptan consultas SPARQL y devuelven resultados), calcularse y recopilarse los resultados, un procedimiento conocido como consulta federada .
Ya sea de manera federada o local, las definiciones triples adicionales en la consulta podrían permitir uniones a diferentes tipos de temas, como automóviles, para permitir consultas simples, por ejemplo, para devolver una lista de nombres y correos electrónicos para personas que conducen automóviles con un alto eficiencia de combustible.
Formularios de consulta
En el caso de consultas que leen datos de la base de datos, el lenguaje SPARQL especifica cuatro variaciones de consulta diferentes para diferentes propósitos.
SELECT
consulta- Utilizado para extraer valores sin procesar de un punto final SPARQL, los resultados se devuelven en formato de tabla.
CONSTRUCT
consulta- Se utiliza para extraer información del punto final SPARQL y transformar los resultados en RDF válido.
ASK
consulta- Se utiliza para proporcionar un resultado simple Verdadero / Falso para una consulta en un punto final SPARQL.
DESCRIBE
consulta- Se utiliza para extraer un gráfico RDF del punto final SPARQL, cuyo contenido se deja al punto final para decidir, en función de lo que el encargado del mantenimiento considera información útil.
Cada uno de estos formularios de consulta tiene un WHERE
bloque para restringir la consulta, aunque, en el caso de la DESCRIBE
consulta, WHERE
es opcional.
SPARQL 1.1 especifica un lenguaje para actualizar la base de datos con varios formularios de consulta nuevos. [13]
Ejemplo
Otro ejemplo de consulta SPARQL que modela la pregunta "¿Cuáles son todas las capitales de países en África?":
PREFIX ex : SELECT ? Capital ? Country WHERE { ? X ex : cityname ? Capital ; ex : isCapitalOf ? y . ? y ex : nombre del país? país ; ex : isInContinent ex : Africa . }
Las variables se indican con un prefijo ?
o $
. Se devolverán las fijaciones para ?capital
y el ?country
. Cuando un triple termina con un punto y coma, el sujeto de este triple completará implícitamente el siguiente par hasta un triple completo. Entonces, por ejemplo, ex:isCapitalOf ?y
es la abreviatura de ?x ex:isCapitalOf ?y
.
El procesador de consultas SPARQL buscará conjuntos de triples que coincidan con estos cuatro patrones triples, vinculando las variables de la consulta a las partes correspondientes de cada triple. Es importante tener en cuenta aquí la "orientación de la propiedad" (las coincidencias de clases se pueden realizar únicamente a través de atributos o propiedades de clase; consulte Tipeo de pato )
Para hacer consultas concisas, SPARQL permite la definición de prefijos y URI base de una manera similar a Turtle . En esta consulta, el prefijo " ex
" significa "http://example.com/exampleOntology#".
Extensiones
GeoSPARQL define funciones de filtro para consultas de sistemas de información geográfica (GIS) utilizando estándares OGC bien entendidos ( GML , WKT , etc.).
SPARUL es otra extensión de SPARQL. Permite que el almacén RDF se actualice con este lenguaje de consulta declarativo, agregando métodos INSERT
y DELETE
.
Implementaciones
Código abierto, implementaciones de SPARQL de referencia
- RDF4J , anteriormente Sesame de Eclipse Foundation
- Jena (marco) de Apache Software Foundation
- Virtuoso de OpenLink
Consulte la Lista de implementaciones de SPARQL para obtener una cobertura más completa, incluido el almacenamiento triple , las API y otros almacenamientos que han implementado el estándar SPARQL.
Ver también
- Formato XML de resultados de consultas SPARQL
- Expresiones de sintaxis SPARQL
- Wikidata
- Tutorial del servicio de consultas de Wikidata
Referencias
- ^ a b Hebeler, John; Fisher, Matthew; Blace, Ryan; Pérez-López, Andrew (2009). Programación Web Semántica . Indianápolis, Indiana: John Wiley & Sons . pag. 406 . ISBN 978-0-470-41801-7.
- ^ Beckett, Dave (6 de octubre de 2011). "¿Qué significa SPARQL?" . [email protected] .
- ^ Jim Rapoza (2 de mayo de 2006). "SPARQL hará brillar la web" . eWeek . Consultado el 17 de enero de 2007 .
- ^ Segaran, Toby; Evans, Colin; Taylor, Jamie (2009). Programación de la Web Semántica . O'Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. p. 84. ISBN 978-0-596-15381-6.
- ^ "Noticias de actividad de la Web Semántica del W3C - SPARQL es una recomendación" . W3.org. 15 de enero de 2008 . Consultado el 1 de octubre de 2009 .
- ^ "Cronología de los estándares XML y Web Semántica W3C" (PDF) . 4 de febrero de 2012 . Consultado el 27 de noviembre de 2013 .
- ^ "Las especificaciones de Once SPARQL 1.1 son recomendaciones del W3C" . w3.org. 21 de marzo de 2013 . Consultado el 25 de abril de 2013 .
- ^ "XML y servicios web en las noticias" . xml.org . 6 de octubre de 2006 . Consultado el 17 de enero de 2007 .
- ^ "SparqlImplementations - ESW Wiki" . Esw.w3.org . Consultado el 1 de octubre de 2009 .
- ^ "ViziQuer una herramienta para construir consultas SPARQL automáticamente" . lumii.lv . Consultado el 25 de febrero de 2011 .
- ^ "Servidor D2R" . Consultado el 4 de febrero de 2012 .
- ^ "Marco SPARQL2XQuery" . Consultado el 4 de febrero de 2012 .
- ^ Yu, Liyang (2014). Una guía para desarrolladores de la web semántica . Saltador. pag. 308. ISBN 9783662437964.
enlaces externos
- Blog de actividad de datos del W3C
- W3C SPARQL 1.1 Working Group - cerrado - listas de correo y archivos , era RDF Data Access Working Group
- Recomendación SPARQL 1.1
- Lenguaje de consulta SPARQL 1.0 (heredado)
- Protocolo SPARQL 1.0 (heredado)
- Formato de resultados XML de consulta SPARQL 1.0 (heredado)
- Mapeos SPARQL2XQuery entre esquemas OWL-RDF / S y XML, y esquema XML para transformación OWL.
- Expresiones de sintaxis SPARQL en el motor de consultas ARQ
- Traducciones de expresiones de sintaxis SPARQL del conjunto de pruebas DAWG
- Wikidata
- DBpedia