Sei sulla pagina 1di 32

Semantic Web e Linked (Open) Data

La piramide del SW

Crittografia/firma digitale

Interfaccia utente/applicazioni Credibilit (Trust) Dimostrazione (Proof) Logica unificante

Interrogazioni: SPARQL

Ontologie: OWL

Regole: SWRL/RIF

Tassonomie: RDFS

Interoperabilit: RDF Sintassi: XML + XMLNS Protocolli: HTTP Identificatori: URI/IRI Testo: UNICODE

Web semantico come web dei dati

Una rappresentazione minimale del Semantic Web: il Web dei dati, ma dati collegati tra di loro Linked (Open) Data: linsieme delle buone prassi per annotare i propri dati in modo che essi possano essere pi facilmente ricercati, esposti ed utilizzati, sia da utenti umani sia da agenti software
3

I principi del Linked Data

1. usare URI per dare un nome alle cose (una cosa pu identificare qualsiasi oggetto o concetto nel mondo, fisico o astratto che sia).
In questo modo in un qualche futuro diverr possibile lidentificazione univoca e globale delle cose del mondo.

2. opportuno che queste URI utilizzino il protocollo HTTP, cos che le persone possano ricercarle facilmente deferenziandole.
In questo modo si evita di creare nuovi schemi identificativi, tenendo presente che sempre di pi le URI HTTP sono nomi e non esclusivamente indirizzi. Lobiettivo cui si punta pertanto un mondo in cui ciascuno, ed ogni cosa, corrisponde ad una univoca URI HTTP che lo identifica nel Web

I principi del Linked Data

3. quando viene cercato un URI, restituire informazioni utili ricorrendo a tecnologie standard (come RDF e SPARQL).
In questo modo, progressivamente, i dati e non solo la struttura degli stessi saranno sempre pi disponibili ed utilizzabili. Lobiettivo portare alla luce il Deep Web.

4. includere nelle descrizioni link ad altre URI, in modo che possano essere scoperte e descritte nuove risorse.
Si punta cio a creare una ragnatela (web) di collegamenti e relazioni tra dati e concetti appartenenti a vocabolari e ontologie, non semplicemente tra documenti.

La nuvola del Linked Data

Trasmettere le persone?

Lobiettivo di usare URI dereferenziabili per individuare le cose del mondo, collide con il fatto che una persona o un oggetto non possono essere trasmessi via Web quando li si richieda. Le strategie individuate per gestire questa situazione sono due HTTP code 303 See Other: se viene effettuata una richiesta HTTP per una URI che individua una entit del mondo reale, il server risponder con il codice 303 e reindirizzer la richiesta verso una risorsa contenente una descrizione della entit fisica. hash tag #: prevede che per lindividuazione della risorsa fisica venga utilizzata la notazione della URI che utilizza il frammento della risorsa mediante hash (#). In questo modo, in accordo col protocollo HTTP, la richiesta al server verr effettuata eliminando preliminarmente la parte a valle del #, reperendo quindi solo la risorsa descrittiva.

Il 5 star rating del LOD

Dati resi disponibili sul Web in formato aperto + Dati in formato strutturato, machine readable + formato dati non proprietario + utilizzo di standard W3C quali RDF e SPARQL per identificare le cose + utilizzare RDF per linkare altri dati fornendo informazione contestuale
8

Pubblicare LD

Mappare database relazionali

I wrapper RDF: applicazioni che convertono il database nella relativa rappresentazione RDF. Questi strumenti permettono di definire dei mapping da dati relazionali a grafi RDF D2R Server http://d2rq.org/d2r-server

10

I 6 passi
Scaricare dal sito http://d2rq.org/ e installare il D2R server; far generare automaticamente al D2R server il file di mapping utilizzando il linguaggio dichiarativo D2RQ Mapping, parte della suite D2R; modificare il mapping auto-generato, personalizzandolo in base alle proprie esigenze (ad esempio modificando i nomi utilizzati, oppure decidendo di non mappare, e quindi non esporre, particolari porzioni del database); aggiungere link RDF a sorgenti di dati esterni, in modo che i dati generati siano effettivamente collegati con il resto del mondo. Queste connessioni possono essere aggiunte a mano, se le risorse sono in numero limitato, oppure con procedure automatiche o semiautomatiche. A tale scopo esistono dei tool, come ad esempio Silk o LIMES,
che generalmente utilizzano delle euristiche e mirano a trovare similarit basate su stringhe, valori numerici o valori geografici tra risorse appartenenti a dataset diversi;
11

