Skip to main content
European Commission logo
italiano italiano
CORDIS - Risultati della ricerca dell’UE
CORDIS
CORDIS Web 30th anniversary CORDIS Web 30th anniversary

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.

Gli esempi che seguono mirano a dimostrare come si possono costruire query SPARQL per cercare e recuperare informazioni dal grafico della conoscenza EURIO.

Partiamo da questo semplice esempio per iniziare a ottenere informazioni più specifiche:

Trovare tutti i titoli dei progetti

La parola chiave PREFIX associa un’etichetta all’IRI dello spazio dei nomi in cui sono definite le entità; nell’esempio corrente, utilizziamo i termini «Progetto» e «titolo» che sono definiti nell’ontologia EURIO il cui IRI è http://data.europa.eu/s66#.

La query è composta da due parti:

  • la clausola SELECT imposta le variabili da visualizzare nei risultati della query. Nelnostro esempio, ?project_title contiene il valore del titolo del progetto richiesto (il nome delle variabili è a scelta dell’utente).
  • la clausola WHERE fornisce il modello di grafico da confrontare con il grafico della conoscenza di EURIO. Il nostro esempio consiste in due modelli tripli congiuntivi, cioè due modelli che devono essere abbinati:
    • un modello triplo con la variabile ?project usata per esprimere che le entità del progetto richieste devono appartenere alla classe eurio:Project;
    • un modello triplo che inizia con la variabile ?project dove la variabile ?title deve contenere i titoli di questi progetti.

Ordiniamo i risultati per titolo con la clausola ORDER BY, che deve essere inserita dopo la clausola WHERE.

Poiché ci aspettiamo che l’elenco risultante sia lungo, utilizziamo la clausola LIMIT per mostrare solo 100 risultati. Inoltre, a scopo dimostrativo, saltiamo i primi 1000 risultati con la clausola OFFSET.

La query completa è la seguente:

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

Utilizzando il titolo di un progetto, potremmo essere interessati a trovare le seguenti informazioni:

Trovare le date di inizio e fine del progetto «taRgeted thErapy for adVanced colorEctal canceR paTients»

A tal fine, specifichiamo queste condizioni nella clausola WHERE:

  • Impostiamo che il valore del titolo del progetto (eurio:title) sia la stringa «taRgeted thErapy for adVanced colorEctal canceR paTients».
  • La data di inizio del progetto è memorizzata nella variabile ?project_start_date.
  • La data di fine del progetto è memorizzata nella variabile ?project_end_date.

La query è la seguente:

PREFIX eurio: <http://data.europa.eu/s66#>
SELECT ?project_start_date ?project_end_date 
WHERE {
  ?project eurio:title 'taRgeted thErapy for adVanced colorEctal canceR paTients'.
  ?project eurio:startDate ?project_start_date .
  ?project eurio:endDate ?project_end_date .
}

Possiamo addentrarci nel progetto dalla query precedente con la seguente:

Individuare i partecipanti al progetto «taRgeted thErapy for adVanced colorEctal canceR paTients» e il loro ruolo nel progetto

Considerando le informazioni che vogliamo siano restituite, nella clausola WHERE specifichiamo queste condizioni:

  • Impostiamo che il valore del titolo del progetto (eurio:title) sia la stringa «taRgeted thErapy for adVanced colorEctal canceR paTients».
  • I ruoli delle organizzazioni coinvolte nel progetto sono memorizzati nella variabile ?organisation_role.
  • Il nome del ruolo dell’organizzazione è memorizzata nella variabile ?role_label.
  • La variabile ?organisation si riferisce ai partecipanti associati.
  • La variabile ?organisation_name contiene i nomi legali delle organizzazioni.
  • Il risultato viene inoltre ordinato alfabeticamente in base a ?organisation_name utilizzando ORDER BY DESC(?organisation_name).
