41
1 Prof. Massimo Ruffolo Ing. Maurizio Colica Capitolo 4 RDF: Resource Description Framework Introduzione Classi e Istanze Proprietà

07-08 - BDSIW - E2 - RDF-SPARQL - 018.ppt [modalità ...staff.icar.cnr.it/ruffolo/files/07-08 - BDSIW - E2 - RDF-SPARQL.pdf · immagini sul webimmagini sul web ... http:// del cuore

  • Upload
    vannhu

  • View
    221

  • Download
    0

Embed Size (px)

Citation preview

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

23

RDF Schema Esempio (1)

RDF Schema Esempio (2)

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