Skip to main content
European Commission logo print header

SPARQL

Guida ai dati aperti collegati di CORDIS

Cosa sono i dati aperti collegati?

I dati aperti collegati (LOD) sono una combinazione di dati collegati e di dati aperti. Per dati collegati si intendono dati leggibili a macchina e condivisi sul web, mentre i dati aperti si riferiscono a dati utilizzabili e distribuibili liberamente.

I dati aperti collegati sono un metodo per accedere al web decentralizzato in modo centralizzato. Essi forniscono agli utenti i mezzi e i servizi necessari per scoprire le informazioni più pertinenti e accurate. Combinando i principi di progettazione dei dati aperti con dati strutturati leggibili da una macchina, i LOD possono offrire informazioni più utili, interconnesse con altri dati per ulteriori scoperte.

I principi FAIR (Findable, Accessible, Interoperable, Reusable, ovvero reperibile, accessibile, interoperabile e riutilizzabile) e lo schema di distribuzione a 5 stelle per i dati aperti, come descritto da Tim Berners-Lee, ne garantiscono la possibilità di essere condivisi e distribuiti liberamente sul web.

Nell'ambito dell'iniziativa sui dati aperti collegati, il Resource Description Format (RDF) costituisce il linguaggio e la tecnologia principale per esprimere e pubblicare informazioni sui dati, nonché per renderli interconnessi nel web. RDF consente di strutturare i dati in qualità di terne soggetto-predicato-oggetto.

Il grafico della conoscenza EURIO

I grafici della conoscenza rappresentano entità del mondo reale (ad esempio progetti, organizzazioni e risultati di progetto, come i suoi prodotti finali), insieme alle loro relazioni (per esempio la partecipazione di un'organizzazione a un progetto) e ai relativi attributi (ad esempio la data di inizio di un progetto o il numero di partita IVA di un'organizzazione), come una rete interconnessa composta da nodi e vertici.

I grafici della conoscenza forniscono una rappresentazione strutturata e leggibile a macchina dei dati, promuovendo l'integrazione, il collegamento e il riutilizzo delle conoscenze. Il grafico della conoscenza EURIO utilizza il paradigma di rappresentazione di questo tipo di grafici per trasformare i dati di CORDIS in dati interconnessi leggibili da una macchina.

I dati sono pubblicati sotto forma di terne del Resource Description Format (RDF), secondo i principi dei dati aperti collegati. Il significato delle entità descritte viene formalmente definito dall’Ontologia europea delle informazioni per la ricerca (EURIO). Il grafico della conoscenza EURIO risultante, una rete di terne RDF interconnesse che codificano i dati CORDIS originali, può essere interrogato utilizzando SPARQL, il linguaggio standardizzato per il recupero e la manipolazione dei dati in formato RDF.

L'ontologia EURIO

Per migliorare la visibilità, la riutilizzabilità e l'accessibilità dei contenuti di CORDIS e potenziarne l'interoperabilità semantica, l'Ufficio delle pubblicazioni della Commissione europea ha sviluppato l’Ontologia europea delle informazioni per la ricerca (EURIO). EURIO è un modello concettuale di dati che si basa su una rete di ontologie esistenti (ad esempio schema.org, DINGO, ecc.) e di dati di riferimento (ad esempio la tassonomia EuroSciVoc, l'elenco dei codici NUTS, ecc.). Tale ontologia fornisce i mezzi per descrivere, tra l'altro, le informazioni amministrative associate ai progetti di ricerca e alle relative sovvenzioni, come le date di inizio e fine, il costo totale e i finanziamenti ricevuti, le informazioni sulle organizzazioni e le persone coinvolte, nonché i risultati prodotti dal progetto, come l'elenco degli autori, il titolo e le informazioni su una pubblicazione reperibili in una rivista.

EURIO utilizza il linguaggio OWL 2 Web Ontology per definire formalmente il significato dei termini di dominio utilizzati al fine di descrivere le entità di CORDIS (ad esempio progetti, organizzazioni, ecc.), i loro attributi (per esempio titolo, acronimo, denominazione legale, ecc.) e le relative interrelazioni (ad esempio la relazione tra un progetto e le organizzazioni partecipanti, ecc.).

L'ontologia EURIO e la sua documentazione sono accessibili sul sito web dei Vocabolari dell'UE.

Utilizzo di SPARQL per interrogare il grafico della conoscenza EURIO

SPARQL è un linguaggio di interrogazione standard per il recupero e la manipolazione dei dati memorizzati in formato RDF. Il suo sviluppo e la sua evoluzione, che sono supervisionati dal gruppo di lavoro di SPARQL all'interno del W3C, vengono completamente documentati e sono disponibili pubblicamente.

Le query di SPARQL si basano sulla corrispondenza dei modelli di grafici, ovvero sulla corrispondenza di insiemi di modelli di terne che formano condizioni congiuntive (AND) o disgiuntive (OR). I modelli di terne sono analoghi alle terne RDF, tranne per il fatto che ciascun elemento, quale soggetto, predicato e oggetto, può essere una variabile. Un dato modello di grafico delle query SPARQL corrisponde a un sottografico dei dati RDF interrogati quando i termini RDF di tale sottografico possono essere sostituiti con le variabili.