PREFIX eurio: <http://data.europa.eu/s66#> 
SELECT ?organisation_name ?role_label
WHERE {
  ?project eurio:title 'taRgeted thErapy for adVanced colorEctal canceR paTients' .
  ?project eurio:hasInvolvedParty ?organisation_role .
  ?organisation_role eurio:roleLabel ?role_label .
  ?organisation_role eurio:isRoleOf ?organisation .
  ?organisation eurio:legalName ?organisation_name .
} 
ORDER BY DESC(?organisation_name)

Poiché CORDIS contiene informazioni sulla ricerca, potremmo anche sfruttare la tassonomia EuroSciVoc per filtrare i risultati. EuroSciVoc è una tassonomia multilingue che rappresenta tutti i principali campi scientifici di CORDIS e si usa per classificare i dati. Contiene più di 1 000 categorie in 6 lingue (inglese, francese, tedesco, italiano, polacco e spagnolo) e ogni categoria è arricchita da parole chiave pertinenti estratte dalla descrizione testuale dei progetti CORDIS.

Le prossime due query mostrano come combinare le informazioni ottenute da queste e utilizzare EuroSciVoc per limitare i risultati al campo scientifico dell’intelligenza artificiale.

Recuperare il titolo e le date di inizio e fine di tutti i progetti con partecipanti provenienti dalla Grecia nel settore dell’intelligenza artificiale.

Considerando le informazioni che vogliamo siano restituite, nella clausola WHERE specifichiamo queste condizioni:

  • I progetti devono essere inseriti nella categoria «artificial intelligence» in EuroSciVoc. Li troviamo attraverso il nome del concetto EuroSciVoc (?euroSciVoc_label_value), che abbiamo impostato come «artificial intelligence». Aggiungiamo anche «@en» per assicurarci di trovare il nome inglese del concetto di intelligenza artificiale.
  • Per trovare i progetti in Grecia dobbiamo trovare le organizzazioni coinvolte (memorizzate nella variabile ?organization) e recuperare il loro paese cercando l’entità eurio:Country il cui eurio:name è «Greece».
  • Il titolo del progetto è memorizzato nella variabile ?project_title.
  • La data di inizio del progetto è memorizzata nella variabile ?project_start_date.
  • La data di fine del progetto è memorizzata nella variabile ?project_end_date.

La query SPARQL risultante è la seguente:

PREFIX eurio: <http://data.europa.eu/s66#>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
SELECT DISTINCT ?project_title ?project_start_date ?project_end_date 
WHERE {
  ?project eurio:title ?project_title .
  ?project eurio:startDate ?project_start_date .
  ?project eurio:endDate ?project_end_date .
  ?project eurio:hasEuroSciVocClassification ?euroSciVoc.
  ?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
  ?euroSciVoc_label skos-xl:literalForm 'artificial intelligence'@en.
  ?role eurio:isInvolvedIn ?project .
  ?role eurio:isRoleOf ?organisation .
  ?organisation eurio:hasSite ?site .
  ?site eurio:hasGeographicalLocation ?country .
  ?country a eurio:Country;
  eurio:name 'Greece' .
}

Recuperare i nomi dei partecipanti e il loro ruolo per tutti i progetti con partecipanti provenienti dalla Grecia nel settore dell’intelligenza artificiale

Considerando le informazioni che vogliamo siano restituite, la query è come la precedente, con le seguenti condizioni nella clausola WHERE:

  • I progetti devono essere inseriti nella categoria «artificial intelligence» in EuroSciVoc. Li troviamo attraverso il nome del concetto EuroSciVoc (?euroSciVoc_label_value), che abbiamo impostato come «artificial intelligence». Aggiungiamo anche «@en» per assicurarci di trovare il nome inglese del concetto di intelligenza artificiale.
  • Per trovare i progetti in Grecia dobbiamo trovare le organizzazioni coinvolte (memorizzate nella variabile ?organisation) e recuperare il loro paese cercando l’entità eurio:Country il cui eurio:name è «Greece».
  • L’informazione eurio:hasInvolvedParty del progetto ?project è memorizzata nella variabile ?organisation_role.
  • L’informazione eurio:roleLabel relativa a ?organisation_role è memorizzata nella variabile ?role.
  • L’informazione eurio:isRoleOf relativa a ?organization_role è memorizzata nella variabile ?organization.
  • L’informazione eurio:legalName relativa a ?organisation è memorizzata nella variabile ?organisation_name.