aggiungere link RDF da sorgenti di Linked Data esterne gi esistenti, verso il dataset appena generato. Ci al fine di assicurare che i nuovi dati possano effettivamente essere scoperti. In particolare, se la sorgente pre-esistente sotto il proprio controllo, loperazione semplice. In caso contrario, bisogna chiedere al proprietario/gestore della sorgente esistente (ad esempio DBpedia) di aggiungere gentilmente tra le triple RDF del propri dataset dei collegamenti al nuovo dataset; aggiungere la sorgente di dati generata al registro CKAN nel gruppo LOD Cloud su http://thedatahub.org/group/lodcloud.

12

Un semplice DB di esempio

Movies

Actors

MoviesActors

13

Il file di mapping in D2RQ mapping


@prefix d2rq: <http://www.wiwiss.fu-berlin.de/suhl/bizer/D2RQ/0.1#> . @prefix dbpedia-owl: <http://dbpedia.org/ontology/> . @prefix map: <file:///d2r/example.ttl#> .@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . @prefix foaf: <http://xmlns.com/foaf/0.1/> . map:Database1 a d2rq:Database;d2rq:jdbcDSN "jdbc:mysql://localhost/imdb"; d2rq:jdbcDriver "com.mysql.jdbc.Driver"; d2rq:username "user; d2rq:password "password; . # CREATE TABLE Movies(MovieID int, Title text, Year int); map:Movie a d2rq:ClassMap; d2rq:dataStorage map:Database1. d2rq:class dbpedia-owl:Film;d2rq:uriPattern "http://mymoviedomain/movie/@@Movies.MovieID@@"; . map:movieTitle a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Movie; d2rq:property dbpedia-owl:title; d2rq:column "Movies.Title"; d2rq:lang "en"; d2rq:datatype xsd:string;.map:movieCreationYear a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Movie; d2rq:property dbpedia-owl:creationYear; d2rq:column "Movies.Year"; d2rq:datatype xsd:gYear; # CREATE TABLE Actors(ActorID int, FullName text); map:Actor a d2rq:ClassMap; d2rq:dataStorage map:Database1. d2rq:class dbpedia-owl:Person;d2rq:uriPattern "http://mymoviedomain/actor/@@Actors.ActorID@@"; . map:actorName a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Actor; d2rq:property foaf:name; d2rq:column "Actor.FullName"; d2rq:datatype xsd:string; # CREATE TABLE MoviesActors(MovieID int, ActorID); map:movieActor a d2rq:PropertyBridge; d2rq:belongsToClassMap map:Movie;d2rq:property dbpedia-owl:starring; d2rq:refersToClassMap map:Actor;d2rq:join "Movies.MovieID = MoviesActors.MovieID"; d2rq:join "MoviesActors.ActorID = Actors.ActorID";

14

Il file RDF Generato


http://dbpedia.org/ontology/Film http://www.w3.org/1999/02/22-rdf-syntax-ns#type

