07-08 - bdsiw - e2 - rdf-sparql - 018.ppt [modalità ...staff.icar.cnr.it/ruffolo/files/07-08 -...
TRANSCRIPT
1
Prof. Massimo RuffoloIng. Maurizio Colica
Capitolo 4
RDF: Resource Description FrameworkIntroduzioneClassi e IstanzeProprietà
2
RDF: Resource Description FrameworkIntroduzione
RDF: Resource Description Framework
The Resource Description Framework (RDF)The Resource Description Framework (RDF)
è uno standard W3C per la descrizione delle
risorse Web, in termini di titolo, autore, data
modifica, e copyright.
3
Cos’è RDF?
RDF sta per Resource Description Framework RDF è una piattaforma per la descrizione delle risorse sul webRDF è costituito da un modello dei dati e da una sintassi separate l’una dall’altraRDF può essere interpretato da un computerRDF non è nato per essere letto dall’uomoRDF non è nato per essere letto dall uomo RDF è scritto in XMLRDF fa parte delle attività del W3C per il “Web Semantico” RDF è una “W3C Recommendation“
RDF – Esempi d’uso
Descrizione di proprietà di oggetti in vendita come prezzo e disponibilità Descrizione di informazioni relative a Pagine Web: autore,modifica,copyrightDescrizione dei contenuti e classificazione di immagini sul webimmagini sul webDescrizione di contenuti per facilitare il compito dei motori di ricercaDescrizione di librerie digitali
4
RDF è disegnato per essere interpretato da un pc
RDF è stato disegnato per essere di facile interpretazione da parte di applicazioni che si occupano di trattare contenuti.RDF non è stato disegnato per essere visualizzato sul web
RDF è scritto in XML
Il linguaggio XML usato da RDF è chiamato RDF/XML. Usando XML, le informazioni RDF possono essere facilmente scambiate fra computer che utilizzino differenti ppiattaforme e differenti linguaggi di programmazione.
5
RDF ed il “Web Semantico" Il linguaggio RDF fa parte del W3C's Semantic W b A ti it W3C' "S ti W b Vi i "Web Activity. W3C's "Semantic Web Vision" mira ad un futuro in cui:Le risorse web siano esattamente descritte Le risorse Web possano essere estratte e catalogate direttamente da un calcolatore Le applicazioni possano automaticamente incamerare e consumare contenuti eterogenei distribuiti sul web.
RDF è un W3C Recommandation
RDF è diventato un W3C Recommendation nel Febbraio 2004Febbraio 2004.Un “W3C Recommendation” è considerato all’interno della comunità internazionale come uno standard. Un W3C Recommendation è una specifica di un linguaggio del quale W3C dopo un attenta revisione ne dichiara la validità come standard.La W3C Specification per RDF si trova a questo link:
http://www.w3.org/RDF/
6
RDF Risorse, Proprietà, e valori di Proprietà
RDF identifica gli oggetti attraverso una URI e descrive tali oggetti attraverso le proprietà
Una Risorsa è tutto ciò che è identificato da un Uri. Es. "http://www.w3schools.com/RDF" Una proprietà è una risorsa cui viene associato un nome come “mail” ,“name”Il valore di una proprietà esprime il valore che una proprietà di una risorsa può assumere. Il valore di una proprietà può essere un’altra risorsa.
RDF Risorse, Proprietà, e valori di Proprietà: un esempio.
L’RDF seguente descrive ad esempio la risorsa "http://www.unical.it/employee/mcolica":
Notate come nell’esempio non è stato considerato alcun Namespace
7
Esempio Visivo
Soggetto
http://www.unical.it/employee/mcolica
http://www.unical.it
homepage
Predicato
Oggetto
mcolica
author
RDF Asserzioni La combinazione di una risorsa, una proprietà ed un valore di proprietà si chiama asserzione.In un asserzione la risorsa viene chiamata Soggetto, la proprietà Predicato ed il valore Oggetto.Nell’esempio precedente:Asserzione: “L’autore di http://www.unical.it/employee/mcolica è Maurizio Colica".
Il soggetto è: http://www.unical.it/employee/mcolica Il predicato è: author L’oggetto è: Maurizio Colica
Assrezione: “L’homePage di http://www.unical.it/employee/mcolica è http://www.unical.it ".
Soggetto: http://www.unical.it/employee/mcolicaPredicato: homepageOggetto: http://www.unical.it
8
RDF Esempio
Collezione di CD:
Title Artist Country Company Price Year
Pearl Days Elisa Italia Columbia 12 euro 2006
Robbie WilliamsMisunderstood UK CBS Records 18 euro 2001
...
RDF Esempio: Rappresentazione Grafica
http:// www.mp3.it/cd/Pearl Days
Elisa
artist
Columbiacompany
i
2006
year12 euro
price
9
RDF Esempi
RDF EsempiLa prima linea è la dichiarazione XML. Segue la root di un documento RDF: <rdf:RDF>.Il xmlns:rdf namespace, specifica che all’interno del documento tutto ciò che porta il prefisso rdf fa riferimento al namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#".Il xmlns:cd namespace, specifica che all’interno del documento tutto ciò che porta il prefisso cd fa riferimento al namespace http://www.mp3.it/cd#“ .Il tag <rdf:Description> specifica la descrione della risorsa id ifi d ll’ ib df bidentificata dall’attibuto rdf:about.Gli elementi: <cd:artist>, <cd:country>, <cd:company>, etc. sono proprietà della risorsa.
10
L’elemento <rdf:RDF>
<rdf:RDF> è la root di qualsiasi documento RDF e lo identifica: in esso può essere contenuto il riferimento al namesapce RDF
<?xml version="1.0"?><rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax ns#">syntax-ns#">
[descrizioni delle risorse]
</rdf:RDF>
L’ elemento <rdf:Description>
L’ <rdf:Description> identifica una risorsa ed i i tt ib tisuoi attributi
L’ <rdf:Description> contiene elementi che descrivono le sue proprietàGli elementi, artist, country, company, price, e year, sono definiti nel namespace http://www.mp3.it/cd#. Questo namespace non ha nulla a che fare con RDF . RDF definisce solo l’infrastruttura.
11
Proprietà come AttributiLe proprietà possono essere rappresentate come attributi
Proprietà come Risorse
I valori di proprietà possono essere espressi come risorse:
La proprietà artista non ha un valore ma un riferimento ad un’altra risorsa.
12
Proprietà come Risorse
Elisaname
http:// www.mp3.it/cd/Pearl Days
artistColumbia
company
i
http:// www.mp3.it/artist/Elisa
2006
year12 euro
price
RDF Elementi contenitori
RDF containers: sono usati per descrivereRDF containers: sono usati per descrivere
gruppi di cose. Ad esempio per elencare gli
autori di un disco o di una canzone.
Per descrivere questi gruppi si usano i tag:
<Bag>, <Seq>, e <Alt>.
13
L’elemento <rdf:Bag>Rappresenta una lista di valori non ordinata.Può contenere valori duplicatiPuò contenere valori duplicati.
Esempio
rdf:Bag
http:// www.mp3.it/song/Ostacoli del cuore
rdf:type
Elisardf:_1
df 2
rdf:Bag
cd:artist
Ligabue
rdf:_2
14
L’elemento <rdf:Seq>Rappresenta un lista di valori ordinataPuò contenere valori duplicati.Esempio
rdf:Seq
http:// www.mp3.it/cd/Pearl Days
rdf:type
01 Stayrdf:_1
df 2
rdf:Seq
cd:song
02 Gli Ostacoli del cuore
rdf:_2
. . . .
rdf:_3
15
L’elemento <rdf:Alt>Rappresenta una lista di alternative Esempio
rdf:Alt
http:// www.mp3.it/song/Ostacoli del cuore
rdf:type
CDrdf:_1
df 2
rdf:Alt
cd:format
Disco
rdf:_2
MC
rdf:_3
16
RDF Terms
Una lista di valori in RDF si chiamano membri.Quindi:
Un contenitore è una risorsa che contiene altri oggetti Gli oggetti contenuti si chiamano membri.
RDF Collections
RDF collections sono usati per descrivere gruppi che contengono solo gli elementi specificati.
17
L’attributo rdf:parseType="Collection"
Un container dice che una risorsa contiene alcuni membri ma tale affermazione non è chiusa: può contenerne anche altri.RDF collections è usato per esprimere liste chiuseUna collezione è descritta dall’attibuto rdf:parseType="Collection".
Example
RDF Schema (RDFS)
RDF Schema (RDFS) è un estensione di RDF.
18
RDF Schema e Classi
RDF descrive risorse tramite classi, proprietà e valori., p p
RDF ha bisogno di definire delle classi e proprietà
specifiche per un applicazione
Queste classi devono essere definite usando un
estensione di RDF
Tale estensione è RDF Schema
RDF Schema (RDFS)
RDF Schema non ha classi predefinite.
RDF Schema fornisce la piattaforma per desrcivere nuovi tipi di
classi.
Le classi in RDF Schema sono simili alle classi di un linguaggio di
programmazione ad oggettiprogrammazione ad oggetti.
In RDF si possono rappresentare le risorse come istanze di classi
e definire sottoclassi e tipi.
19
RDFS EsempiClassi e Sotto classi:
La classe horse viene dichiarata come sottoclasse della classe Animal.
Esempio Abbreviato
RDFS Class è sotto classe della classe rdf:Resource. Per questo motivo possiamo evitare di usare rdf:Description rdf:type ed usare direttamente rdf:class
20
RDF Classi e Proprietà
Namespace prefix:'rdfs' URI:'http://www w3 org/2000/01/rdf-schema#'URI: http://www.w3.org/2000/01/rdf-schema#Le risorse possono essere istanze di una o più classi La classe è indicata tramite l’attibuto rdf:type propertyLa risorsa http://www.unical.it/students/Maurizio è rdf:type Student La risorsa http://www.unicla.it/students/Maurizio è df t Prdf:type Person
Student è rdfs:subClassOf Person Le proprietà vengono definite in funzione della classe di risorse su cui si applicano
RDF Classi
rdfs:Resource – le risorse sono istanze di questa classerdf:Property – le proprietà sono istanze di questa classe.rdfs:Class – una classe dei linguaggirdfs:Class una classe dei linguaggi object oriented.
21
RDF Proprietàrdf:type – indica che una risorsa è del tipo della classe che viene specificataclasse che viene specificata rdfs:subClassOf – indica la relazione classe/sottoclasse fra due classi rdfs:subPropertyOf – indica che una proprietà e specializzazione di un’altra. rdfs:seeAlso specifica che la risorsa è ancherdfs:seeAlso – specifica che la risorsa è anche descritta in altre parti rdfs:isDefinedBy – indica la risorsa “soggetto dell’asserzione” ovvero chi ha fatto l’asserzione
RDF Constraints
rdfs:range Indica la classe dei valori ammissibili di una proprietà.rdfs:range è una classe rdf:Class
rdfs:domainIndica la classe cui la proprietà si applica.Indica la classe cui la proprietà si applica. Se non è specificata indica che quella proprietà può essere usata su qualsiasi classe.
22
Domain e Range Legame tra classi e proprietà
RDF(S) f i h b l i d i i iRDF(S) fornisce anche un vocabolario per descrivere come ci si aspetta che proprietà e classi si combinino tra di loro
Proprietà predefinite rdfs:domain ed rdfs:range
http://www.w3.org/1999/02/22-rdf-syntax-ns#Property
http:// www.mp3.it/cd/#Artist
http:// www.mp3.it/cd/#singer
rdf:type
http:// www.mp3.it/cd/#Song
rdfs:domain rdfs:range
RDF Documentation
rdfs:comment – testo libero
rdfs:label – Riporta informazioni sulla versione
di una risorsa
24
RDF Schema Esempio (3)
Istanze – classi – metaclassirdfs:subClassOf
rdfs:Classrdfs:Resourcerdf:type
terms:Person
terms:Students
terms:Course
rdf:type
rdfs:subClassOf
rdf:type
terms:Teacher
rdf:type
terms:Students
people:Ruffolo course:BDSIW
rdf:type
terms:teacher
Massimoterms:name
terms:Teacher
people:BianchiMarioterms:name
25
Reasoningrdfs:subClassOf
rdfs:Classrdfs:Resourcerdf:type
terms:Person
terms:Students
terms:Course
rdf:type
rdfs:subClassOf
rdf:type
terms:Teacher
rdfs:subClassOf
rdf:type
rdf:type
terms:Students
people:Ruffolo course:BDSIW
rdf:type
terms:teacher
Massimoterms:name
terms:Teacher
people:BianchiMarioterms:name
Modello generale
t
rdfs:Resource
rdf:type
terms:…
terms:…
rdfs:subClassOfrdfs:Class
rdf:type
rdfs:subClassOf
rdf:type
rdfs:Property
rdf:domain
terms:…
terms:…
rdfs:range
terms:…
26
RDF Schema Esempio (4)
Interrogazione di file RDFSPARQL linguaggio di interrogazione dell' RDFSPARQL, linguaggio di interrogazione dell RDFasceso da qualche mese al rango di W3C
Candidate Recommendation,
è stato accolto entusiasticamente come
l'agognato ultimo tassello per l'edificazione del
Web semantico
27
SPARQL Sintassi Turtle
SPARQL adotta la sintassi Turtle, un'estensione di N-Triples,
alternativa estremamente sintetica e intuitiva al tradizionale
RDF/XML.
Si considerino le seguenti triple RDF, che saranno utilizzate
nel corso della lezione come riferimento per le query
d'esempio:
RDF File cd.rdf
28
Query SPARQL
PREFIX cd: <http://example.org/cd/>SELECT ?title ?artist ?yearFROM <cd.rdf>WHERE {?title cd:artist ?artist.?title cd:year ?year . }
Risultato
Title Artist Year
Pearl Days Elisa 2006
Restituisce tutte le risorse per le quali sia specificato sia l’artista che l’anno
29
Clausola OPTIONAL
PREFIX cd: <http://example.org/cd/>p p g
SELECT ?title ?artist ?year
FROM <cd.rdf>
WHERE {?title cd:artist ?artist.
OPTIONAL {?title cd:year ?year.}
}
Risultato
Title Artist Year
Pearl Days Elisa 2006
MisunderstoodRobbie WilliamsMisunderstood Williams
Restituisce tutte le risorse per le quali sia specificato l’artista e opzionalmente l’anno
30
Clausola UNION
PREFIX cd: <http://example.org/cd/>
SELECT ?title ?artist ?price ?year
FROM <cd.rdf>
WHERE {
{?title cd:year ?year.}
UNION{?title cd:price ?price.}
}
Risultato
Title Artist Price Year
Pearl Days Elisa 2006
MisunderstoodRobbie Williams 18 euroMisunderstood Williams 18 euro
Restituisce tutte le risorse per le quali sia specificato o il prezzo o l’anno.
31
Clausola FILTER
PREFIX cd: <http://example.org/cd/>p p g
SELECT ?title ?artist ?price ?year
FROM <cd.rdf>
WHERE {{?title cd:year ?year.}
FILTER (?year > 2005)
}
Risultato
Title Artist Price Year
Pearl Days Elisa 2006
Restituisce tutte le risorse per le quali l’attributo anno è maggiore di 2005.
32
Clausola FILTER con REGEX
PREFIX cd: <http://example.org/cd/>p p g
SELECT ?title ?artist
FROM <cd.rdf>
WHERE {{?title cd:artist ?artist.}
FILTER regex(?artist, “^el”, “i” )
}
Risultato
Title Artist
Pearl Days Elisa
Restituisce tutte le risorse per le quali l’attributo artist comincia per “el” ignorando la distinzione fra maiuscole e minuscole.
33
Costrutti speciali
SELECT DISTINCT ?title ?artistORDER BY DESC(?autore)LIMIT 10OFFSET 10
Esempio 2: Human Ontology(Classes)
AnimalAnimal
FemaleMale Person
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOfrdfs:subClassOf
WomanMan ResearcherLecturer
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
34
Esempio 2: Human Ontology (ObjectProperty)
Animalrdfs:domain
hasAncestor
Male
rdfs:rangeAnimal
hasParent
hasFather
rdfs:subPropertyOf
rdfs:rangehasMother
Female
rdfs:subPropertyOf
rdfs:subPropertyOf
rdfs:range
Animalrdfs:domainAnimalrdfs:domain
h Si t
rdfs:range
hasBrother
Malerdfs:range
hasSister
Female
Person
rdfs:range
rdfs:domain
hasFriend
Person
Person
rdfs:range
rdfs:domain
hasSpouse
Person
Esempio 2: Human Ontology (DataType Property)
rdfs:domain rdfs:domain
Animal
rdfs:range
age
Integer
rdfs:domain
Person
rdfs:range
shirtSize
Integer
rdfs:domainPerson
rdfs:range
trouserssize
Integer
Person
rdfs:range
name
String
35
Istanze
Harry
ManisA Eve
LecturerisA
isA
Harry
Sophie
John
hasChild
hasSpouse
PersonisA
14
37shoeSize
age
hasFather
David
hasSpouse
hasFriend
Alice
Researcher
isA
hasFriend
Gastone
hasFriend
hasFriend
Mark16
39shoeSize
age
JackhasChild (…)
Query su Classi
SELECT ?x WHERE { ?x rdf:type rdfs:Class }
XAnimalMale
PPersonFemale
manLecturer
ResearcherWoman
36
Sussunzioni
SELECT ?x ?y WHERE { ?x rdfs:subClassOf ?y }
X YMale Animal
Person AnimalFemale Animal
Man AnimalMan MaleMan Person
Woman AnimalWoman FemaleWoman PersonLecturer AnimalLecturer Person
… …
Proprietà: Persone Sposate
SELECT ?x ?y WHERE { ?x humans:hasSpouse ?y }
X YHarry SophieEve David
37
Uomini Sposati
SELECT * WHERE { ?x humans:hasSpouse ?y . ?x rdf:type humans:Male }
Answer
Numero di Persone di cui Y è amico
SELECT ?x ?y count(?x) as ?conteggio group ?y WHERE { ?x humans:hasFriend ?y }
Y COUNTGastone 1
Alice 2John 1
38
Persone con almeno un parente
SELECT DISTINCT ?x WHERE{
{ ?y humans:hasChild ?x } UNION
{ ?x humans:hasParent ?y }}
Le persone e la loro età (se nota)
SELECT ?person ?ageWHERE
{ ?person rdf:type humans:Person OPTIONAL
{ ?person humans:age ?age } }
39
Maggiorenni
SELECT ?x WHERE { ?x humans:age ?age FILTER ( xsd:integer(?age) >= 18 ) }
E’ Mark Maggiorenne?
ASKWHERE{
#Mark humans:age ?age FILTER( xsd:integer(?age) >= 18 ) ( g ( g ) )
}
40
Tutte le persone che non sono ricercatori.
SELECT ?x WHERE { ?x rdf:type humans:Person OPTIONAL
{ ?x rdf:type ?t FILTER ( ?t = humans:Researcher ) }
FILTER ( ! bound( ?t ) )} }
Antenati
SELECT ?x ?y
WHERE { ?x humans:hasAncestor ?y }
Questa query restituisce ovviamente, anche tutte le istanze delle
sottoproprietà hasFather ed HasParent
41
Bibliografia
RDF/RDFS SPECIFICATION
http://www.w3.org/RDF/
Semantic web tutorial: RDF, RDFS and SPARQL using CORESE
http://www-sop.inria.fr/acacia/soft/corese/tutorial.php
CORESE (Open Source Software per interrogare file RDF)CORESE (Open Source Software per interrogare file RDF)
http://www-sop.inria.fr/teams/edelweiss/wiki/wakka.php?wiki=Corese