PREFIX eurio: <http://data.europa.eu/s66#>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
SELECT ?project*title ?role ?organisation*name 
WHERE {
  ?project eurio:hasEuroSciVocClassification ?euroSciVoc.
  ?euroSciVoc skos-xl:prefLabel ?euroSciVoc*label .
  ?euroSciVoc*label skos-xl:literalForm 'artificial intelligence'@en .
  ?project eurio:title ?project*title .
  ?project eurio:hasInvolvedParty ?organisation*role .
  ?organisation*role eurio:roleLabel ?role .
  ?organisation*role eurio:isRoleOf ?organisation .
  ?organisation eurio:legalName ?organisation*name .
  ?organisation eurio:hasSite ?site .
  ?site eurio:hasGeographicalLocation ?country .
  ?country a eurio:Country;
  eurio:name 'Greece' .
}
ORDER BY DESC(?project*title)

Nell’indagare l’impatto del settore dell’intelligenza artificiale in Grecia, bisogna sapere che CORDIS contiene anche informazioni sulle pubblicazioni scientifiche dei progetti, per cui si potrebbe estendere la ricerca precedente:

Data un’organizzazione, trovare i progetti correlati nel campo dell’intelligenza artificiale e le relative pubblicazioni

Considerando le informazioni che vogliamo siano restituite, nella clausola WHERE specifichiamo queste condizioni:

  • I progetti devono essere inseriti nella categoria «artificial intelligence» in EuroSciVoc. Li troviamo attraverso il nome del concetto EuroSciVoc (?euroSciVoc_label_value), che abbiamo impostato come «artificial intelligence». Aggiungiamo anche «@en» per assicurarci di trovare il nome inglese del concetto di intelligenza artificiale.
  • Per trovare l’organizzazione attesa, recuperiamo i nomi legali delle organizzazioni e li memorizziamo nella variabile ?organisation_name. Quindi, specifichiamo l’organizzazione con un filtro: FILTER(str(?organisation_name) = ’ETHNIKO KENTRO EREVNAS KAI TECHNOLOGIKIS ANAPTYXIS’).
  • La query memorizza tutti i progetti relativi al campo scientifico dell’intelligenza artificiale nella variabile ?project.
  • Quindi, trova tutti i ruoli dell’organizzazione associati (i ruoli sono memorizzati nella variabile ?role).
  • Parallelamente, controlla quali ruoli dell’organizzazione sono associati all’organizzazione indicata nella variabile ?organisation.
  • Sulla base di questi controlli, ricava i progetti che sono associati all’organizzazione inserita e memorizza le pubblicazioni dei progetti. Le pubblicazioni sono memorizzate nella variabile ?result.
  • La query restituisce: i) il titolo del progetto in cui sono coinvolti (?project_title), ii) il titolo della pubblicazione (?publication_title), iii) gli autori (?authors), iv) il DOI (?doi) e v) l’editore (?publisher). I risultati sono ordinati in base alla pubblicazione e al titolo del progetto usando ORDER BY ?publication ?project_title.