http://www.w3.org/2002/07/owl#Class . http://dbpedia.org/ontology/title http://www.w3.org/1999/02/22-rdfsyntax-ns#type http://www.w3.org/2002/07/owl#DatatypeProperty . http://dbpedia.org/ontology/title http://www.w3.org/2000/01/rdf-schema#range http://www.w3.org/2001/XMLSchema#string . http://dbpedia.org/ontology/creationYear http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#ObjectProperty . http://dbpedia.org/ontology/creationYear http://www.w3.org/2000/01/rdf-schema#range http://www.w3.org/2001/XMLSchema#gYear . http://mymoviedomain/movie/15 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://dbpedia.org/ontology/Film . http://mymoviedomain/movie/15 http://dbpedia.org/ontology/title "The Hurt Locker"@enxsd:string . http://mymoviedomain/movie/15 http://dbpedia.org/ontology/creationYear "2008"xsd:gYear . http://dbpedia.org/ontology/Person http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#Class . http://xmlns.com/foaf/0.1/name http://www.w3.org/1999/02/22-rdfsyntax-ns#type http://www.w3.org/2002/07/owl#DatatypeProperty . http://xmlns.com/foaf/0.1/name http://www.w3.org/2000/01/rdf-schema#range http://www.w3.org/2001/XMLSchema#string . http://mymoviedomain/actor/3 http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://dbpedia.org/ontology/Person . http://mymoviedomain/actor/3 http://xmlns.com/foaf/0.1/name "Jeremy Renner"xsd:string . http://dbpedia.org/ontology/starring http://www.w3.org/1999/02/22-rdf-syntax-ns#type http://www.w3.org/2002/07/owl#ObjectProperty . http://mymoviedomain/movie/15 http://dbpedia.org/ontology/starring http://mymoviedomain/actor/3 .

15

LOD su dati non strutturati

Se la sorgente iniziale di dati non strutturata, come ad esempio nel caso di documenti puramente testuali, si pu ricorrere a strumenti che si occupano di eseguire estrazione di entit da questi documenti. I documenti di testo vengono cio annotati (semi)automaticamente con URI provenienti da vocabolari e sorgenti di Linked Data gi disponibili, in perfetto accordo con i principi discussi precedentemente. Esempi diffusi di questi strumenti sono Open Calais

(http://www.opencalais.com/ cui ci riferiamo) , Ontos e DBpedia Spotlight

16

Un semplice esempioin tema

Da imdb, descrizione di The Hurt Locker: Forced to play a dangerous game of catand-mouse in the chaos of war, an elite Army bomb squad unit must come together in a city where everyone is a potential enemy and every object could be a deadly bomb.

17

Il risultato di OpenCalais

18

LOD in Italia
Open Government Directive del 2009 http://www.data.gov/

riconoscimento de facto di canale preferenziale di divulgazione dei dati in ambito e-government. D.Lgs. n.82 del 2005 (il Codice dell Amministrazione Digitale) ha introdotto il principio della disponibilita` dei dati pubblici, cioe` la possibilita` di accedere ai dati senza restrizioni non riconducibili a esplicite norme di legge (D.Lgs. n.235 del 2010 project finacing) Riferimento principale italiano dati open http://dati.gov.it dati.camera.it e spcdata.digitpa.gov.it solo dataset 5 star

19

IODL

Italian Open Data License, denominate IODL 1.0 e 2.0. Entrambe consentono di consultare, estrarre, scaricare, copiare, pubblicare, distribuire e trasmettere i dati e creare anche un prodotto derivato, ad esempio attraverso la combinazione con altre informazioni, o sviluppare una applicazione informatica che utilizzi come base dati i dati pubblici. La differenza non banale tra IODL 1.0 e IODL 2.0 che per IODL 1.0 eventuali applicazioni e utilizzi derivati devono, a cascata, mantenere la stessa licenza mentre in IODL 2.0 viene richiesto al licenziatario solo di citare la fonte delle informazioni.
20

SPARQL

SPARQL -- SPARQL Protocol and RDF Query Language Specifiche su:


http://www.w3.org/TR/rdf-sparql-query/ http://www.w3.org/TR/rdf-sparql-protocol/ http://www.w3.org/TR/rdf-sparql-XMLres/

Sia protocollo per connettersi a origini dati RDF (attraverso una specifica WSDL) Sia potente linguaggio di interrogazione
21

La struttura della query elementare


Una query SPARQL composta, nellordine, da: Dichiarazioni di prefissi per abbreviare le URI

PREFIX foo: <http://example.com/resources/> ... Una result clause ovvero una target list, per identificare cosa deve essere restituito SELECT ... Definizione dei dataset per individuare i dataset che verranno interrogati FROM ... Il query pattern per specificare come effettuare la richiesta, usando una path expression WHERE { ... } Modificatori di query per restringere, riordinare i risultati della query ORDER BY ... Ricorda qualcosa?
22

Query pattern Si tratta di una path expression: una query corrisponde ad un processo di graph matching
PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> SELECT ?attore FROM <http://dbpedia.org/sparql> WHERE{
attore http://dbpedia.org/reso urce/Joe_Pantoliano http://dbpedia.org/reso urce/Laurence_Fishbu rne
linsieme di tutte le risorse per le quali e` possibile fare un binding sulla variabile ? attore rispetto al pattern

http://dbpedia.org/reso urce/Hugo_Weaving

http://dbpedia.org/reso dbpedia:The_Matrix dbpedia-owl:starring ? urce/CarrieWHERE Anne_Moss


rappresentato nella clausola

attore .

}
23

