lod basics

32
Semantic Web e Linked Semantic Web e Linked (Open) Data (Open) Data

Upload: netphantom

Post on 30-Jul-2015

502 views

Category:

Documents


2 download

DESCRIPTION

Il proprietario del documento è il Prof. Di Sciascio del Politecnico di Bari [sisinflab.poliba.it]Parte utile agli studenti di Ing. Informatica e Automazione DM 270

TRANSCRIPT

Page 1: Lod Basics

Semantic Web e Linked Semantic Web e Linked (Open) Data(Open) Data

Page 2: Lod Basics

22

La piramide del SWLa piramide del SW

Protocolli: HTTP Identificatori: URI/IRI

Sintassi: XML + XMLNS

Testo: UNICODE

Interoperabilità: RDF

Tassonomie: RDFS

• Interrogazioni: SPARQL

Ontologie: OWL Regole: SWRL/RIF

Logica unificante

Dimostrazione (Proof)

Credibilità (Trust)

Interfaccia utente/applicazioni

Crittografia/firm

a digitale

Page 3: Lod Basics

Web semantico come web Web semantico come web dei datidei dati

• Una rappresentazione minimale del Semantic Web: il Web dei dati, ma dati collegati tra di loro

• Linked (Open) Data: l’insieme 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

33

Page 4: Lod Basics

I principi del Linked DataI 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 l’identificazione 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. L’obiettivo cui si punta è pertanto un mondo in cui ciascuno, ed ogni cosa, corrisponde ad una univoca URI HTTP che lo identifica nel Web

44

Page 5: Lod Basics

I principi del Linked DataI 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. L’obiettivo è 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.

55

Page 6: Lod Basics

La nuvola del Linked Data La nuvola del Linked Data

66

Page 7: Lod Basics

Trasmettere le persone?Trasmettere le persone?

• L’obiettivo 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 l’individuazione 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”.

77

Page 8: Lod Basics

Il 5 star rating del LODIl 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

88

Page 9: Lod Basics

Pubblicare LDPubblicare LD

99

Page 10: Lod Basics

Mappare database Mappare database relazionalirelazionali

• 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

1010

Page 11: Lod Basics

I 6 passiI 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 semi-automatiche. 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;

1111

Page 12: Lod Basics

• 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, l’operazione è 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.

1212

Page 13: Lod Basics

Un semplice DB di Un semplice DB di esempioesempio

Movies

1313

Actors

MoviesActors

Page 14: Lod Basics

Il file di mapping in D2RQ mapping

1414

@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";

Page 15: Lod Basics

Il file RDF GeneratoIl 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-rdf-syntax-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"@enˆˆxsd: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-rdf-syntax-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 .

1515

Page 16: Lod Basics

LOD su dati non LOD su dati non strutturatistrutturati

• 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

1616

Page 17: Lod Basics

Un semplice esempio…in Un semplice esempio…in tematema

• Da imdb, descrizione di The Hurt Locker: “Forced to play a dangerous game of cat-and-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.”

1717

Page 18: Lod Basics

Il risultato di OpenCalaisIl risultato di OpenCalais

1818

Page 19: Lod Basics

LOD in ItaliaLOD 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

1919

Page 20: Lod Basics

IODLIODL

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

2020

Page 21: Lod Basics

SPARQLSPARQL

• 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

2121

Page 22: Lod Basics

La struttura della query La struttura della query elementareelementare

• Una query SPARQL è composta, nell’ordine, 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?

2222

Page 23: Lod Basics

Query patternQuery 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{

dbpedia:The_Matrix dbpedia-owl:starring ?attore .

}

2323

attore

http://dbpedia.org/resource/Joe_Pantoliano

http://dbpedia.org/resource/Laurence_Fishburne

http://dbpedia.org/resource/Hugo_Weaving

http://dbpedia.org/resource/Carrie-Anne_Moss

http://dbpedia.org/resource/Keanu_Reeves

l’insieme di tutte le risorse

per le quali e` possibile fare

un binding sulla variabile ?

attore rispetto al pattern

rappresentato nella clausola

WHERE

Page 24: Lod Basics

Graph patternGraph pattern

2424

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

Page 25: Lod Basics

Effettuare una query: Effettuare una query: endpointendpoint

• Espongono una interfaccia WSDL, ma sono accessibili anche via browser

• Generic endpoint: http://www.openlinksw.com/sparql (si faccia attenzione a selezionare l’opzione 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/

2525

Page 26: Lod Basics

Esempi di patternEsempi 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?

2626

Page 27: Lod Basics

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?

2727

Page 28: Lod Basics

ConstructConstruct

• Con construct possiamo “creare” nuovi grafi RDF. Costruisce il grafo che istanzia il graph pattern presente nel where

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

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 .

} 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

2828

Page 29: Lod Basics

AskAsk

• Il risultato di una query di tipo ASK è un valore booleano—true/fals indica se l’informazione 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?

2929

Page 30: Lod Basics

DescribeDescribe

• 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) dall’endpoint

3030

Page 31: Lod Basics

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

• a abbr. di rdf:type

3131

Page 32: Lod Basics

FilterFilter

• 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")) .

}

3232