PREFIX eurio: <http://data.europa.eu/s66#>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
SELECT ?project_title ?publication ?authors ?doi ?publisher
WHERE {
  ?organisation eurio:legalName ?organisation_name .
  ?role eurio:isRoleOf ?organisation .
  ?role eurio:isInvolvedIn ?project .
  ?project eurio:hasEuroSciVocClassification ?euroSciVoc .
  ?project eurio:title ?project_title .
  ?project eurio:hasResult ?result .
  ?result a eurio:ProjectPublication .
  ?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
  ?euroSciVoc_label skos-xl:literalForm 'artificial intelligence'@en .
  OPTIONAL { ?result eurio:title ?publication }
  OPTIONAL { ?result eurio:doi ?doi }
  OPTIONAL { ?result eurio:author ?authors }
  OPTIONAL { ?result eurio:publisher ?publisher }
  FILTER(str(?organisation_name) = 'ETHNIKO KENTRO EREVNAS KAI TECHNOLOGIKIS ANAPTYXIS')
}
ORDER BY ?publication ?project_title

Finora abbiamo parlato di progetti di intelligenza artificiale in Grecia, quindi potremmo essere interessati a sapere quanto questo argomento sia studiato a livello europeo con la seguente query:

Elencare i primi 10 paesi per numero di progetti nel campo dell’intelligenza artificiale

Specifichiamo le condizioni nella clausola WHERE:

  • I progetti devono essere inseriti nella categoria «artificial intelligence» in EuroSciVoc. Li troviamo attraverso il nome del concetto EuroSciVoc (?euroSciVoc_label_value), che abbiamo impostato come «artificial intelligence». Aggiungiamo anche «@en» per assicurarci di trovare il nome inglese del concetto di intelligenza artificiale.
  • La query memorizza tutti i progetti relativi al campo scientifico dell’intelligenza artificiale nella variabile ?project.
  • Quindi, trova tutti i ruoli dell’organizzazione associati ai progetti (i ruoli sono memorizzati nella variabile ?role).
  • Poi, trova l’organizzazione collegata ai ruoli dell’organizzazione e li memorizza nella variabile ?organisation. Infine, la query trova i paesi in cui si trovano le organizzazioni e memorizza i loro nomi nella variabile ?country_name.
  • I risultati sono ordinati per numero di progetti in ordine decrescente con ORDER BY DESC (?total_projects_in_country) e LIMIT 10 per mostrare i primi dieci paesi.
PREFIX eurio: <http://data.europa.eu/s66#>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
SELECT ?country_name (COUNT(?project) AS ?total_projects_in_country)
WHERE {
  ?project eurio:hasEuroSciVocClassification ?euroSciVoc.
  ?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
  ?euroSciVoc_label skos-xl:literalForm 'artificial intelligence'@en .
  ?role eurio:isInvolvedIn ?project .
  ?role eurio:isRoleOf ?organisation .
  ?organisation eurio:hasSite ?site .
  ?site eurio:hasGeographicalLocation ?country .
  ?country a eurio:Country .
  ?country eurio:name ?country_name .
} 
GROUP BY ?country_name
ORDER BY DESC (?total_projects_in_country)
LIMIT 10

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 prossima query combina le informazioni di EURIO e del the EU Knowledge Graph che contiene, tra l’altro, i progetti Kohesio, finanziati dall’Unione europea nell’ambito della politica di coesione per il periodo di programmazione 2014-2020. Kohesio copre i progetti sviluppati nell’ambito dei programmi operativi nazionali e regionali cofinanziati dal Fondo europeo di sviluppo regionale (FESR), dal Fondo di coesione (FC) e dal Fondo sociale europeo (FSE), inclusa, se del caso, l’iniziativa a favore dell’occupazione giovanile. Kohesio comprende anche i progetti dei programmi di cooperazione territoriale europea (noti anche come INTERREG).

Questa query consente all’utente di:

Identificare in CORDIS e KOHESIO il numero di progetti e il relativo finanziamento a cui partecipa una determinata organizzazione

