SPARQL es un lenguaje de consulta de datos similar a SQL, pero pensado para consultas en bases de datos basadas en grafos. Estas bases de datos es común verlas en proyectos sobre los que se fundamenta la web semántica (o Web 3.0) como Wikidata o DBpedia, y almacenan información siguiendo siempre un patrón:
(sujeto, predicado, objeto)
El lenguaje SPARQL está pensado para que las secuencias que se pongan en la parte del where
sea una especie de patrón que deba encajar con las tripletas que hay en el grafo. De esta forma, una de las consultas más sencillas que nos podemos plantear es precisamente la de contar cuántas tripletas hay en nuestra base de datos:
select (count(?suj) as ?tripletas)
where {
?suj ?pred ?obj
}
Por lo general, estos proyectos de libre conocimiento tienen disponible un endpoint al que mandar consultas para ejecutarlas. Aquí os dejo unos cuantos:
Desgraciadamente, tenemos que tener en cuenta que esta consulta es muy pesada, y algunos de estos endpoints pueden no responder nunca por timeout por no estar optimizados.
Pero en el caso de DBpedia, esta consulta parece que sí está optimizada y podemos extraer datos interesantes: En este momento, la DBpedia en español posee cerca de 170 millones de hechos. Por su parte, la DBpedia en inglés es mucho más grande y alberga casi 440 millones de tripletas.
Wikidata, o es mucho más grande (cosa que no descarto) o su sistema no está lo suficientemente optimizado como para ejecutar estas consultas tan pesadas.