Prof. Massimo Ruffolo
Ing. Ermelinda Oro
Capitolo 4
RDF: Resource Description Framework
RDFS: RDF Schema
RDF: Resource
Description
Framework
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. È una piattaforma per la
descrizione delle risorse sul web
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
Proprietà di RDF
1.
RDF può essere interpretato da un computer
RDF non è nato per essere letto dall’uomo
2.
RDF è scritto in XML
3.
RDF fa parte delle attività del W3C per il “Web
Semantico”
4.
RDF è una “W3C Recommendation“
1.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
2.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.
3. 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.
4. RDF è un W3C Recommendation



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/mauri":

Nell’esempio non è stato considerato
alcun Namespace
Esempio Visivo
http://www.unical.it
homepage
http://www.unical.it/employee/mauri
author
Maurizio
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/mauri è Maurizio".

Il soggetto è: http://www.unical.it/employee/mauri
 Il predicato è: author
 L’oggetto è: Maurizio

Assrezione: “L’homePage
http://www.unical.it ".

di
http://www.unical.it/employee/mauri
Soggetto: http://www.unical.it/employee/mauri
 Predicato: homepage
 Oggetto: http://www.unical.it
è
Esempio Visivo
Asserzione
Oggetto
Predicato
http://www.unical.it
homepage
Soggetto
http://www.unical.it/employee/mauri
author
Oggetto
Predicato
Maurizio
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.
RDF Esempi
dichiarazione XML
ROOT doc RDF
xmlns:rdf namespace, ciò che porta il prefisso rdf fa riferimento al namespace
<rdf:Description> specifica la descrione della risorsa identificata
dall’attibuto rdf:about.
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
http:// www.mp3.it/cd/Pearl Days
company
Columbia
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
rdf:Bag
rdf:type
Elisa
rdf:_1
http:// www.mp3.it/song/
Ostacoli del cuore
cd:artist
rdf:_2
Ligabue
L’elemento <rdf:Seq>

Rappresenta un lista di valori ordinata

Può contenere valori duplicati.

Esempio
rdf:Seq
rdf:Seq
rdf:type
http:// www.mp3.it/
rdf:_1
cd:songs
cd/Pearl Days
01 Stay
rdf:_2
02 Gli Ostacoli del cuore
rdf:_3
....
L’elemento <rdf:Alt>

Rappresenta una lista di alternative

Esempio
rdf:Alt
rdf:Alt
rdf:type
rdf:_1
http:// www.mp3.it/
song/Ostacoli del cuore
CD
cd:format
rdf:_2
Disco
rdf:_3
MC
RDF Terms

Una lista di valori in RDF si chiamano
membri.

Quindi:
 Un
contenitore è una risorsa che contiene
altri oggetti
 Gli
oggetti contenuti in un contenitore- lista
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
RDFS: Resource
Description
Framework
Schema
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) è un estensione di RDF
RDF Schema (RDFS)




RDF Schema non ha classi predefinite.
RDF Schema fornisce la piattaforma per descrivere 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.
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

rdfs: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
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
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 Constraints: range
e domain

rdfs:range
 Indica
la classe dei valori ammissibili di una
proprietà.
 rdfs:range

è una classe rdf:Class
rdfs:domain
 Indica
 Se
la classe a cui la proprietà si applica
non è specificata indica che quella proprietà può
essere usata su qualsiasi classe.
RDF Constraints: range e
domain

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
classe a cui
la proprietà si applica
rdfs:domain
rdf:type
http:// www.mp3.it/cd/#singer
http:// www.mp3.it/cd/#Song
valori ammissibili
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
RDF Esempio
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
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.
@prefix cd: <http://example.org/cd/>
@prefix: <http://example.org/esempio/>
:Permutation cd:autore "Amon Tobin".
:Bricolage cd:autore "Amon Tobin".
:Amber cd:autore "Autechre".
:Amber cd:anno 1994.
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 }
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:type - ICAR-CNR