Вы находитесь на странице: 1из 45

Le modèle de données -RDF -

Cours L3 -WS–Informatique
Générale-
AKLI-ASTOUATI Karima
Plan du cours

• RDF, le cadre de description des ressources.

• Comment écrire / lire en RDF.

• Comment pouvez-vous décrire vos données RDF.


RDF : présentation

● Resource Description Framework
● Permet la représentation de méta-données
(données sur les données)
● Ce modèle peut être vu comme un graphe
étiqueté et orienté, ou comme un modèle
orienté objets
● Une syntaxe en XML ; mais pas la seule
Modèle de données du Web Sémantique
• RDF: Resource Description Framework.

– Proposé par W3C pour représenter les méta données concernant une
ressource Web.
– Description des ressources en terme de propriétés simples et de leurs
valeurs.
– Distingues trois types d’objets:
– Ressource: collection de pages web, un livre, etc.
– Propriété: aspect, caractéristique, un attribut, etc.
– Déclaration: <Ressource, Propriété, Valeur >.
Des déclarations RDF sont souvent représentées sous forme de
graphes selon la recommandation W3C :
http://www.w3.org/TR/rdf-concepts/
Les ressources pour RDF
• Toutes les choses décrites par les expressions RDF sont appelées
ressources.
• Une ressource peut être une page Web entière; Comme le
document HTML «http://www.w3.org/Overview.html» par
exemple.
• Une ressource peut faire partie d'une page Web; par exemple. Un
élément HTML ou XML spécifique dans la source du document.
• Une ressource peut également être une collection entière de pages;
par exemple. Un site Web entier.
• Une ressource peut également être un objet qui n'est pas
directement accessible via le Web; par exemple. Un livre imprimé.
• Les ressources sont toujours nommées par des URI plus des ids
d'ancrage facultatifs.
Représentation graphique
Ellipse = URI (sujet ou objet)
Rectangle = Littéral (objet)
Arc = Prédicat
• Représentation en RDF/XML
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-
syntax-ns#"
xmlns:s="http://description.org/schema/">
<rdf:Description
about="http://www.w3.org/Home/Lassila">
<s:Creator>Ora Lassila</s:Creator>
</rdf:Description>
</rdf:RDF>

• en NOTATION3 :
@prefix mus: <http://www.musiciens.org#> .
mus:marc mus:joue mus:accordeon .
Formalisons les descriptions
avec des atomes :

sujet verbe complément


Exemple
• Ora Lassila is the creator of the resource
http://www.w3.org/Home/Lassila

● Subject (Resource)
http://www.w3.org/Home/Lassila
● Predicate (Property) Creator
● Object (literal) "Ora Lassila”
Exemple pour RDF
• Marc joue de l’accordéon.
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:mus="http://www.musiciens.org#">
<mus:marc>
<mus:joue>accordeon</mus:joue>
</mus:marc>
</rdf:RDF>

• en NOTATION3 :
@prefix mus: <http://www.musiciens.org#> .
mus:marc mus:joue mus:accordeon .
Une description plus formelle :

Pizza de Tiphaine est une recette de pizza


Pizza de Tiphaine a pour ingrédient tomate
Pizza de Tiphaine a pour ingrédient mozarella
Pizza de Tiphaine a pour ingrédient champignon
Pizza de Tiphaine est dans la catégorie facile
Pizza de Tiphaine se prépare en 20 min
Oui mais…
comment exprimer de façon
non-ambigüe
ces descriptions ?
« a pour ingrédient », « contient », « has ingredient »… ?
En utilisant une interprétation commune des
descriptions qui s’appuie sur des
Vocabulaires partagés
Autrement appelés

Ontologies
Qui déterminent un sens univoque aux verbes,
aux catégories de sujet et aux compléments
Une description plus formelle :

ex:pizza23 rdf:type recette de pizza


ex:pizza23 food:hasIngredient tomate
ex:pizza23 food:hasIngredient mozarella
ex:pizza23 food:hasIngredient champignon
ex:pizza23 dc:subject myData:easy
ex:pizza23 schema:cookingTime 20 min
ex:pizza23 rdfs:label « Pizza de Tiphaine »
Question plus formelle

?truc rdf:type recette de pizza


?truc schema:cookingTime < 20 min
?truc dc:subject végétarienne
RDF est un modèle de Triplets i.e toute connaissance est représentée en:

(sujet, prédicat, objet)

•Le sujet représente la ressource à décrire, les entités;


•Le prédicat représente un type de propriété applicable à cette ressource ;
•L'objet représente une donnée ou une autre ressource : c’est la valeur de la
propriété.

Exemple: Le doc.html a pour auteur Akli et pour thème les ontologies.

•Doc.html a pour auteur Akli


