Prof. Massimo Ruffolo
Ing. Maurizio Colica
Capitolo 4
RDF: Resource Description Framework

Introduzione

Classi e Istanze

Proprietà
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.
Cos’è RDF?

RDF sta per Resource Description Framework

RDF è una piattaforma per la descrizione delle risorse sul web

RDF è costituito da un modello dei dati e da una sintassi separate
l’una dall’altra

RDF può essere interpretato da un computer

RDF non è nato per essere letto dall’uomo

RDF è scritto in XML

RDF 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,copyright
Descrizione dei contenuti e classificazione di
immagini sul web
Descrizione di contenuti per facilitare il compito
dei motori di ricerca
Descrizione di librerie digitali
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.
RDF ed il “Web Semantico"

Il linguaggio RDF fa parte del W3C's Semantic
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 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/
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
Esempio Visivo
Soggetto
Predicato
http://www.unical.it
Oggetto
homepage
http://www.unical.it/employee/mcolica
author
mcolica
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/mcolica
 Predicato: homepage
 Oggetto: http://www.unical.it
RDF Esempio

Collezione di CD:
Title
Artist
Country
Company
Pearl Days
Elisa
Italia
Columbia
12 euro
2006
Robbie Williams
Misunders
tood
UK
CBS Records
18 euro
2001
...
Price
Year
RDF Esempio: Rappresentazione
Grafica
Elisa
artist
company
Columbia
http:// www.mp3.it/cd/Pearl Days
price
12 euro
year
2006
RDF Esempi
RDF Esempi





La 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
identificata dall’attibuto rdf:about.
Gli elementi: <cd:artist>, <cd:country>, <cd:company>, etc.
sono proprietà della risorsa.
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-rdfsyntax-ns#">
[descrizioni delle risorse]
</rdf:RDF>
L’ elemento <rdf:Description>

L’ <rdf:Description> identifica una risorsa ed i
suoi 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.
Proprietà

come Attributi
Le 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.
Proprietà come Risorse
name
http:// www.mp3.it/artist/Elisa
artist
company
Columbia
http:// www.mp3.it/cd/Pearl Days
price
12 euro
year
2006
Elisa
RDF Elementi contenitori

RDF 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>.
L’elemento <rdf:Bag>

Rappresenta una lista di valori non ordinata.

Può contenere valori duplicati.

Esempio
rdf:Bag
http:// www.mp3.it/song/Ostacoli del cuore
rdf:Bag
cd:artist
rdf:type
rdf:_1
Elisa
rdf:_2
Ligabue
L’elemento <rdf:Seq>

Rappresenta un lista di valori ordinata

Può contenere valori duplicati.

Esempio
rdf:Seq
http:// www.mp3.it/cd/Pearl Days
rdf:Seq
cd:song
rdf:type
01 Stay
rdf:_1
rdf:_2
rdf:_3
02 Gli Ostacoli del cuore
....
L’elemento <rdf:Alt>

Rappresenta una lista di alternative

Esempio
rdf:Alt
http:// www.mp3.it/song/Ostacoli del cuore
rdf:Alt
cd:format
rdf:type
CD
rdf:_1
rdf:_2
rdf:_3
Disco
MC
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.
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 chiuse

Una collezione è descritta dall’attibuto rdf:parseType="Collection".

Example
RDF Schema (RDFS)

RDF Schema (RDFS) è un estensione di
RDF.
RDF Schema e Classi

RDF descrive risorse tramite classi, proprietà e valori.

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 oggetti.

In RDF si possono rappresentare le risorse come istanze di classi
e definire sottoclassi e tipi.
RDFS Esempi

Classi 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
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 property
La risorsa http://www.unical.it/students/Maurizio è
rdf:type Student
La risorsa http://www.unicla.it/students/Maurizio è
rdf: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 classe

rdf:Property – le proprietà sono istanze di
questa classe.

rdfs:Class – una classe dei linguaggi
object oriented.
RDF Proprietà





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 Constraints

rdfs:range
 Indica
la classe dei valori ammissibili di una
proprietà.
 rdfs:range

è una classe rdf:Class
rdfs:domain
 Indica
 Se
la classe cui la proprietà si applica.
non è specificata indica che quella proprietà può
essere usata su qualsiasi classe.
Domain e Range

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 loro

Proprietà predefinite rdfs:domain ed rdfs:range
http://www.w3.org/1999/02/22-rdf-syntax-ns#Property
rdf:type
rdfs:domain
http:// www.mp3.it/cd/#singer
http:// www.mp3.it/cd/#Song
rdfs:range
http:// www.mp3.it/cd/#Artist
RDF Documentation

rdfs:comment – testo libero

