Accesso agli open data dell'Unione europea
EUROPAPortale Open Data dell'UESPARQL
Menu

COME USARE L'Endpoint SPARQL

Per accedere ai dati archiviati come triple nel portale Open Data dell’UE, un endpoint SPARQL a lettura automatica permette di effettuare ricerche sulle descrizioni RDF dei set di dati.

SPARQL è un linguaggio di interrogazione  RDF, vale a dire un linguaggio di interrogazione semantica per basi di dati.

La pagina «Linked data» del portale offre un’interfaccia grafica utente per inserire le query SPARQL.

Al seguente URL è disponibile un endpoint a lettura automatica per le attività di programmazione: http://data.europa.eu/euodp/sparqlep

La sezione seguente fornisce una breve introduzione al linguaggio SPARQL e alcuni esempi specifici del contesto del portale Open Data dell’UE.

Per una documentazione completa del linguaggio, è possibile trovare le specifiche di SPARQL sul sito W3C. I modelli utilizzati per descrivere i set di dati catalogati sul portale Open Data dell’UE sono descritti alla pagina «Linked data» alla voce «Vocabolario di metadati».

PREFIX

Per evitare di scrivere gli URI per intero, all'interno di una query possono essere utilizzati i prefissi come abbreviazione.

La sintassi da utilizzare è la seguente:

PREFIX ${PREFIX_NAME}: ${FULL_URI}

Dove:

  • ${PREFIX_NAME} è il nome dell'abbreviazione da utilizzare nella query invece dell'URI per intero.
  • ${FULL_URI} è l'URI che sarà sostituito dal prefisso.

Esempio 1: recupera la lista di editor dei set di dati ordinati dagli URI degli editor:

PREFIX dcat: <http://www.w3.org/ns/dcat#>

PREFIX dc: <http://purl.org/dc/terms/>

SELECT distinct ?Publisher WHERE {

?DatasetURI a dcat:Dataset .

?DatasetURI dc:publisher ?Publisher

 }

ORDER BY (?Publisher) LIMIT 100

SELECT

La parola chiave «SELECT» è usata per indicare quale informazione (variabile) deve restituire la query. La sintassi «SELECT *» è un’abbreviazione usata per selezionare tutte le variabili di una query.

È possibile selezionare diverse variabili.

Esempio 2: recupera la data di pubblicazione e lo stato di uno specifico set di dati:

PREFIX odp: <http://data.europa.eu/euodp/ontologies/ec-odp#>

PREFIX dc: <http://purl.org/dc/terms/>

SELECT ?issued ?status WHERE {

<https://ec.europa.eu/esco> dc:issued ?issued .

<https://ec.europa.eu/esco> odp:datasetStatus ?status

}

La parola chiave «DISTINCT» può essere usata per garantire l’unicità dei risultati.

Esempio 3: recupera la lista di editor dei set di dati (senza duplicati):

PREFIX dcat: <http://www.w3.org/ns/dcat#>

PREFIX dc: <http://purl.org/dc/terms/>

SELECT DISTINCT ?Publisher

WHERE {

?DatasetURI a dcat:Dataset .

?DatasetURI dc:publisher ?Publisher

}

ORDER BY (?Publisher)

Nell’esempio sopra, è usata l’abbreviazione «a». Sostituisce la proprietà «rdf:type».

La parola chiave «COUNT» può essere usata per recuperare il numero di risultati di una variabile.

Esempio 4: recupera il numero di set di dati per editor ordinati per numero di set di dati (ordine discendente):

PREFIX dc: <http://purl.org/dc/terms/>

PREFIX dcat: <http://www.w3.org/ns/dcat#>

SELECT ?Publisher COUNT(?DatasetURI) AS ?DatasetNumber

WHERE {

?DatasetURI a dcat:Dataset .

?DatasetURI dc:publisher ?Publisher

} ORDER BY desc (?DatasetNumber)

WHERE

La parola chiave «WHERE» è usata per specificare una lista di modelli usati per restringere le informazioni da recuperare. Questi modelli sono tripli se uno degli elementi può essere sostituito da una variabile.

Per separare modelli multipli viene usato il carattere «.» come separatore. Ciò consente di combinare i modelli. La loro combinazione funziona come un operatore logico «AND».