Specifichiamo le condizioni nella clausola WHERE:

  • Specifichiamo che il valore della variabile ?organisation_name è «UNIVERSIDAD CARLOS III DE MADRID».
  • Trova quindi tutti i ruoli dell’organizzazione collegati ai progetti (memorizzati nella variabile ?role), insieme alle informazioni sull’importo massimo della sovvenzione (memorizzate in ?grant_amount), e si assicura anche che siano quelli della «UNIVERSIDAD CARLOS III DE MADRID» tramite la variabile ?organization.
  • Da ?grant_payment, la query passa in rassegna le proprietà per arrivare all’importo del finanziamento, che memorizziamo nella variabile ?funding_amount.
  • La query viene quindi effettuata dall’endpoint di Kohesio, in base al nome dell’organizzazione inserito dal grafico della conoscenza EURIO:
    1. il costo totale di ciascun progetto (memorizzato nella variabile ?total_budget)
    2. il contributo dell’UE (memorizzato in ?eu_contribution).
  • La query restituisce: i) il numero totale di progetti in CORDIS (?total_projects_cordis), ii) il numero totale di progetti in Kohesio(?total_projects_kohesio), iii) il costo totale di ogni progetto (attraverso ?total_budget) e iv) il contributo dell’UE (?eu_contribution) per la data organizzazione. Per ottenere i valori, si utilizza la funzione SUM, che somma i valori dell’espressione specificata.
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX kohesio: <https://linkedopendata.eu/prop/direct/>
SELECT (COUNT(DISTINCT ?project_cordis) AS ?total_projects_cordis) (SUM(?funding_amount) AS ?total_funding_cordis)
(COUNT(DISTINCT ?project_kohesio) AS ?total_projects_kohesio) (SUM(?budget) AS ?total_budget_kohesio) (SUM(?eu_contribution) AS ?total_eu_contribution_kohesio)
WHERE {
  ?organisation eurio:legalName 'UNIVERSIDAD CARLOS III DE MADRID'.
  ?role eurio:isRoleOf ?organisation ;
  eurio:isInvolvedIn ?project_cordis ;
  eurio:isRecipientOf ?grant_amount .
  ?grant_amount eurio:hasPaymentAmount ?monetary_amount . 
  ?monetary_amount eurio:value ?funding_amount .
  SERVICE <https://query.linkedopendata.eu/sparql> {
    ?project_kohesio kohesio:P841 'UNIVERSIDAD CARLOS III DE MADRID' ;
      kohesio:P474 ?budget ;
      kohesio:P835 ?eu_contribution .
  }
}

La prossima query si basa sulla nozione di «piccola università», che il Times Higher Education, una rivista britannica responsabile dell’annuale Times Higher Education–QS World University Ranking, definisce come qualsiasi università con meno di 5 000 studenti. Poiché queste informazioni non sono presenti in CORDIS, ci affidiamo a Wikidata, che è una base di conoscenza secondaria, libera, collaborativa e multilingue, che raccoglie dati strutturati per fornire supporto a Wikipedia, Wikimedia Commons, agli altri wiki del movimento Wikimedia e a chiunque nel mondo.

Questa query consente all’utente di:

Trovare tutte le piccole università e i loro paesi, oltre al titolo e al loro id dei progetti a cui partecipano nell’area della sicurezza dei farmaci

