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/