2. Intro
● LOD, ovvero Linked Open Data
– Linked Data + Open Data = Dati “a
5 stelle”
● Il WWW è un immenso database
(Web of Data)
● Cosa vuol dire? A che serve? A chi
serve?
4. Dati a 5 stelle: come
★ Disponibili sul Web in qualsiasi formato purché con licenza
aperta (per diventare Open Data)
★★ Disponibili come dati strutturati “machine readable” (per esempio
in formato Excel invece della scansione di una tabella)
★★★ Come (2) più formato non proprietario (per esempio CSV
invece di Excel)
★★★★ Tutti i precedenti più uso di standard aperti sviluppati dal W3C
(RDF e SPARQL) per identificare le risorse, così è possibile
trovare il proprio materiale in rete
★★★★★ Tutti i precedenti più collegamento dei propri dati a dati altrui per
dare contesto
5. Dati a 5 stelle: per chi
★ Chiunque può leggere, stampare, condividere i dati
★★ (1) + chiunque può processare automaticamente i dati usando
software proprietario
★★★ (2) + chiunque più processare automaticamente i dati senza il
vincolo di possedere alcun tipo di software proprietario
★★★★ (3) + chiunque può creare link e bookmark verso i dati e
aggiungervi altri dati
★★★★★ (4) + chiunque può scoprire altre informazioni rilevanti e capire lo
schema dei dati
6. Principi
● Usare URI come ID unico per una
risorsa; diverso da URL
● Usare HTTP (invece di altri schemi
come URN, ISBN ecc.)
● Fornire informazioni utili quando si
dereferenzia un ID
● Fornire link ad altre risorse
9. RDF: principi
● RDF (Resource Description
Framework) è uno dei mattoncini per
costruire i LOD
● È un modello, non un formato
– RDF non vuol dire necessariamente
XML!
– Diverse serializzazioni
10. RDF: serializzazioni
● Diversi formati:
– XML
– Turtle
– RDFa
● Scarichiamo un file RDF da Internet
– http://www.ivan-herman.net/foaf.rdf
– http://www.ivan-herman.net/foaf.ttl
14. RDF: serializzazioni
● Si può usare la content negotiation per ottenere
serializzazioni diverse per lo stesso file
– Da Linux si può usare curl
– In alternativa, ci sono client REST per Firefox
e Chrome
● $ curl H "Accept: application/rdf+xml"
http://www.ivanherman.net/foaf
● $ curl H "Accept: text/turtle”
http://www.ivanherman.net/foaf
15. RDF: principi
● RDF si basa sul concetto di tripla, cioè:
– di soggetto legato a un oggetto tramite un
predicato
– di attributo che lega un'entità identificata da un
URI a un valore (o a un'altra entità)
● Diversamente dai database tradizionali, è la
relazione tra due elementi che conta
16. RDF: principi
Database relazionale:
RDF:
Qual è l'unità di misura del peso? Cosa vuol dire “prodotto”?
Peso Prodotto
Ingrediente 1 10 Prodotto 1
Ingrediente 2 20 Prodotto 1
Ingrediente 1
Ingrediente 2
Prodotto 1
prodotto
prodotto
10
20
peso
peso
17. RDF: schema dati
● In un database relazionale dobbiamo
cercare altrove la definizione precisa dello
schema dei dati
● Usando RDF possiamo descrivere nel
dettaglio sia i dati che lo schema!
● Per farlo ci serviremo di vocabolari
– I termini di un vocabolario hanno un URI
di base comune chiamato namespace
18. Vocabolari comuni
● rdf, rdfs, owl – il “core” di RDF
● dcterms – proprietà generiche delle risorse
● FOAF – Friend of a Friend (ci torniamo più tardi)
● geo – geolocalizzazione
● skos – descrizione di schemi e tassonomie
● void, dcat – descrizione di dataset
● doap – descrizione di progetti
19. Vocabolari comuni
● rdf e rdfs sono particolarmente utili
perché servono a definire lo schema dei
dati
● Usando rdf si può descrivere
l'appartenenza di un'entità a una classe
● Usando rdfs si possono definire
relazioni di super- e sottoclasse
20. Esempi
● “Il gatto è un animale”
– ns1:gatto rdf:type
ns2:Mammifero
– ns1:gatto a ns2:Mammifero
● “I mammiferi sono animali”
– ns2:Mammifero
rdfs:subClassOf ns2:Animale
21. Ontologie
● Un'ontologia è un modello usato per
descrivere un certo dominio
● Si possono esprimere concetti
articolati ed interessanti
● È più difficile da sviluppare perché
bisogna fare diverse considerazioni
logiche e di modellazione
22. Trovare i LOD
● Dobbiamo conoscere i dettagli di RDF per
usare i LOD?
● Approccio “follow your nose” grazie ai link
– http://dati.isprambiente.it/id/website/html
– https://www.wikidata.org
– http://sameas.org
– https://datahub.io
24. SPARQL
● SPARQL è per RDF ciò che SQL è
per i database: un linguaggio di
interrogazione
● Essendo RDF un formato “a grafo”,
anche le query RDF sono
essenzialmente “a grafo”
25. SPARQL
● Oltre che un linguaggio di
interrogazione, SPARQL è anche un
protocollo di comunicazione
● Un endpoint SPARQL è una risorsa
alla quale possiamo mandare delle
query SPARQL e che ci darà dei dati
come risultato (se ce ne sono di
corrispondenti alla nostra query)
27. Query SPARQL
Esempio di query SPARQL su dbpedia: “Compositori delle colonne sonore di tutti i film di produzione
italiana in bianco/nero”
PREFIX dbpediaowl: <http://dbpedia.org/ontology/>
SELECT *
WHERE {
?film a dbpediaowl:Film .
?film dbpediaowl:country <http://it.dbpedia.org/resource/Italia> .
?film dbpediaowl:filmColourType ?colore .
?film dbpediaowl:musicComposer ?compositore .
FILTER ( ?colore in ("B/N"@it, "bianco/nero"@it ) )
}
31. Query SPARQL
● Come faccio a sapere quali classi
utilizzare nella query?
● Due modi:
– Cerco l'ontologia di dbpedia:
http://dbpedia.org/ontology/
– Trovo tutte le classi direttamente
sull'endpoint SPARQL
32. Query SPARQL
Per trovare le classi usate nell'endpoint:
●
Cerco prima i grafi (~ dataset) disponibili e trovo <http://it.dbpedia.org>
SELECT DISTINCT ?g
WHERE {
GRAPH ?g {?s a ?cl}
}
●
Cerco tutte le classi definite nel grafo più “interessante”
SELECT DISTINCT ?cl
WHERE {
GRAPH <http://it.dbpedia.org> {?s a ?cl}
}
33. Query SPARQL
● Supponiamo di aver trovato http://dbpedia.org/ontology/Person
● Vogliamo sapere se esistono classi più specializzate:
PREFIX dbpedia: <http://dbpedia.org/ontology/>
SELECT DISTINCT ?cl
WHERE {
?cl rdfs:subClassOf dbpedia:Person
}
● Troviamo per esempio dbpedia:Artist, dbpedia:Athlete, ...