•Doc.html a pour theme les ontologies

Les triplets peuvent être vus comme des liens de graphes (Sommet, lien Sommet)
#Akli

Auteur

Doc.html

theme

#Ontologie
Représentation graphique
Ellipse = URI (sujet ou objet)
Rectangle = Littéral (objet)
Arc = Prédicat
Représentation graphique d'un document RDF
Un graphe RDF, ainsi formé de triplets, est un multigraphe orienté étiqueté.
Chaque triplet correspond alors à un arc orienté dont le label est le prédicat, le
nœud source est le sujet et le nœud cible est l'objet.
Exemple
• Ecrire l'ensemble des triplets du graphe RDF
G1 illustré ci-dessous :
Lyon nom LYN type Aeroport

On veut modifiez le graphe RDF G1 pour qu’il puisse exprimer


également la description suivante : « BER est l'aéroport de Berlin.
BER et LYN sont des aéroports localisés en Europe. »
Représentation en RDF/XML pour
décrire des graphes RDF
Un exemple de spécification RDF/XML du graphe RDF G1 ci-dessous :
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ex="http://example.org/">
<rdf:Description rdf:about="http://example.org/LYN">
<ex:nom>Lyon</ex:nom>
<rdf:type
rdf:resource="http://example.org/Aeroport"/>
</rdf:Description>
</rdf:RDF>
L'utilisation des espaces de noms rdf et ex permet l'emploi de plusieurs vocabulaires
dans le même document : rdf:type permet le typage et ex:nom exprime une
relation de nommage. Le bloc rdf:Description permet de définir un ensemble de
triplets. Celui-ci contient l'attribut rdf:about identifiant un sujet. Le contenu du
bloc rdf:Description fait référence à des prédicats ainsi qu'à des objets relatifs au
sujet donné.
Validation de la spécification RDF/XML
• À tout moment, vous pouvez valider la syntaxe de votre description
RDF, spécifiée dans le langage RDF/XML, grâce au validateur disponible
à l'adresse suivante : http://www.w3.org/RDF/Validator/.
• Accédez au validateur en ligne. Dans le champ « Check by Direct Input
», entrez votre spécification RDF/XML et sélectionnez le bouton « Parse
RDF ».
• Pour vérifiez que votre document RDF/XML est valide, vous devez voir
apparaître la mention « Your RDF document validated successfully. ».
• Si ce n'est pas le cas, corrigez votre document jusqu'à ce que celui-ci
soit valide.
• Lorsqu'un document RDF/XML a été validé par le système celui-ci
affiche : une liste des triplets (« Triples of the Data Model ») ainsi que le
document original (« The original RDF/XML document »).
• Avant la validation d'un document RDF/XML, le système offre
également une option de visualisation du graphe RDF validé, via le
champ « Display Result Options ».
Validateur génére
• Number Subject Predicate Object

1 http://example.org/LYN
http://example.org/nom
"Lyon »

2http://example.org/LYN
http://www.w3.org/1999/02/22-rdf-syntax-ns#type
http://example.org/Aeroport
Exemples 2 RDF/XML
• Donnez le graphe associé à cette spécification RDF/XML:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:local="http://www.polymtl.ca/vocab#">
<rdf:Description rdf:about= "http://www.polymtl.ca/profs#MichelGagnon">
<local:hasHomePage
rdf:resource="http://www.professeurs.polymtl.ca/michel.gagnon"/>
<local:worksAt rdf:resource="http://www.dgi.polymtl.ca"/>
<local:age
rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">49</local:age>
<local:name> Michel Gagnon </local:name>
</rdf:Description>
</rdf:RDF

49^^xsd:integer page 19 (chapitre RDF de Gagnon)


• Validateur génére:
Number Subject Predicate Object
1http://www.polymtl.ca/profs#MichelGagnon
http://www.polymtl.ca/vocab#hasHomePage
http://www.professeurs.polymtl.ca/michel.gagnon

2http://www.polymtl.ca/profs#MichelGagnon
http://www.polymtl.ca/vocab#worksAt
http://www.dgi.polymtl.ca

3http://www.polymtl.ca/profs#MichelGagnon
http://www.polymtl.ca/vocab#age
"49"^^http://www.w3.org/2001/XMLSchema#integer

4http://www.polymtl.ca/profs#MichelGagnon
http://www.polymtl.ca/vocab#name
"Michel Gagnon"
La syntaxe générale pour les littéraux est composée :
d'une chaîne de caractères (entre guillemets, "...", ou entre des apostrophes, '...')
d'une balise optionnelle de langue (language tag) (introduite par @)
d'une balise optionnelle pour décrire le type de données du littéral. Le type prend la forme
d'un IRI relatif ou absolu (introduit par ^^).
xsd:string "du texte unicode"

