Come si cercano i Linked Data?

Parlare di Linked Data significa spiegare come cambia il modo di gestire oggi le informazioni in nostro possesso in favore di un arricchimento semantico dei dati, dopo averli collegati tra loro.

Lungo il percorso proposto fin qui abbiamo affrontato attraverso i nostri post il tema della gestione e della struttura che i dati devono assumere. Come si interrogano poi questi dati?

La risposta è semplice: SPARQL!

Abbiamo proposto esempi pratici applicati ai vari progetti, ma l’intento di questo post è indagare da vicino i principali elementi costitutivi di una query, spiegandone la sintassi passo dopo passo.

Che cos’è SPARQL?

Si tratta di un linguaggio di interrogazione (SPARQL Protocol and RDF Query Language) che permette di esplorare le informazioni contenute in grafi RDF (Resource Description Framework – strumento per la codifica, scambio e riutilizzo di dati strutturati) e di estrarre informazioni da una base di conoscenza distribuita sul Web.

A differenza di SQL, che segue il modello relazionale, in SPARQL la rappresentazione della query si basa sul concetto di tripla e di grafo. Le informazioni contenute in una base di conoscenza sono conservate sotto forma di triple e sono rappresentate da un identificativo univoco.

Una tripla pone in relazione i dati tra loro e si struttura mantenendo l’ordine Soggetto – Predicato – Oggetto corrispondente a Risorsa – relazione – valore.

Il meccanismo su cui si basa la rappresentazione di una query e della risposta è il graph matching in cui la query rappresenta un pattern di un grafo RDF e la risposta invece le triple che derivano dal pattern.

Come si scrive/struttura una query SPARQL?

Per interrogare un endpoint è necessario formulare in modo specifico e strutturato la domanda oggetto di interesse, traducendola dal linguaggio naturale in linguaggio SPARQL; attraverso le indicazioni inserite la query naviga il grafo e fornisce le informazioni richieste.

Query_execution_SPARQL

La struttura di una query si basa sulla tripartizione in triple dei concetti e delle loro relazioni ed è suddivisa in:

  • definizione dei prefissi, ovvero inserire i prefix utilizzati per riferirsi agli identificativi delle risorse utilizzati nella scrittura dei pattern;
  • query form, in cui inserire una SELECT con le variabili relative alle risposte che vogliamo ottenere dalla query;
  • graph pattern, in cui definire una WHERE con i parametri da seguire per ricavare la risposta.

Costruiamo una query!

Ipotizziamo di voler sapere quali sono i film girati in Italia e di ricorrere a DBpedia per la nostra query, cominciamo aggiungendo i prefissi che useremo per identificare le risorse:

prefix dbr: <http://dbpedia.org/resource/>
prefix dbo: <http://dbpedia.org/ontology/>

Per determinare la domanda specifica scriviamo nella SELECT la parola soggetto della nostra domanda preceduta da un punto interrogativo:

SELECT ?movie

?movie è una variabile da interpretare come “ottieni tutto ciò che”.

Per permettere alla query di navigare il grafo è necessario dare delle istruzioni spiegando che il soggetto della nostra ricerca appartiene alla categoria dei Film su DBpedia e che i film di cui vogliamo notizia sono contenuti nella categoria country specifica per l’Italia, scrivendo:

WHERE {

?movie rdfs:type dbo:Film .

Per specificare che le informazioni da ottenere sono tutte appartenenti alla tipologia Film, mentre per definire che i risultati di questa tipologia devono riguardare la nazione italiana si aggiunge:

?movie dbo:country dbr:Italy .

}

Per riepilogare, la domanda “quali sono i film girati in Italia?” viene così tradotta:

prefix dbr: <http://dbpedia.org/resource/>
prefix dbo: <http://dbpedia.org/ontology/>
SELECT ?movie
WHERE {
  ?movie a dbo:Film .
  ?movie dbo:country dbr:Italy .
}

Run Query

L’alto interesse per questo linguaggio è dimostrato dalla quantità di articoli scientifici che ne analizzano i diversi aspetti o ne propongono delle estensioni, l’esigenza del nostro post è nata dall’idea di divulgare e valorizzare questo linguaggio di query come efficiente modello di ricerca dei dati.

Infatti, l’esempio che abbiamo proposto è rappresentativo delle informazioni che si possono ricavare attraverso le query SPARQL, ma esistono molte altre combinazioni e possibilità di ricerca da esplorare, adesso prova tu!

 

Per saperne di più su SPARQL

Leggi anche Learning more about SPARQL

Se sei interessato ad approfondire l’argomento, a seguire i nostri corsi di formazione su SPARQL e i Linked Data o semplicemente per eventuali domande contattaci.