Esempio 5: seleziona gli editor che hanno pubblicato alcuni set di dati di tipo» «NameAuthorityList» e il numero di set di dati:

PREFIX dc: http://purl.org/dc/terms/

PREFIX dcat: <http://www.w3.org/ns/dcat#>

PREFIX odp: <http://data.europa.eu/euodp/ontologies/ec-odp#>

SELECT distinct ?Publisher count(?DatasetURI )

WHERE {

?DatasetURI a dcat:Dataset .

?DatasetURI dc:publisher ?Publisher .

?DatasetURI odp:datasetType <http://data.europa.eu/euodp/kos/dataset-type/NameAuthorityList>

}

LIMIT

La parola chiave «LIMIT» consente di porre un limite al numero di risultati che saranno restituiti.

Cfr. esempio 1.

OPTIONAL

Con la parola chiave «OPTIONAL» alcuni modelli nella clausola «WHERE» possono essere impostati come non obbligatori.

Esempio 6: recupera tutti i set di dati che hanno una risorsa con il formato» «text/csv» e, se disponibile, recupera la data di inizio del periodo di copertura temporale dei set di dati:

PREFIX dc: http://purl.org/dc/terms/

PREFIX dcat: <http://www.w3.org/ns/dcat#>

PREFIX odp: <http://data.europa.eu/euodp/ontologies/ec-odp#>

SELECT ?DatasetURI ?period_start WHERE {

?DatasetURI a dcat:Dataset .

?DatasetURI dcat:distribution ?o .

?o odp:distributionFormat "text/csv" .

OPTIONAL {

?DatasetURI dc:temporal ?period .

?period odp:periodStart ?period_start

 }

}

 

FROM

Nel triplestore (che archivia le informazioni RDF), le triple possono essere raggruppate da un grafico. Poi, da una query, è possibile restringere la ricerca a un grafico specifico. Nel contesto del portale Open Data dell’UE, ogni registrazione nel catalogo è archiviata nel suo grafico.

Esempio 7: recupera tutte le triple di una specifica registrazione nel catalogo:

SELECT * FROM <http://data.europa.eu/euodp/data/dataset/PY7AnlFr46ANQZvz1nAhcg>

WHERE {

 ?s ?p ?o

}

FILTER

La parola chiave «FILTER» fornisce un modo per restringere ulteriormente le soluzioni di una clausola WHERE. Le restrizioni possono essere ad esempio regex per i modelli di stringhe o la selezione della lingua.

Esempio 8: seleziona tutti i set di dati che contengono un titolo in italiano:

PREFIX dcat: <http://www.w3.org/ns/dcat#>

PREFIX dc: <http://purl.org/dc/terms/>

SELECT ?DatasetURI ?title WHERE {

?DatasetURI a dcat:Dataset .

?DatasetURI dc:title ?title

FILTER (lang(?title)='it')

}

Esempio 9: recupera tutti i set di dati che contengono la parola chiave» «animale» nel titolo in inglese:

PREFIX dcat: <http://www.w3.org/ns/dcat#>

PREFIX dc: <http://purl.org/dc/terms/>

SELECT ?DatasetURI ?title WHERE {

?DatasetURI a dcat:Dataset .

?DatasetURI dc:title ?title

FILTER (lang(?title)='en')

FILTER(regex(?title, "animal", "i"))

}

Il parametro opzionale «i» nella funzione «regex» restituisce i risultati con caratteri maiuscoli e minuscoli (ricerca senza distinzione maiuscole/minuscole).

Use Case  – Recupera tutti i metadati di tutti i registri

Dal momento che i fornitori di dati possono fornire ulteriori metadati rispetto al modello CKAN, l’approccio migliore sarebbe quello di utilizzare l’endpoint SPARQL per questa query.

SELECT  * WHERE {

GRAPH ?graph {

?s ?p ?o

}

FILTER (regex(?graph, "^http://data.europa.eu/euodp/data/dataset/"

))}

Questa query restituisce solo una parte del catalogo, dal momento che il triplestore ha un limite di triple che può restituire. Per evitare questo limite, l’approccio suggerito è utilizzare l’impaginazione tramite le parole chiave «LIMIT» e «OFFSET ».