Specifichiamo le condizioni nella clausola WHERE:

  • I progetti devono essere inseriti nella categoria «sicurezza dei farmaci» in EuroSciVoc. Li troviamo attraverso il nome del concetto EuroSciVoc (?euroSciVoc_label_value), che abbiamo impostato come «drug safety». Infine, aggiungiamo «@en» per assicurarci di trovare il nome inglese del concetto di sicurezza dei farmaci.
  • La query memorizza tutti i progetti relativi al campo scientifico della sicurezza dei farmaci, il loro titolo e gli id degli accordi di sovvenzione nella variabile ?project.
  • Quindi, trova tutti i ruoli dell’organizzazione associati ai progetti (i ruoli sono memorizzati nella variabile ?role).
  • I nomi delle università sono memorizzati nella variabile ?organisation_name e il numero di partita IVA nella variabile ?vat_number. Utilizziamo il numero di partita IVA delle università per associarle alle controparti di Wikidata (in quanto può essere considerato un valore identificativo univoco).
  • Infine, la query trova i paesi in cui si trovano le organizzazioni e memorizza i loro nomi nella variabile ?country_name.
  • Oltre a trovare le università, utilizziamo la variabile ?statement di Wikidata, che contiene sia le informazioni sul numero di studenti (?students) sia la data in cui questo numero è stato calcolato (?time, che è un’altra ?statement che contiene la data effettiva nella variabile ?date).
  • Poiché abbiamo bisogno di gruppi specifici di informazioni, utilizziamo due funzioni FILTER:
    1. Il primo filtra tutte le università con meno di 5 000 studenti
    2. Il secondo utilizza la funzione YEAR sulla variabile ?date per trasformarla in un anno, ad esempio da «1 gennaio 2022» a «2022», unificando così la rappresentazione della data. Questo filtro è impostato per il periodo dal 2020 in poi, per tenere conto delle informazioni recenti sulla popolazione studentesca.
  • La query restituisce: i) il nome dell’università (?organisation_name), ii) il titolo del progetto in cui è coinvolta (?project_title) e iii) l’ID dell’accordo di sovvenzione (?id).
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
PREFIX skos-xl: <http://www.w3.org/2008/05/skos-xl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX p: <http://www.wikidata.org/prop/>
PREFIX pqv: <http://www.wikidata.org/prop/qualifier/value/>
PREFIX ps: <http://www.wikidata.org/prop/statement/>
PREFIX wikibase: <http://wikiba.se/ontology#> 
SELECT DISTINCT ?organisation_name ?project_title ?id 
WHERE { 
  ?role eurio:isRoleOf ?organisation .
  ?role eurio:isInvolvedIn ?project .
  ?project eurio:title ?project_title .
  ?project eurio:identifier ?id .
  ?project eurio:hasEuroSciVocClassification ?euroSciVoc.
  ?euroSciVoc skos-xl:prefLabel ?euroSciVoc_label .
  ?euroSciVoc_label skos-xl:literalForm 'drug safety'@en .
  ?organisation eurio:legalName ?organisation_name .
  ?organisation eurio:vatNumber ?vat_number.
  ?organisation eurio:hasSite ?site .
  ?site eurio:hasGeographicalLocation ?country .
  ?country a eurio:Country .
  ?country eurio:name ?country_name .
  SERVICE <https://query.wikidata.org/sparql> {
    ?wikidata_org wdt:P3608 ?vat_number .
    ?wikidata_org p:P2196 ?statement.
    ?statement pqv:P585 ?time .
    ?statement ps:P2196 ?students .
    ?time wikibase:timeValue ?date .
    FILTER (YEAR(?date) >= 2020)
    FILTER(?students < 5000)
  }
}

La prossima query federata estende la ricerca con i dati CELLAR dati. CELLAR è l’archivio dati comune dell’Ufficio delle pubblicazioni dell’Unione europea. Le pubblicazioni digitali e i metadati vengono archiviati e diffusi tramite CELLAR, per essere utilizzati da esseri umani e macchine. Con l’obiettivo di servire gli utenti in modo trasparente, CELLAR archivia pubblicazioni e metadati multilingue, è aperto a tutti i cittadini dell’Unione europea e fornisce dati leggibili meccanicamente.

Essendo l’archivio ufficiale dell’Ufficio delle pubblicazioni dell’Unione europea, CELLAR contiene diverse tabelle di autorità, una delle quali è paesi e territori, che include informazioni geopolitiche aggiuntive che mancano in CORDIS.

