basi di dati e sistemi informativi su web - staff.icar.cnr.itstaff.icar.cnr.it/ruffolo/files/slide...
TRANSCRIPT
1
Basi di Dati e Sistemi Informativi su Web
Prof. Massimo RuffoloIng. Maurizio Colica
UNICAL - A.A. 2006-2007
Capitolo 4RDF: Resource Description Framework
IntroduzioneClassi e IstanzeProprietà
2
RDF: Resource Description Framework
Introduzione
RDF: Resource Description Framework
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 FrameworkRDF è 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’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 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 piattaforme e differenti linguaggi di programmazione.
5
RDF ed il “Web Semantico" Il linguaggio RDF fa parte del W3C's SemanticWeb 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 RecommandationRDF è diventato un W3C Recommendation nel Febbraio 2004.Un “W3C Recommendation” è considerato all’interno della comunità internazionale come uno standard. Una W3C Recommendation è una specifica di un linguaggio del quale W3C dopo un attenta revisione ne dichiara la validità come standard.La W3C Raccomendation 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":<?xml version="1.0"?><RDF> <Descriptionabout=" http://www.unical.it/employee/mcolica"> <author>Maurizio Colica</author> <homepage> http://www.unical.it</homepage> </Description> </RDF> Notate come nell’esempio non è stato considerato alcun Namespace
7
Esempio Visivo
http://www.unical.it/employee/mcolica
mcolica
author
http://www.unical.it
homepage
Soggetto
Predicato
Oggetto
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/mcolicaIl predicato è: authorL’oggetto è: Maurizio Colica
Assrezione: “L’homePage di http://www.unical.it/employee/mcolica èhttp://www.unical.it ".
Soggetto: http://www.w3schools.com/RDF Predicato: homepageOggetto: http://www.unical.it
8
RDF EsempioCollezione di CD:
...
200118 euroCBS RecordsUKMisunderstoodRobbie Williams
200612 euroColumbiaItaliaElisaPearl Days
YearPriceCompanyCountryArtistTitle
http:// www.mp3.it/cd/Pearl Days
2006
year
Elisa
artistColumbia
company
12 euro
price
9
RDF Esempi<?xml version="1.0" ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http://www.mp3.it/cd#"><rdf:Description rdf:about="http:// www.mp3.it/cd/Pearl Days"><cd:artist>Elisa</cd:artist> <cd:country>Italia</cd:country> <cd:company>Columbia</cd:company> <cd:price>12 euro</cd:price> <cd:year>2006</cd:year> </rdf:Description><rdf:Description rdf:about="www.mp3.it/cd /Misunderstood"><cd:artist>Robbie Williams</cd:artist> <cd:country>UK</cd:country> <cd:company>CBS Records</cd:company> <cd:price>18 euro</cd:price> <cd:year>2001</cd:year> </rdf:Description>. . . </rdf:RDF>
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 rdf fa riferimento al namespacehttp://www.mp3.it/cd#“ .Il tag <rdf:Description> specifica la descrione della risorsa identificata 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:RDFxmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> [descrizioni delle risorse]</rdf:RDF>
L’ elemento <rdf:Description>L’ <rdf:Description> identifica una risorsa ed i suoi attributiL’ <rdf:Description> contiene elementi che descrivono le sue proprietàGli elementi, artist, country, company, price, e year, sono definiti nel namespacehttp://www.mp3.it/cd#. Questo namespacenon ha nulla a che fare con RDF . RDFdefinisce solo l’infrastruttura.
11
Proprietà come Attributi Le proprietà possono essere rappresentate come attributi
<?xml version="1.0" ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-
syntax-ns#" xmlns:cd="http://www.mp3.it/cd#"><rdf:Description rdf:about="http:// www.mp3.it/cd/Pearl
Days" cd:artist="Elisa" cd:country="Italia" cd:company="Columbia" cd:price="12 euro" cd:year="2006" />
</rdf:RDF>
Proprietà come RisorseI valori di proprietà possono essere espressi come risorse:<?xml version="1.0"?><rdf:RDFxmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cd="http:// www.mp3.it/cd#"> <rdf:Description rdf:about="http:// www.mp3.it/cd/PearlDays"> <cd:artist rdf:resource="http:// www.mp3.it/artist/Elisa" /> . . . . </rdf:Description></rdf:RDF>La proprietà artista non ha un valore ma un riferimento ad un’altra risorsa.
12
Proprietà come Risorse
http:// www.mp3.it/cd/Pearl Days
2006
year
artistColumbia
company
12 euro
price
http:// www.mp3.it/artist/Elisa
Elisaname
RDF Elementi contenitoriRDF 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 duplicati.Esempio
<?xml version="1.0" ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http:// www.mp3.it/cd#"><rdf:Description rdf:about="http:// www.mp3.it/song/Ostacoli del cuore"><cd:artist><rdf:Bag><rdf:li>Elisa</rdf:li> <rdf:li>Ligabue</rdf:li> </rdf:Bag></cd:artist></rdf:Description></rdf:RDF>
rdf:Baghttp:// www.mp3.it/song/Ostacoli del cuore
rdf:type
Elisardf:_1
Ligabue
rdf:_2
rdf:Bag
cd:artist
14
L’elemento <rdf:Seq>Rappresenta un lista di valori ordinataPuò contenere valori duplicati.Esempio
<?xml version="1.0" ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http:// www.mp3.it/cd#"><rdf:Description rdf:about="http:// www.mp3.it/cd/Pearl Days"><cd:songs><rdf:Seq>
<rdf:li>01 Stay</rdf:li> <rdf:li>02 Gli Ostacoli del cuore</rdf:li> <rdf:li>03 Broken</rdf:li> <rdf:li>. . . .</rdf:li>
</rdf:Seq></cd:artist></rdf:Description></rdf:RDF>
rdf:Seqhttp:// www.mp3.it/cd/Pearl Days
rdf:type
01 Stayrdf:_1
02 Gli Ostacoli del cuore
rdf:_2
rdf:Seq
cd:song
. . . .
rdf:_3
15
L’elemento <rdf:Alt>Rappresenta una lista di alternative Esempio
<?xml version="1.0" ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http:// www.mp3.it/cd#"><rdf:Description rdf:about="http:// www.mp3.it/song/Ostacoli del cuore">
<cd:format><rdf:Alt>
<rdf:li>CD</rdf:li> <rdf:li>Disco Vinile</rdf:li> <rdf:li>MC</rdf:li>
</rdf:Alt></cd:format>
</rdf:Description></rdf:RDF>
rdf:Althttp:// www.mp3.it/song/Ostacoli del cuore
rdf:type
CDrdf:_1
Disco
rdf:_2
rdf:Alt
cd:format
MC
rdf:_3
16
RDF TermsUna lista di valori in RDF si chiamano membri.Quindi:Un contenitore è una risorsa che contiene altri oggetti Gli oggetti contenuti si chiamano membri.
RDF CollectionsRDF collections sono usati per descrivere gruppi che contengono solo gli elementi specificati.
17
L’attirbutordf: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
<?xml version="1.0" ?> - <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cd="http:// www.mp3.it/cd#">- <rdf:Description rdf:about="http:// www.mp3.it/song/Ostacoli del cuore">- <cd:artist rdf:parseType="Collection">
<rdf:Description rdf:about="http:// www.mp3.it/artist/Elisa" /> <rdf:Description rdf:about="http:// www.mp3.it/artist/Ligabue" /> </cd:artist></rdf:Description></rdf:RDF>
RDF Schema (RDFS)
RDF Schema (RDFS) è un estensione di RDF.
18
RDF Schema e ClassiRDF descrive risorse tramite classi, proprietà e valori.RDF ha bisogno di definire delle classi e proprietà specifiche per un applicazioneQueste 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 oggetti.In RDF si possono rappresentare le risorse
come istanze di classi e definire sottoclassi e tipi.
19
RDFS EsempiClassi e Sotto classi:
<?xml version="1.0" ?> - <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.animals.it/animals#">
- <rdf:Description rdf:ID="animal"><rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" /> </rdf:Description>
- <rdf:Description rdf:ID="horse"><rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" /> <rdfs:subClassOf rdf:resource="#animal" /> </rdf:Description></rdf:RDF>
La classe horse viene dichiarata come sottoclasse della classe Animal.
Esempio AbbreviatoRDFS Class è sotto classe della classe rdf:Resource. Per questo motivo possiamo evitare di usare rdf:Description rdf:type ed usare direttamente rdf:class
<?xml version="1.0" ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-
ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://www.animals.it/animals#">
<rdfs:Class rdf:ID="animal" /> <rdfs:Class rdf:ID="horse"><rdfs:subClassOf rdf:resource="#animal" /> </rdfs:Class></rdf:RDF>
20
RDF Classi e Proprietà
Namespace prefix:'rdfs' 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 StudentLa risorsa http://www.unicla.it/students/Maurizio èrdf:type PersonStudent è rdfs:subClassOf PersonLe proprietà vengono definite in funzione della classe di risorse su cui si applicano
RDF Classirdfs:Resource – le risorse sono istanze di questa classerdf:Property – le proprietà sono istanze di questa classe.rdfs:Class – una classe dei linguaggi object oriented.
21
RDF Propertàrdf:type – indica che una risorsa è del tipo della classe 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 è anche descritta in altre parti rdfs:isDefinedBy – indica la risorsa “soggetto dell’asserzione” ovvero chi ha fatto l’asserzione
RDF Constraintsrdfs: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. Se non è specificata indica che quella proprietà può essere usata su qualsiasi classe.
22
Domain e RangeLegame tra classi e proprietà
RDF(S) fornisce anche un vocabolario per descrivere come ci si aspetta che proprietà e classi si combinino tra di loroProprietà predefinite rdfs:domain ed rdfs:range
http:// www.mp3.it/cd/#Artist
http:// www.mp3.it/cd/#singer
http://www.w3.org/1999/02/22-rdf-syntax-ns#Property
rdf:type
http:// www.mp3.it/cd/#Song
rdfs:domain rdfs:range
RDF Documentationrdfs:comment – testo libero rdfs:label – Riporta informazioni sulla versione di una risorsa
23
RDF Schema Esempio (1)<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdfs:Class rdf:ID="Person"><rdfs:comment>Person Class</rdfs:comment><rdfs:subClassOf
rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource"/></rdfs:Class>
<rdfs:Class rdf:ID="Student"><rdfs:comment>Student Class</rdfs:comment><rdfs:subClassOf rdf:resource="#Person"/>
</rdfs:Class>
RDF Schema Esempio (2)<rdfs:Class rdf:ID="Teacher">
<rdfs:comment>Teacher Class</rdfs:comment><rdfs:subClassOf rdf:resource="#Person"/>
</rdfs:Class>
<rdfs:Class rdf:ID="Course"><rdfs:comment>Course Class</rdfs:comment><rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Resource"/>
</rdfs:Class>
<rdf:Property rdf:ID="teacher"><rdfs:comment>Teacher of a course</rdfs:comment><rdfs:domain rdf:resource="#Course"/><rdfs:range rdf:resource="#Teacher"/>
</rdf:Property>
24
RDF Schema Esempio (3)<rdf:Property rdf:ID="students">
<rdfs:comment>List of Students of a course in alphabetical order</rdfs:comment><rdfs:domain rdf:resource="#Course"/><rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq"/>
</rdf:Property>
<rdf:Property rdf:ID="name"><rdfs:comment>Name of a Person or Course</rdfs:comment><rdfs:domain rdf:resource="#Person"/><rdfs:domain rdf:resource="#Course"/><rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Literal
</rdf:Property>
</rdf:RDF>
Istanze – classi – metaclassi
rdfs:Classrdfs:Resource
rdfs:subClassOf
rdf:type
rdf:type
terms:Person
terms:Students
terms:Course
rdf:type
rdfs:subClassOf
people:Ruffolo course:BDSIW
rdf:type
terms:teacher
Massimoterms:name
rdf:type
terms:Teacher
people:BianchiMarioterms:name
25
Reasoning
rdfs:Classrdfs:Resource
rdfs:subClassOf
rdf:type
rdf:type
terms:Person
terms:Students
terms:Course
rdf:type
rdfs:subClassOf
people:Ruffolo course:BDSIW
rdf:type
terms:teacher
Massimoterms:name
rdf:type
terms:Teacher
people:BianchiMarioterms:name
rdfs:subClassOf
rdf:type
Modello generale
rdf:type
terms:…
terms:…
rdfs:subClassOfrdfs:Class
rdf:type
rdfs:Resource
rdfs:subClassOf
rdf:type
rdfs:Property
rdf:domain
terms:…
terms:…
rdfs:range
terms:…
26
RDF Schema Esempio (4)<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns="http://www.unical.it/BDSIW/course_schema.rdf#"><Course rdf:ID="BDSIW">
<name>Basi di dati e sistemi informativi sul web</name><teacher>
<Teacher rdf:ID="mr"><name>Massimo Ruffolo</name>
</Teacher></teacher><students>
<rdf:Seq><rdf:li>
<Student rdf:ID="er"><name>Marco Rossi</name>
</Student></rdf:li><rdf:li>
<Student rdf:ID="gl"><name>Fabio Bianchi</name>
</Student></rdf:li><rdf:li>
<Student rdf:ID="js"><name>Giorgio Terruzzi</name>
</Student></rdf:li>
</rdf:Seq></students>
</Course></rdf:RDF>
Classi (1)Le classi sono aggregati di individui
Ogni classe rappresenta un tipo di risorsa su cui si costruisce il modello RDF
Il namespace di riferimento èhttp://www.w3.org/2000/01/rdf-schema#
Ogni classe è una risorsa in relazione rdf:type con la risorsahttp://www.w3.org/2000/01/rdf-schema#Class
http://www.unical.it/terms#PhDS
http://www.w3.org/200/01/rdf-schema#Class
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
27
Classi (2)Esempio<rdf:RDF xmlns:terms="http://www.unical.it/terms#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdf:Description rdf:about="http://www.unical.it/terms#PhDS">
<rdf:type rdf:resource="http://www.w3.org/2000/01/rdf-schema#Class" />
</rdf:Description>
</rdf:RDF>
Forma abbreviata di RDF ed rdf:ID per riferirmi alla descrizione locale (occorre strutturare correttamente il ns)<rdf:RDF xml:base="http://www.unical.it/terms"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
<rdfs:Class rdf:ID="PhDS"/>
</rdf:RDF>
Gerarchie di classiRDF(S) permette di organizzare le classi in gerarchieIl vocabolario RDF(S) mette a disposizione la relazione transitiva subClassOf
Esempio: PhD Student è una (is-a) Persona<rdfs:Class rdf:ID="Person" />
<rdfs:Class rdf:ID="PhDS">
<rdfs:subClassOf rdf:resource="#Person" />
</rdfs:Class>
http://www.unical.it/terms#PhDS
http://www.w3.org/200/01/rdf-schema#Class
rdf:typehttp://www.unical.it/terms#Person
rdf:type
rdfs:subClassOf
28
Sintassi alternativeDato che RDFS è espresso esso stesso in RDF posso utilizzare tutte le varianti sintattiche<rdfs:Class rdf:ID="PhDS">
<rdfs:subClassOf>
<rdfs:Class rdf:ID="Person" />
</rdfs:subClassOf>
</rdfs:Class>
Il meta-modello RDF(S)Le stesse risorse che usiamo per descrivere lo schema sono classirdfs:Class è la (meta) classe a cui appartengono tutte le classi
NON è l’analogo dell’Object di Java
rdfs:Resource è la classe “universo” da cui derivano tutte le classi di un modello. Se non indico alcun rdfs:subClassOf la classe deriva implicitamente da rdfs:Resource
È l’analogo dell’Object di Java
http://www.w3.org/200/01/rdf-schema#Class
http://www.w3.org/200/01/rdf-schema#Resource
rdfs:subClassOf
rdf:type
http://www.unical.it/terms#Person
rdf:type
rdfs:subClassOf
29
Esempio di Reasoning
rdfs:Classrdfs:Resource
rdfs:subClassOf
rdf:type
rdf:type
terms:Person
terms:PhDS
terms:Book
rdf:type
rdfs:subClassOf
people:D02005 bib:book0001
rdf:type
terms:authorPippo
terms:name
rdf:typerdfs:subClassOf
rdfs:subClassOf
rdf:type
RDF: Resource Description Framework
Proprietà
30
ProprietàOltre a descrivere le classi a cui appartengono gli oggetti del modello abbiamo bisogno di descrivere specifiche proprietà
Ogni proprietà RDF è istanza della classe predefinita rdf:Property
<rdf:Property rdf:ID="author" />
Es: la relazione author sussiste tra un libro ed una persona
http://www.unical.it/terms#author
http://www.w3.org/1999/02/22-rdf-syntax-ns#Property
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
Domain e Range (1)Legame tra classi e proprietà
RDF(S) fornisce anche un vocabolario per descrivere come ci si aspetta che proprietà e classi si combinino tra di loroProprietà predefinite rdfs:domain ed rdfs:range
http://www.unical.it/terms#Person
http://www.unical.it/terms#author
http://www.w3.org/1999/02/22-rdf-syntax-ns#Property
rdf:type
http://www.unical.it/terms#Book
rdfs:domain rdfs:range
31
Modello generale
rdf:type
terms:…
terms:…
rdfs:subClassOfrdfs:Class
rdf:type
rdfs:Resource
rdfs:subClassOf
rdf:type
rdfs:Property
rdf:domain
terms:…
terms:…
rdfs:range
terms:…