true
xsd:boolean
false

-1
0
xsd:integer
12678967543233
+100000
-1.23
12678967.543233
xsd:decimal
+100000.00
"210"^^xsd:decimal

xsd:date "2002-10-10"^^xsd:date
• Représentation en Turtle
Le langage Turtle offre une syntaxe beaucoup plus
légère et lisible pour décrire des graphes RDF.

Spécifier en Turtle le graphe RDF G1:


@prefix rdf:<http://www.w3.org/1999/02/22-rdf-syntax
ns#>.
@prefix ex: http://example.org/.
ex:LYN ex:nom "Lyon" .
ex:LYN rdf:type ex:Aeroport .
Flexibilité de specification en turtle
• <Sujet> <Predicat>
<Objet1>,<Objet2>,…,<ObjetN> .
• <Sujet>
<Predicat1> <Objet1> ;
<Predicat2> <Objet2> ;

<PredicatN> <ObjetN> .
Validateur pour turtle
• Comme pour RDF/XML, la syntaxe d’une description RDF, spécifiée
dans le langage Turtle, est possible grâce au validateur disponible à
l'adresse suivante :
http://www.rdfabout.com/demo/validator/
• Accédez au validateur en ligne. Dans le champ « Input Format »,
sélectionnez « Notations 3 (or N-Triples/Turtle). Puis, entrez votre
spécification Turtle et sélectionnez le bouton « Validate! ».
• Si le document est vérifié, vous devez voir apparaître la mention «
Syntax validated OK. ». Si ce n'est pas le cas, corrigez votre
document jusqu'à ce que celui-ci soit valide.
• Lorsqu'un document Turtle a été validé par le système celui-ci
affiche : la traduction du document Turtle validé en RDF/XML, une
liste des triplets ainsi que le document original.
Exemple
@prefix local: http://www.polymtl.ca/vocab#>.
@prefix prof: <http://www.polymtl.ca/profs#> .

prof:MichelGagnon local:hasHomePage
<http://www.professeurs.polymtl.ca/michel.gagnon> .

prof:MichelGagnon local:worksAt
<http://www.dgi.polymtl.ca> .

prof:MichelGagnon local:name "Michel Gagnon" .


simplification
@prefix local: http://www.dgi.polymtl.ca/vocab#>.
@prefix prof: <http://www.dgi.polymtl.ca/profs#> .

prof:MichelGagnon
local:hasHomePage
<http://www.professeurs.polymtl.ca/michel.gagnon> ;
local:worksAt <http://www.dgi.polymtl.ca> ;
local:name "Michel Gagnon" .
Simplification
@prefix local: <http://www.dgi.polymtl.ca/vocab#> .
@prefix prof: <http://www.dgi.polymtl.ca/profs#> .
prof:MichelGagnon
local:hasHomePage
<http://www.professeurs.polymtl.ca/michel.gagnon> ;
local:worksAt <http://www.dgi.polymtl.ca> ;
local:worksAt <http://www.wikimeta.com> ;
local:name "Michel Gagnon" .

local:worksAt <http://www.dgi.polymtl.ca> ,
<http://www.wikimeta.com> ;
(Page 24 cours Gagnon)
Conteneurs (Containers)
Ils permettent de décrire des groupes. Il s’agit d’une ressource qui décrit des
ressources. Par exemple, la ressource LIVRE décrite par un groupe d’AUTEURS .
Les choses contenues dans un container sont appelées membres du groupe.

Il existe 3 types de containers prédéfinis :


 rdf:Bag : pas d’ordre entre les membres
rdf:Seq : membres ordonnés
 rdf:Alt : on s’attend à ce qu’un seul des éléments soit sélectionné

Conteneur est relié à un membre par la relation rdf:_n (n est un numéro)

Une ressource est un container, si on utilise la propriété rdf:type.