Le prossime tre query mostrano come estrarre tre informazioni abbinando i paesi e i territori di CELLAR con quelli di CORDIS attraverso i codici ISO 3166-1 alpha-2. Queste informazioni sono:

  • Continenti: la query utilizza la nozione di continente per trovare tutti i partecipanti africani ai progetti, insieme al loro id e titolo.
  • Regioni geografiche: la query utilizza lo schema geografico delle Nazioni Unite, che è un raggruppamento regionale di paesi e territori secondo lo schema geografico delle Nazioni Unite, per trovare tutti i partecipanti ai progetti, insieme al loro id e titolo, della regione geografica dell’Africa occidentale.
  • Partenariati internazionali: la query utilizza i partenariati internazionali, come quello del vicinato meridionale, per trovare tutti i partecipanti ai progetti, insieme al loro id e titolo, appartenenti a questo specifico partenariato, che comprende dieci paesi partner: Algeria, Egitto, Israele, Giordania, Libano, Libia, Marocco, Palestina, Siria e Tunisia.

Trovare progetti con partecipanti provenienti dall’Africa

Specifichiamo le condizioni nella clausola WHERE:

  • Si inizia interrogando la banca dati CELLAR, specificando il grafo http://publications.europa.eu/resource/authority/country per recuperare tutti i paesi, identificati dalla loro skos:notation. Viene filtrato il codice ?cellar_code per garantire che sia conforme al tipo di dato ISO 3166-1 alpha-2.
  • All’interno del blocco SERVICE, controlla i paesi africani, utilizzando la proprietà ogcgs:sfWithin per collegare paesi specifici all’URI del continente africano (http://publications.europa.eu/resource/authority/continent/AFRICA), che proviene dalla tabella delle autorità per i continenti.
  • Per ogni progetto, la query recupera il titolo del progetto (memorizzato in ?project_title), l’identificativo dell’accordo di sovvenzione (memorizzato in ?id) e il nome legale dell’organizzazione associata (memorizzato in ?organisation_name). Raccoglie inoltre informazioni sulla posizione geografica della sede dell’organizzazione, che include il nome del paese (memorizzato in ?country_name).
  • Inoltre, la query lega la rappresentazione stringa del codice CELLAR a ?cordis_code per identificare il paese nell’indirizzo dell’organizzazione da CORDIS.
  • La query restituisce: i) il titolo del progetto in cui è coinvolta (?project_title), ii) l’identificativo dell’accordo di sovvenzione (?id), iii) il nome dell’organizzazione (?organisation_name) e iv) il paese dell’organizzazione (?country_name). Utilizzando ORDER BY ASC (?country_name), disponiamo i risultati in ordine alfabetico crescente in base al nome del paese.
PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX ogcgs: <http://www.opengis.net/ont/geosparql#>
SELECT ?project_title ?id ?organisation_name ?country_name
WHERE {
  SERVICE <https://publications.europa.eu/webapi/rdf/sparql>
    {GRAPH <http://publications.europa.eu/resource/authority/country>{
      ?s skos:notation ?cellar_code.
      FILTER(datatype(?cellar_code)=<http://publications.europa.eu/ontology/euvoc#ISO_3166_1_ALPHA_2>)
      ?s ogcgs:sfWithin <http://publications.europa.eu/resource/authority/continent/AFRICA> 
    }
  }
  BIND(STR(?cellar_code) as ?cordis_code)
  ?project eurio:title ?project_title .
  ?project eurio:identifier ?id .
  ?project eurio:hasInvolvedParty ?participant . 
  ?participant eurio:isRoleOf ?organisation . 
  ?organisation eurio:legalName ?organisation_name .
  ?organisation eurio:hasSite ?site .
  ?site eurio:hasAddress ?address .
  ?address eurio:addressCountry ?cordis_code .
  ?site eurio:hasGeographicalLocation ?country .
  ?country a eurio:Country.
  ?country eurio:name ?country_name .
}
ORDER BY ASC(?country_name)

Trovare progetti con partecipanti provenienti dall’Africa occidentale

