SPARQL – Simple Protocol And RDF Query Language

Nel post precedente ho parlato di RDF (Resource Description Framework) ed illustrato i risultati della visita della sezione musica del sito della BBC. La figura seguente mostra il risultato del progetto Linking Open Data, una iniziativa che ha l’obiettivo di raccogliere e rendere fruibili i dati che sono stati pubblicati finora. Nel complesso essi consistono di oltre 4.7 miliardi di triple RDF (costituite da soggetto, predicato, oggetto) connesse da circa 142 milioni di link RDF (dati aggiornati a maggio 2009).

Post_DFonte Wikipedia

La disponibilità di dati in formato RDF sarebbe però poco utile se non fosse possibile accedervi  in maniera semplice. SPARQL – Simple Protocol And RDF Query Language, è un linguaggio di query dal sapore SQL per interrogare sorgenti di dati RDF. Seguendo questo standard è possibile creare dei punti di accesso ai dati  (endpoints) che sono in grado di ricevere query via http e di restituire i risultati in vari formati RDF/XML, JSON ecc. Cercando in rete ho trovato svariati esempi di questo tipo che espongono dati anche molto eterogenei: dai dati biologici di bio2rdf.org all’importante  sito inglese data.gov.uk che espone moltissimi dataset statistici con quasi 3000 dataset (ecco  la lista completa) e più di tre milioni di triple. Per fare un esempio concreto, qui è possibile interrogare il dataset <http://www.w3.org/People/Berners-Lee/card>. La seguente query produce il nome e l’email delle persone contenute nel file FOAF di Berners Lee.

PREFIX foaf:  <http://xmlns.com/foaf/0.1/>
SELECT *
FROM <http://www.w3.org/People/Berners-Lee/card>
WHERE {
    ?person foaf:name ?name .
    ?person foaf:mbox ?email .
}

Ricordo che FOAF (acronimo di Friend of a Friend) è una ontologia “machine-readable” che descrive le persone, le loro attività e le loro relazioni con altre persone ed oggetti. L’accoppiata RDF-SPARQL va diffondendosi in Internet: Dbpedia è un progetto per estrarre informazione in forma strutturata da Wikipedia e renderla disponibile sul web (ovviamente è disponibile un endpoint SPARQL con cui interrogare la base dati);  DBTune fornisce un servizio SPARQL di accesso a dati strutturati (più di 14 milioni di triple) relativi al mondo della musica. Questo endpoint SPARQL contiene dati sui lanci dei vettori spaziali. Seguendo il link, oltre ai riferimenti per sottoporre interrogazioni, è possibile trovare numerosi esempi di codice ed una presentazione molto interessante.

Per interrogare contemporaneamente più dataset di dati si possono seguire diverse strategie,  ciascuna con i suoi vantaggi e svantaggi:

  1. Interrogare uno per uno i dataset
  2. Interrogare un repository centralizzato costituito da una collezione di dataset
  3. Creare delle copie locali di dataset
  4. Utilizzare un sistema intermedio

Il primo caso ha il vantaggio di avere i dati sorgente sempre aggiornati ma è necessario costruire una logica applicativa di supporto. Il secondo ha il vantaggio di non dover costruire una logica applicativa ma i dataset potrebbero essere non aggiornati. Il terzo caso lascia ampio margine di manovra come la disponibilità di scaricare interi dataset con cui popolare il database ed il mantenimento dei dati sincronizzati con la fonte originale. L’ultimo caso ha il grande vantaggio di avere un sistema ponte tra i vari endpoint SPARQL, che nasconde i problemi di aggiornamento e di costruzione della logica applicativa, ma necessita della costruzione di un sistema di “aggancio” dei vari endpoint SPARQL.

In definitiva la tecnologia promette bene ma probabilmente non è ancora perfettamente matura. Ai lettori interessati segnalo questo video di Tim Berners Lee e la prima e la seconda parte di questo video tutorial. Per finire segnalo un buon tutorial su SPARQL.