On dit que les containers sont ouverts, i.e. il peut exister d’autres membres du
conteneur que ceux indiqués par la description dont on dispose. Un conteneur dit
seulement que certaines ressources identifiées sont membres ; il ne dit pas qu'il
n'en existe pas d'autres. De même, si un graphe peut décrire quelques membres,
il n'y a aucun moyen d'exclure la possibilité d'un autre graphe ailleurs qui décrive
des membres en plus.
Rdf:Bag
‘Bag‘représente un groupe de ressources ou littéraux
dont les membres peuvent être dupliqués. Il n’y a pas
de signification dans l’ordre attribué aux membres.
Exemple 1:
• Soit la déclaration: <Parmi les étudiants du cours de
logique on trouve Ali, Mohamed, Lila et Réda>. Le
cours doit être décrit en donnant sa propriété
s:étudiants (dans un vocabulaire approprié). Sa
valeur est un conteneur de type rdf:bag
(représentant le groupe des étudiants).
• Exemple 2 Page 36 (chapitre RDF de Gagnon)
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-
syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:artist>
<rdf:Bag>
<rdf:li>John</rdf:li>
<rdf:li>Paul</rdf:li>
<rdf:li>George</rdf:li>
<rdf:li>Ringo</rdf:li>
</rdf:Bag>
</cd:artist>
</rdf:Description>
</rdf:RDF>
• <rdf:Bag
rdf:about="http://www.polymtl.ca/Vocabulary#ProfsDeparte
ment">
<rdf:_1
rdf:resource="http://www.polymtl.ca/Profs#MarieSteMarie"/
>
<rdf:_2
rdf:resource="http://www.polymtl.ca/Profs#JeanStJean"/>
<rdf:_3
rdf:resource="http://www.polymtl.ca/Profs#MichelGagnon"/
>
</rdf:Bag>
Rdf:seq
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" x
mlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:artist>
<rdf:Seq>
<rdf:li>George</rdf:li>
<rdf:li>John</rdf:li>
<rdf:li>Paul</rdf:li>
<rdf:li>Ringo</rdf:li>
</rdf:Seq>
</cd:artist>
</rdf:Description>
</rdf:RDF>
rdf:Alt
Alternative ou ‘Alt’ représente un groupe de ressources ou
littéraux qui sont alternatifs (typiquement pour une valeur
unique d’une propriété). Par exemple, une ‘Alt’ peut être
utilisée pour décrire des translations alternatives de
langages pour le titre d’un livre, ou pour décrire une liste
de sites Internet alternative dans lesquels la ressource peut
être retrouvée. Une application utilisant une propriété dont
la valeur est un conteneur ‘Alt’ peut choisir n’importe quel
membre du groupe comme approprié.
Exemple :
Pour illustrer un conteneur Alt, représentons la phrase ‘le
code source pour X11 peut être retrouvé dans
‘ftp.exemple.org.ftp1’ ou ‘ftp1.exemple.org’ ou
‘ftp2.example.org’.
<?xml version="1.0"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-
rdf-syntax-ns#"
xmlns:cd="http://www.recshop.fake/cd#">
<rdf:Description
rdf:about="http://www.recshop.fake/cd/Beatles">
<cd:format>
<rdf:Alt>
<rdf:li>CD</rdf:li>
<rdf:li>Record</rdf:li>
<rdf:li>Tape</rdf:li>
</rdf:Alt>
</cd:format>
</rdf:Description>
</rdf:RDF>
Collections
• Il n'y a aucun moyen de clore un conteneur.
RDF permet de décrire des groupes contenant
seulement les membres indiqués, sous la forme
de collections RDF. Une collection RDF est un
groupe de choses représenté par une structure de
liste dans le graphe RDF. Cette structure de liste se
construit en utilisant un vocabulaire de
collection (collection vocabulary) constitué du type
prédéfini rdf:List, des propriétés
prédéfinies rdf:first et rdf:rest, et de la ressource
prédéfinie rdf:nil.
Collection
• Une ressource de type rdf:List représente une
séquence fermée (non extensible) de ressources.
Propriétés : rdf:first, rdf:rest, rdf:nil

• Exemple :
(ex:members, rdf:type, rdf:List)
(ex:members, rdf:first, ex:anne)
(ex:members, rdf:rest, _:b1)
(_:b1, rdf:type, rdf:List)
(_:b1, rdf:first, ex:bernd)
(_:b1, rdf:rest, rdf:nil)
Exemple 2 page 43 cours RDF de Gagnon
Déclarations RDF et réification
Si on veut exprimer que« Luc croît que Serge est l’auteur
de la page http://www.inria.fr/gemo ».
Il s’agit d’une déclaration sur une autre déclaration
Luc
Statement1 croît

Serge dc:author http://www.inria.fr/gemo

(statement1, rdf:type, rdf:Statement)


(luc, croit, statement1)
(statement1, rdf:subject, serge)
(statement1, rdf:predicate, dc:author)
(statement1, rdf:object, http$:$//www.inria.fr/gemo)
• La balise rdf:Statement permet de désigner une
ressource qui est en fait un énoncé RDF.
• Avec les prédicats rdf:subject, rdf:predicat et
rdf:object, on peut indiquer les trois composantes de
l’énoncé.
• RDF n’offre pas de moyen pour spécifier l’énoncé RDF
qui correspond à la réification (On ne peut pas inférer le
triplet)
• En ajoutant l’attribut rdf:ID à une propriété (en
notation RDF/XML), on spécifie implicitement une
réification de l’énoncé concerné par cette propriété.

• Page 49 Cours RDF Gagnon


RDF Schema –Classe
• Suite cours RDF de Gagnon

Оценить