SPARQL

1. Ciclo de vida

2. Tipología

3. Ámbito de aplicación

4. Lenguaje de programación

Descripción

SPARQL es un lenguaje para la consulta de bases de datos almacenadas como tripletas RDF, de forma que es posible crear consultas complejas que relacionan elementos entre sí, aprovechando sus capacidades semánticas y explotando la estructura subyacente en forma de grafo que definen los elementos y sus relaciones presentes en la base de datos. SPARQL está pensado para ser el lenguaje de consulta de la web semántica, aunque esta sea todavía un subconjunto muy pequeño, limitada a dominios muy específicos, y usada solamente por expertos. También permite realizar consultas combinando más de una base de datos de conocimientos, aprovechando los enlaces presentes en los datos que relacionan los elementos.

SPARQL comparte parte de la sintaxis de SQL, aunque conceptualmente se encuentra más cerca del modelo de datos usado en bases de datos NoSQL, en forma de tripletas RDF, explotando las relaciones entre elementos descritos como tripletas. Por ejemplo, en una base de datos de música, donde hay personas, bandas (grupos), géneros, discos, canciones, conciertos, etc. y las relaciones entre ellos (pertenencia, autoría, versiones, etc.), es posible realizar consultas sencillas como «¿qué discos ha publicado la banda X?», «¿qué bandas de rock han versionado la canción Y?», etc., así como otras más complejas como «¿qué bandas compuestas por personas de ambos sexos nunca han actuado fuera de su país?».

Existen implementaciones de SPARQL en diversos lenguajes, de modo que es posible integrarlo en aplicaciones desarrolladas en diversas plataformas, principalmente en Java. También hay diversas bases de conocimiento que permiten ser explotadas mediante consultas SPARQL (lo que se conoce como endpoint), de las cuales Wikidata es uno de los ejemplos más interesantes, aunque hay muchas otras, especialmente en el ámbito de la bioinformática y otras propias de la web semántica.

Enlace al recurso

https://www.w3.org/TR/sparql11-query/

Ejemplo de uso

Usando Wikidata como base de datos de conocimientos podemos hacer consultas como, por ejemplo, «¿qué ciudades más grandes de España tienen una mujer como alcalde?». La consulta en SPARQL tiene el formato siguiente:

# Ciudades más pobladas de España con una mujer como alcaldesa
SELECT DISTINCT ?city ?cityLabel ?alcaldeLabel ?poblacion
WHERE
{
  BIND(wd:Q6581072 AS ?sexo)
  BIND(wd:Q515 AS ?c)

      ?city wdt:P31/wdt:P279* ?c .  # instancias de subclases de ciudad
      ?city wdt:P17 wd:Q29 .        # de España
      ?city p:P6 ?statement .       # relación tipo "jefe de gobierno"
      ?statement ps:P6 ?alcalde .   # que tiene el valor "alcalde"
      ?alcalde wdt:P21 ?sexo .      # y el alcalde es mujer
      FILTER NOT EXISTS { ?statement pq:P582 ?x }  # y todavía en activo

      # seleccionar la población
      ?city wdt:P1082 ?poblacion .
      SERVICE wikibase:label {
            bd:serviceParam wikibase:language "es" .   
     }
}
ORDER BY DESC(?poblacion)
LIMIT 10

Esta consulta devuelve el siguiente resultado:

city cityLabel alcaldeLabel poblacion
 wd:Q1492 Barcelona Ada Colau 1620343
 wd:Q12273 Gijón Ana González Rodríguez 271843
 wd:Q8757 La Coruña Inés Rey 244850
 wd:Q162615 Cartagena Ana Belén Castejón 213943
 wd:Q12303 Jerez de la Frontera María José García-Pelayo Jurado 212879
 wd:Q12258 Sabadell Marta Farrés 211734
 wd:Q187826 Móstoles Noelia Posse Gómez 207095
 wd:Q12233 Santander Gema Igual Ortiz 172044
 wd:Q15092 Castellón de la Plana Amparo Marco 170888
 wd:Q484799 Marbella María Ángeles Muñoz Uriol 141463

Enlaces relacionados

SPARQL en Wikipedia: https://en.wikipedia.org/wiki/SPARQL

Lista de SPARQL endpoints: https://www.wikidata.org/wiki/Wikidata:Lists/SPARQL_endpoints

Consultas SPARQL en Wikidata: https://query.wikidata.org/