rdfs:label – Riporta informazioni sulla versione
di una risorsa
RDF Schema Esempio (1)
RDF Schema Esempio (2)
RDF Schema Esempio (3)
Istanze – classi – metaclassi
rdfs:subClassOf
rdfs:Resource
rdfs:Class
rdf:type
rdf:type
rdf:type
terms:Person
terms:Course
rdfs:subClassOf
terms:Students
rdf:type
Massimo
Mario
terms:name
people:Bianchi
terms:name
terms:Teacher
rdf:type
terms:teacher
people:Ruffolo
course:BDSIW
Reasoning
rdfs:subClassOf
rdfs:Resource
rdfs:Class
rdf:type
rdf:type
rdf:type
terms:Person
rdfs:subClassOf
rdfs:subClassOf
terms:Students
rdf:type
Massimo
Mario
terms:Course
rdf:type
terms:name
people:Bianchi
terms:name
terms:Teacher
rdf:type
terms:teacher
people:Ruffolo
course:BDSIW
Modello generale
rdfs:Resource
terms:…
rdfs:subClassOf
rdf:type
rdfs:Class
rdfs:subClassOf
terms:…
rdf:type
terms:…
rdf:domain
terms:…
rdfs:range
terms:…
rdfs:Property
rdf:type
RDF Schema Esempio (4)
Interrogazione di file
RDF
SPARQL, linguaggio di interrogazione dell' RDF
asceso da qualche mese al rango di W3C
Candidate Recommendation,
è
stato
accolto
entusiasticamente
come
l'agognato ultimo tassello per l'edificazione del
Web semantico
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
Query SPARQL

PREFIX cd: <http://example.org/cd/>
SELECT ?title ?artist ?year
FROM <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
Clausola OPTIONAL

PREFIX cd: <http://example.org/cd/>
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
Misunderstood
Robbie
Williams
Restituisce tutte le risorse per le quali sia specificato l’artista e
opzionalmente l’anno
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
Pearl Days
Elisa
Robbie
Misunderstood Williams
Price
Year
2006
18 euro
Restituisce tutte le risorse per le quali sia specificato o il prezzo
o l’anno.
Clausola FILTER

PREFIX cd: <http://example.org/cd/>
SELECT ?title ?artist ?price ?year

FROM <cd.rdf>
WHERE {
{?title cd:year ?year.}
FILTER (?year > 2005)
}
Risultato
Title
Artist
Pearl Days
Elisa
Price
Year
2006
Restituisce tutte le risorse per le quali l’attributo anno è maggiore di
2005.
Clausola FILTER con REGEX

PREFIX cd: <http://example.org/cd/>
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.
Costrutti speciali

SELECT DISTINCT ?title ?artist

ORDER BY DESC(?autore)

LIMIT 10

OFFSET 10
Esempio 2: Human Ontology
(Classes)
Animal
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
Male
Person
Female
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
rdfs:subClassOf
Man
Lecturer
Researcher
Woman
Esempio 2: Human Ontology
(ObjectProperty)
rdfs:domain
Animal
hasAncestor
rdfs:subPropertyOf
Animal
rdfs:range
hasParent
rdfs:range
Female
rdfs:range
hasMother
hasFather
rdfs:subPropertyOf
rdfs:domain
rdfs:subPropertyOf
rdfs:domain
Animal
hasSister
Male
Animal
hasBrother
rdfs:range
rdfs:domain
Female
rdfs:range
rdfs:domain
Person
hasFriend
Male
Person
hasSpouse
rdfs:range
Person
rdfs:range
Person
Esempio 2: Human Ontology
(DataType Property)
rdfs:domain
rdfs:domain
Person
Animal
shirtSize
age
rdfs:range
Integer
rdfs:range
rdfs:domain
Integer
rdfs:domain
Person
trouserssize
Person
name
rdfs:range
Integer
rdfs:range
String
Istanze
isA
Lecturer
isA
Eve
isA
Man
Harry
hasFriend
isA
hasChild
Person
hasSpouse
John
hasSpouse
hasFriend
age
Alice
David
14
hasFriend
shoeSize
Sophie
isA
37
hasFather
hasFriend
Gastone
Researcher
Mark
age
16
shoeSize
39
hasChild
Jack
(…)
Query su Classi
SELECT ?x WHERE { ?x rdf:type rdfs:Class }
X
Animal
Male
Person
Female
man
Lecturer
Researcher
Woman
Sussunzioni
SELECT ?x ?y WHERE { ?x rdfs:subClassOf ?y }
X
Male
Person
Female
Man
Man
Man
Woman
Woman
Woman
Lecturer
Lecturer
…
Y
Animal
Animal
Animal
Animal
Male
Person
Animal
Female
Person
Animal
Person
…
Proprietà: Persone
Sposate
SELECT ?x ?y WHERE { ?x humans:hasSpouse ?y }
X
Harry
Eve
Y
Sophie
David
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
Gastone
Alice
John
COUNT
1
2
1
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 ?age
WHERE
{ ?person rdf:type humans:Person
OPTIONAL
{ ?person humans:age ?age }
}
Maggiorenni
SELECT ?x
WHERE { ?x humans:age ?age
FILTER ( xsd:integer(?age) >= 18 ) }
E’ Mark Maggiorenne?
ASK
WHERE
{
#Mark
humans:age ?age
FILTER
( xsd:integer(?age) >= 18 )
}
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
Bibliografia

RDF/RDFS SPECIFICATION


Semantic web tutorial: RDF, RDFS and SPARQL using CORESE


http://www.w3.org/RDF/
http://www-sop.inria.fr/acacia/soft/corese/tutorial.php
CORESE (Open Source Software per interrogare file RDF)

http://www-sop.inria.fr/teams/edelweiss/wiki/wakka.php?wiki=Corese
Scarica

RDF - ICAR-CNR