SELECT DISTINCT ?graph
WHERE{
GRAPH ?graph {?s ?p ?o}
}
Come prima cosa chiediamo quali sono tutti i grafi disponibili.
La query restituisce l'insieme dei grafi in formato JSON.
La tabella che vedi dopo aver eseguito la query è ottenuta facendo un parsing del risultato JSON.
Seleziona un grafo dalla tabella per utilizzarlo nei prossimi step di ricerca.
Prima di ricercare le risorse vere è proprie è utile sapere che tipi di risorse sono presenti nel grafo che abbiamo scelto (o in tutti i grafi della Regione Umbria se non abbiamo selezionato nessun grafo dalla tabella precedente).
Selezionando un tipo di dato, tra i risultati di questa query, fai in modo che la prossima query restituisca solo le risorse del tipo scelto.
SELECT DISTINCT ?o
WHERE{
?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?o
}
SELECT DISTINCT ?s ?p ?o
WHERE{
?s ?p ?o .
?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <>
}
LIMIT 50
Possiamo finalmente effettuare una query delle risorse del tipo e nel grafo selezionati in precedenza.
Questa volta richiediamo tutte le triple che hanno come soggetto una risorsa del tipo scelto, il risultato sarà quindi un insieme di triple.
Soggetti, predicati e oggetti possono assumere valori literal, blank node o URI. Le risorse identificate da URI possiedono una rappresentazione HTML che puoi visualizzare con un semplice click.
Vediamo ora delle query più elaborate in modo tale da comprendere la sintassi SPARQL.
Come forse avrai intuito, le variabili sono precedute dal segno ?.
Nella clausola SELECT definiamo le variabili che devono essere mostrate in output, esse quindi devono essere necessariamente definite nella clausola WHERE.
Nella clausola WHERE filtriamo le triple del nostro grafo. Di base la sintassi ?s ?p ?o
restituisce tutte le triple del grafo.
Il simbolo "." permette di concatenare le condizioni,
quindi la sintassi ?s ?p ?o. ?s <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> ?o
restituisce tutte le triple del grafo
che hanno come soggetto una risorsa che possiede il predicato http://www.w3.org/1999/02/22-rdf-syntax-ns#type
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
SELECT ?resource_uri ?label
WHERE {
?resource_uri geo:lat ?lat.
?resource_uri geo:long ?long.
?resource_uri rdfs:label ?label.
FILTER(xsd:double(?lat) <= xsd:double(43.137743) &&
xsd:double(?lat) >= xsd:double(43.064482) &&
xsd:double(?long) <= xsd:double(12.419962) &&
xsd:double(?long) >= xsd:double(12.329279)
)
}
Vediamo come estrarre i nomi di tutti gli attrattori appartenenti all'area Perugina
Le risorse sono filtrate in base alla longitudine e latitudine, prova a variare i valori per ottenere gli attrattori di tutta la regione Umbria.
Vediamo come estrarre gli eventi organizzati a Terni
Le risorse sono filtrate in base al nome del comune di appartenenza.
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX schema: <http://schema.org/>
SELECT ?resource_uri ?nome_evento
WHERE{
?resource_uri rdfs:label ?nome_evento.
?resource_uri rdf:type schema:Event.
?resource_uri dbpedia-owl:municipality ?municipality.
FILTER regex(?municipality, "Terni", "i")
}