Ad esempio, la query SPARQL per trovare la data di inizio del progetto di Orizzonte 2020 «Knowledge-Based Information Agent with Social Competence and Human Interaction Capabilities", dato il grafico della conoscenza EURIO, sarebbe:

PREFIX eurio:<http://data.europa.eu/s66#>
SELECT DISTINCT ?startDate
WHERE
{
  ?project a eurio:Project.
  ?project eurio:title "Knowledge-Based Information Agent with Social Competence and Human Interaction Capabilities" . 
  ?project eurio:startDate ?startDate .
}

Come si vede, con l’esecuzione di questa query, utilizzando nel nostro esempio l'interfaccia SPARQL Virtuoso, si ottiene la data di inizio del progetto in questione, ovvero l’1 marzo 2015.

SPARQL Example One

La parola chiave PREFIX viene utilizzata per designare un'etichetta di prefisso (ossia un'abbreviazione) a un IRI che denota lo spazio nominativo dei termini utilizzati nella query; nell'esempio in esame, abbiamo utilizzato i termini «project», «title» e «startDate», tutti definiti nell'ontologia EURIO il cui IRI è http://data.europa.eu/s66#.

La query è composta da due parti:

  • la clausola SELECT che identifica le variabili che devono apparire nei risultati dell’interrogazione, che nel nostro esempio è la variabile (?startDate), rappresentante il valore della data di inizio richiesta;
  • la clausola WHERE che fornisce il modello di grafico da confrontare con il grafico della conoscenza EURIO e che, nel nostro esempio, consiste in tre modelli di terne congiuntive, ovvero tre modelli da far corrispondere, vale a dire:
    • un modello di terna con la variabile (?project) utilizzata per esprimere il progetto di riferimento;
    • un modello di terna che indica le informazioni sul titolo del progetto di riferimento;
    • un modello di terna con la variabile (?startDate) nella posizione dell'oggetto.

Oltre a esprimere modelli di terne, SPARQL fornisce diversi operatori e costrutti che consentono, tra l'altro, di esprimere modelli opzionali, di filtrare i modelli di terne fatti corrispondere ad alcune condizioni e di aggregare o ordinare i risultati recuperati.

Consideriamo un'altra semplice query, in cui questa volta vogliamo recuperare tutti i progetti contenuti nel grafico della conoscenza EURIO insieme ai loro titoli. Pertanto, utilizzando la clausola SELECT, la nostra interrogazione sarà: «SELECT ?project ?title», e useremo la clausola WHERE per specificare le condizioni che devono essere soddisfatte, ovvero che la variabile (?project) utilizzata per indicare le entità di progetto richieste deve appartenere alla classe eurio:Project e che la variabile (?title) deve indicare il valore del titolo di queste entità di progetto. La query risultante sarebbe quindi:

PREFIX eurio:<http://data.europa.eu/s66#>
SELECT ?project ?title
WHERE
{
  ?project a eurio:Project.
  ?project eurio:title ?title. 
}
ORDER BY ?title
LIMIT 100

L'uso della clausola ORDER BY ci consente di visualizzare i risultati recuperati secondo l'ordine alfabetico dei titoli.

La sequenza ascendente può essere indicata con o senza il modificatore ASC(), mentre quella discendente con il modificatore DESC().

La query di esempio mette inoltre in evidenza l'uso della clausola LIMIT, che ci permette di impostare un limite massimo al numero di risultati forniti; in questo caso verranno mostrate solo 100 coppie di progetti e i rispettivi titoli.

Per dimostrare l'uso di un altro operatore comune, ovvero FILTER, utilizziamo lo stesso esempio e supponiamo di essere interessati a recuperare solo i progetti, nonché i rispettivi titoli, la cui data di inizio è compresa tra il 2021 e il 2022. La clausola SELECT rimane la stessa di prima poiché stiamo richiedendo le stesse informazioni, ovvero i progetti e i loro titoli, ma la clausola WHERE deve essere aggiornata con ulteriori modelli di terne che riflettano la condizione sulla loro data di inizio. La query estesa sarebbe pertanto la seguente.

PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
<br />
SELECT ?project ?title ?startDate
WHERE
{
  ?project a eurio:Project.
  ?project eurio:title ?title. 
  ?project eurio:startDate ?startDate .
  FILTER ((?startDate >= "2021-01-01"^^xsd:date) && (?startDate<="2023-12-31"^^xsd:date))
}

Come illustrato, utilizzando l'operatore FILTER, possiamo esprimere la condizione che la variabile (?startDate) deve soddisfare, ovvero che deve essere successiva a «01-01-2021» e precedente a «31-12-2023», con i due valori limite inclusi.