Questa query è uguale alla precedente, con l’unica differenza nella specifica del filtro geografico nel blocco SERVICE, in quanto controlla i paesi appartenenti alla regione geografica dell’Africa occidentale. Per fare ciò, la query memorizza il nome della regione nella variabile ?unsd_geoscheme e la trova applicando due funzioni FILTER:

  • Il primo filtro restringe la ricerca sull’attributo skos:notation a quello con il tipo di dato http://publications.europa.eu/ontology/euvoc#UNSD_GEOSCHEME.
  • Il secondo filtro cerca solo i valori nella variabile ?unsd_geoscheme che corrispondono alla stringa «Western Africa» utilizzando la funzione CONTAINS, che verifica se la variabile contiene la stringa specificata.

Per completezza, di seguito è riportata la query completa:

PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?project_title ?id ?organisation_name ?country_name
WHERE {
  SERVICE <https://publications.europa.eu/webapi/rdf/sparql> {
    GRAPH <http://publications.europa.eu/resource/authority/country>{
      ?s skos:notation ?cellar_code.
      FILTER(datatype(?cellar_code)=<http://publications.europa.eu/ontology/euvoc#ISO_3166_1_ALPHA_2>) 
      ?s skos:notation ?unsd_geoscheme .
      FILTER(datatype(?unsd_geoscheme)=<http://publications.europa.eu/ontology/euvoc#UNSD_GEOSCHEME>)
      FILTER(CONTAINS(?unsd_geoscheme,'Western Africa')) 
    }
  }
  BIND(STR(?cellar_code) as ?cordis_code)
  ?project eurio:title ?project_title .
  ?project eurio:identifier ?id .
  ?project eurio:hasInvolvedParty ?participant . 
  ?participant eurio:isRoleOf ?organisation . 
  ?organisation eurio:hasSite ?site .
  ?organisation eurio:legalName ?organisation_name .
  ?site eurio:hasGeographicalLocation ?country .
  ?country a eurio:Country .
  ?country eurio:name ?country_name .
  ?site eurio:hasAddress ?address .
  ?address eurio:addressCountry ?cordis_code .
}
ORDER BY ASC(?country_name)

Trovare progetti con partecipanti provenienti da paesi inclusi nella politica europea di vicinato (parte meridionale).

Questa query è uguale alla precedente, con l’unica differenza nella specifica del filtro geografico nel blocco SERVICE, in quanto controlla i paesi appartenenti al partenariato del vicinato meridionale. Per farlo, memorizza la relazione tra il paese e il vicinato meridionale attraverso la proprietà org:hasMembership, che porta all’URI del partenariato a cui il paese appartiene, cioè http://publications.europa.eu/resource/authority/corporate-body/ENP-SOUTH.

Per completezza, di seguito è riportata la query completa:

PREFIX eurio:<http://data.europa.eu/s66#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX org: <http://www.w3.org/ns/org#> 
SELECT ?project_title ?id ?organisation_name ?country_name
WHERE {
  SERVICE <https://publications.europa.eu/webapi/rdf/sparql> {
    GRAPH <http://publications.europa.eu/resource/authority/country>{
      ?s skos:notation ?cellar_code.
      FILTER(datatype(?cellar_code)=<http://publications.europa.eu/ontology/euvoc#ISO_3166_1_ALPHA_2>) 
      ?s org:hasMembership ?international_partnership .
      ?international_partnership org:organization <http://publications.europa.eu/resource/authority/corporate-body/ENP-SOUTH>}
  }
  BIND(STR(?cellar_code) as ?cordis_code)
  ?project eurio:title ?project_title .
  ?project eurio:identifier ?id .
  ?project eurio:hasInvolvedParty ?participant . 
  ?participant eurio:isRoleOf ?organisation . 
  ?organisation eurio:legalName ?organisation_name .
  ?organisation eurio:hasSite ?site .
  ?site eurio:hasGeographicalLocation ?country .
  ?country a eurio:Country .
  ?country eurio:name ?country_name .
  ?site eurio:hasAddress ?address .
  ?address eurio:addressCountry ?cordis_code .
}
ORDER BY ASC(?country_name)

È 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.