http://dbpedia.org/reso urce/Keanu_Reeves

Graph pattern

PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?etichetta WHERE{ dbpedia:The_Matrix dbpedia-owl:starring ?attore . ?attore rdfs:label ?etichetta . }

24

Effettuare una query: endpoint Espongono una interfaccia WSDL, ma sono accessibili anche via browser Generic endpoint: http://www.openlinksw.com/sparql (si faccia attenzione a selezionare lopzione Retrieve remote RDF data for all missing source graphs). Specific endpoint: e.g. http://dbpedia. org/sparql
Una lista quasi completa:

http://labs.mondeca.com/sparqlEndpointsStatus/

25

Esempi di pattern

dbpedia:The_Matrix dbpedia-owl:starring ?attore ?film dbpedia-owl:starring dbpedia:Carrie-Anne_Moss ?film dbpedia-owl:starring ?attore dbpedia:The_Matrix ?predicato dbpedia:Andy_Wachowski ?soggetto ?predicato dbpedia:Andy_Wachowski dbpedia:The_Matrix ?predicato ?oggetto ?soggetto ?predicato ?oggetto Come possiamo esprimere il significato di ciascuna richiesta associata al pattern?

26

PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> SELECT ?attore ?film WHERE{ dbpedia:The_Matrix dbpedia-owl:starring ?attore . ?film dbpedia-owl:starring ?attore . } Che stiamo chiedendo?

27

Construct
Con construct possiamo creare nuovi grafi RDF. Costruisce il grafo che istanzia il graph pattern presente nel where
PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> PREFIX dbpprop: <http://dbpedia.org/property/> PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0/> CONSTRUCT{ ?attore1 vcard:birthday ?nato . ?attore1 foaf:knows ?attore2 . } WHERE{ dbpedia:The_Matrix dbpedia-owl:starring ?attore1 . ?attore1 dbpprop:birthDate ?nato . dbpedia:The_Matrix dbpedia-owl:starring ?attore2 . } 28 tutte le persone che hanno recitato nel film The Matrix si conoscono e per ognuna di loro indichiamo anche la data di nascita secondo il vocabolario VCARD

PREFIX dbpedia: <http://dbpedia.org/resource/>

Ask

Il risultato di una query di tipo ASK un valore booleanotrue/fals indica se linformazione richiesta e` presente o meno nella base di conoscenza interrogata.

PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> ASK{ dbpedia:The_Matrix dbpedia-owl:starring dbpedia:Carrie-Anne_Moss . }

True o false?

29

Describe

restituiscimi tutto quello che sai in relazione alle risorse indicate


PREFIX dbpedia: <http://dbpedia.org/resource/> PREFIX dbpedia-owl: <http://dbpedia.org/ontology/> DESCRIBE ?attore{ dbpedia:The_Matrix dbpedia-owl:starring ?attore . <http://dbpedia.org/resource/Memento_%28film%29> dbpedia-owl:starring ?attore . }

Il risultato dipende (e quindi pu essere diverso) dallendpoint


30

SELECT DISTINCT ?concept WHERE { ? s a ?concept . } LIMIT 50

a abbr. di rdf:type

31

Filter

Esprime condizioni
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX type: <http://dbpedia.org/class/yago/> PREFIX prop: <http://dbpedia.org/property/> SELECT ?country_name ?population WHERE { ?country a type:LandlockedCountries ; rdfs:label ?country_name ; prop:populationEstimate ?population . FILTER (?population > 15000000) . FILTER (langMatches(lang(?country_name), "IT")) . }

32