Le query SELECT descritte in precedenza comprendono una delle forme di query definite da SPARQL, che consentono di specificare e utilizzare le soluzioni della corrispondenza dei modeli per formare insiemi di risultati o grafici RDF. Esse sono:

  • SELECT, che, come descritto in precedenza, restituisce tutte o un sottoinsieme delle variabili legate a una corrispondenza del modello di query.
  • CONSTRUCT, che restituisce un grafico RDF costruito sostituendo le variabili in un insieme di schemi di terne.
  • ASK, che restituisce un booleano in grado di indicare la corrispondenza o meno di un modello di query.
  • DESCRIBE, che restituisce un grafico RDF inteso a descrivere le risorse trovate.

Per ulteriori informazioni sull'uso delle diverse forme di query e per una descrizione completa delle caratteristiche generali del linguaggio di interrogazione SPARQL, si consiglia di consultare la documentazione ufficiale del linguaggio di interrogazione SPARQL 1.1.

Come attivare le query federate?

In tutti gli esempi presentati sopra, le interrogazioni sono state eseguite sui dati contenuti nel grafico della conoscenza EURIO.

Tuttavia, il crescente numero di servizi di interrogazione SPARQL (endpoint di SPARQL) da parte di vari fornitori di dati attraverso la pubblicazione dei loro dati come dati aperti collegati comporta l'opportunità di interrogare congiuntamente questi insiemi di dati LOD distribuiti.

Per rendere ciò possibile, SPARQL utilizza l'estensione SERVICE, che consente di indirizzare una parte della query a un particolare endpoint di SPARQL e di combinare i risultati restituiti con quelli del resto della query stessa.

La seguente query mostra un esempio della sintassi delle query federate SPARQL, in cui si cerca l’indice di sviluppo umano (ISU) del paese in cui ha sede l'organizzazione «UNIVERSIDAD POMPEU FABRA», una delle organizzazioni che partecipano ai progetti finanziati dall'UE contenuti nel grafico della conoscenza di EURIO. Per ottenere le informazioni sull'ISU dobbiamo interrogare congiuntamente il grafico della conoscenza di EURIO, che contiene informazioni sul paese in cui ha sede l'organizzazione in questione, e il grafico della conoscenza esterno di DBpedia, che contiene, tra l'altro, informazioni riguardanti l’ISU dei vari paesi.

PREFIX eurio:<http://data.europa.eu/s66#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX dbo: <http://dbpedia.org/ontology/>
PREFIX dbp: <http://dbpedia.org/property/>
<br />
SELECT  ?country ?name ?hdi
WHERE {  
   ?org a eurio:Organisation . 
   ?org eurio:legalName "UNIVERSIDAD POMPEU FABRA" . 
   ?org eurio:hasSite ?site .
   ?site eurio:hasGeographicalLocation ?location .
   ?location a eurio:Country .
   ?location eurio:name ?name . 
   SERVICE <http://dbpedia.org/sparql> {
        ?dbpedia_country a dbo:Country .
        ?dbpedia_country dbp:commonName ?dbname . 
        ?dbpedia_country dbp:hdi ?hdi. 
        FILTER (lang(?dbname) = "en") 
        FILTER (STR(?name) = STR(?dbname))
   } 
}

Come illustrato, per eseguire questa query dobbiamo inserire una clausola SERVICE all'interno della clausola WHERE della nostra query seguita dall'IRI dell'endpoint esterno (ovvero http://dbpedia.org/sparql), e quindi specificare i modelli di terne applicabili, ossia che stiamo cercando un paese nel grafico della conoscenza di DBpedia (la variabile ?dbpedia_country) che abbia lo stesso nome del paese dell'organizzazione «UNIVERSIDAD POMPEU FABRA» del grafico della conoscenza di EURIO (ovvero che le variabili ?name e ?dbname abbiano lo stesso valore), e per quale paese richiediamo il suo valore ISU utilizzando la rispettiva proprietà di DBpedia (ossia dbp:hdi).

È necessario notare che le query federate devono essere utilizzate con cautela per evitare query eccessive agli endpoint di SPARQL remoti e modelli di query inefficienti, in quanto tali elementi possono influire pesantemente sul tempo di esecuzione delle query, portando spesso al loro time out e all'impossibilità di recuperare qualsivoglia risultato. Alla luce di questa situazione e poiché, inoltre, non è possibile fornire alcuna garanzia sulla stabilità, sulla disponibilità e sulle prestazioni degli endpoint di SPARQL esterni, si raccomanda vivamente di optare per i dump locali dei dati delle KG (o dei loro sottografici) di interesse e di affidarsi a implementazioni di query federate locali.

Per una panoramica completa delle caratteristiche e delle specifiche relative al supporto di SPARQL per le query federate, si consiglia di consultare la documentazione sulle query federate di SPARQL 1.1.

Dump di dati

L'ultimo dump del grafico della conoscenza di EURIO può essere scaricato dal portale europeo dei dati, dove sono reperibili inoltre i i sottografici di tale grafico. Questi sottografici comprendono la più rilevante istantanea indipendente delle relazioni e degli attributi pertinenti a ciascuno dei principali tipi di entità del grafico della conoscenza di EURIO e consentono un accesso più dettagliato ai contenuti del grafico stesso. I sottografici sono pubblicati come grafici con nome differenti, cioè come sottoinsiemi del grafico della conoscenza di EURIO, ciascuno con la propria etichetta distinta.