0% ont trouvé ce document utile (0 vote)
40 vues75 pages

Intro RDF

Transféré par

marhiche891
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
40 vues75 pages

Intro RDF

Transféré par

marhiche891
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction à RDF

Michel Gagnon
Plan
● Présentation de RDF
● Sérialisations N-Triples, RDF/XML et Turtle
● Sémantique et inférence
RDF

Modèle de données pour décrire des
ressources du web

Graphe:

les noeuds représentent des ressources

les arcs représentent des relations entre ces
ressources

Les ressources sont représentées par leur
URI

Copyright 2006 – Michel Gagnon


RDF
● Le graphe est représenté par un ensemble
d'énoncés (statements)
● Un énoncé est un triplet <S, P, O>, où
● S est le sujet
● P est le prédicat (une propriété)
● O est l'objet (la valeur de la propriété pour le sujet
en question)
URI
URIref
● Plus précisément, les ressources sont identifiées
par des URIrefs, c’est-à-dire URI + identificateur
de fragment:
● [Link] (URI)
● #MichelGagnon (Fragment)
● http//[Link]/Profs#MichelGagnon
● En HTML, ceci permet de désigner une section
dans un document, alors que pour RDF il ne s’agit
que d’un nom donné à une ressource
RDF – Exemple

Michel Gagnon

local:name

local:worksAt
[Link] [Link]
local:hasHomePage

[Link]

local: [Link]
RDF – Exemple

Relation Noeud litéral


Michel Gagnon

local:name

local:worksAt
[Link] [Link]
local:hasHomePage

[Link]

Noeud URI
RDF – Exemple

Michel Gagnon

local:name

local:worksAt
[Link]

local:hasHomePage

[Link]

Un nœud peut être vide


Syntaxe abstraite
● Collection de triplets
● Une telle collection forme un graphe RDF
● Puisque les propriétés sont désignées par des URI, on peut donc
les décrire comme n’importe quelle ressource
● Un noeud peut être :
● Une URI
● Un littéral
● Un nœud vide (il désigne en quelque sorte une ressource dont
on ne connait pas le nom)
● Deux types de littéraux :
● Simple: “Michel Gagnon”^^xsd:String
● Typé: “10”^^xsd:integer
Sérialisation RDF/XML
● Utilise les espaces de nommage
● Balise rdf:Description pour regrouper les
descriptions d’une ressource
● Pour un nœud vide, on retire l'attribut about
● Pour étiqueter un noeud vide, on utilise la balise
rdf:nodeID
● Pour représenter un littéral typé, on utilise l’attribut
rdf:datatype dans le prédicat qui relie la ressource à
ce littéral
● Il y a souvent plusieurs manières de représenter le même
graphe RDF
Sérialisation RDF/XML
Michel Gagnon

local:name

local:worksAt
[Link] [Link]
local:hasHomePage

[Link]

<rdf:RDF xmlns:rdf="[Link]
xmlns:local="[Link]
<rdf:Description rdf:about="[Link]
<local:hasHomePage
resource="[Link]
<local:worksAt resource="[Link]
<local:name> Michel Gagnon </local:name>
</rdf:Description>
</rdf:RDF>
Sérialisation RDF/XML
Michel Gagnon

local:name

local:worksAt
[Link]

local:hasHomePage

[Link]

<rdf:RDF xmlns:rdf="[Link]
xmlns:local="[Link]
<rdf:Description>
<local:hasHomePage
resource="[Link]
<local:worksAt resource="[Link]
<local:name> Michel Gagnon </local:name>
</rdf:Description>
</rdf:RDF>
Sérialisation RDF/XML
Michel Gagnon 49^^xsd:integer

local:name local:age

local:worksAt
[Link] [Link]
local:hasHomePage

[Link]

<rdf:RDF xmlns:rdf="[Link]
xmlns:local="[Link]
<rdf:Description rdf:about="[Link]
<local:hasHomePage
resource="[Link]
<local:worksAt resource="[Link]
<local:age rdf:datatype="[Link]
<local:name> Michel Gagnon </local:name>
</rdf:Description>
</rdf:RDF>
Sérialisation Turtle
● Permet de spécifier des préfixes
● Permet de combiner des descriptions d’une même ressource :
● On utilise ; pour grouper des triplets concernant un même sujet
● On utilise , pour grouper plusieurs instances d'une propriété
concernant un même sujet
● Noeud vide représenté par les crochets [ ]
● Toutes les descriptions relatives à un noeud vide peuvent être
placées à l'intérieur des crochets
Sérialisation Turtle
Michel Gagnon

local:name

local:worksAt
[Link] [Link]
local:hasHomePage

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

prof:MichelGagnon
local:hasHomePage <[Link] .

prof:MichelGagnon local:worksAt <[Link] .

prof:MichelGagnon local:name "Michel Gagnon" .


Sérialisation Turtle
Michel Gagnon

local:name

local:worksAt
[Link] [Link]
local:hasHomePage

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

prof:MichelGagnon
local:hasHomePage <[Link] ;
local:worksAt <[Link] ;
local:name "Michel Gagnon" .
Sérialisation Turtle
Michel Gagnon

local:name

local:worksAt
[Link] [Link]
local:hasHomePage
[Link] local:worksAt

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

prof:MichelGagnon
local:hasHomePage <[Link] ;
local:worksAt <[Link] ;
local:worksAt <[Link] ;
local:name "Michel Gagnon" .
Sérialisation Turtle
Michel Gagnon

local:name

local:worksAt
[Link] [Link]
local:hasHomePage
[Link] local:worksAt

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

prof:MichelGagnon
local:hasHomePage <[Link] ;
local:worksAt <[Link] ,
<[Link] ;
local:name "Michel Gagnon" .
Sérialisation Turtle
Michel Gagnon

local:name

local:worksAt
[Link]

local:hasHomePage

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

[]
local:hasHomePage <[Link] ;
local:worksAt <[Link] ;
local:name "Michel Gagnon" .
Sérialisation Turtle
Michel Gagnon

local:name

local:worksAt
[Link]

local:hasHomePage

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

[
local:hasHomePage <[Link] ;
local:worksAt <[Link] ;
local:name "Michel Gagnon" .
].
Sérialisation Turtle
Michel Gagnon
local:JeanPaul2

local:name
local:knows
local:worksAt
[Link]

local:hasHomePage

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

_:n1
local:hasHomePage <[Link] ;
local:worksAt <[Link] ;
local:name "Michel Gagnon" .

local:JeanPaul2 local:knows _:n1 .


Sérialisation Turtle
Michel Gagnon
local:JeanPaul2

local:name
local:knows
local:worksAt
[Link]

local:hasHomePage

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

local:JeanPaul2 local:knows
[ local:hasHomePage <[Link] ;
local:worksAt <[Link] ;
local:name "Michel Gagnon" ] .
RDF – Déclaration de type de
ressource
● Pour identifier le type d’une ressource:
● Utiliser le prédicat rdf:type pré-défini par RDF
● Remplacer la balise rdf:Description par le type de
la ressource
● À noter qu’une ressource peut avoir plusieurs
types
● En Turtle, on peut utiliser le prédicat a
Type – Exemple
Michel Gagnon

[Link]

local:name
rdf:type
[Link] local:worksAt
[Link]

local:hasHomePage

[Link]
Type – Exemple - Turtle
Michel Gagnon

[Link]

local:name
rdf:type
[Link] local:worksAt
[Link]

local:hasHomePage

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

prof:MichelGagnon
rdf:type local:Professor ;
local:hasHomePage <[Link] ;
local:worksAt resource <[Link] ;
local:name “Michel Gagnon” .
Type – Exemple - Turtle
Michel Gagnon

[Link]

local:name
rdf:type
[Link] local:worksAt
[Link]

local:hasHomePage

[Link]

@prefix local: <[Link] .


@prefix prof: <[Link] .

prof:MichelGagnon
a local:Professor ;
local:hasHomePage <[Link] ;
local:worksAt resource <[Link] ;
local:name “Michel Gagnon” .
RDF Schema - Classes
● Une ressource peut appartenir à plus d’une
classe
● Un type appartient à la classe rdfs:Class
● RDFS permet de définir une hiérarchie de
classes, grâce au prédicat rdfs:subClassOf
RDF Schema - Classes

Michel Gagnon
local:Professor
local:name
rdf:type
[Link]
RDF Schema - Classes

rdfs:Class

rdf:type
Michel Gagnon
local:Professor
local:name
rdf:type
[Link]
RDF Schema - Classes

local:Person

rdfs:subClassOf
rdfs:Class
local:UniversityMember

rdf:type rdfs:subClassOf
Michel Gagnon
rdfs:subClassOf
local:Professor local:Student
local:name
rdf:type
[Link]
RDF Schema – Propriétés
● Toutes les propriétés ont pour type la classe
rdf:Property
● On peut établir des hiérarchies de propriétés, grâce
au prédicat rdfs:subPropertyOf
● On peut définir le domaine et l’image d’une propriété,
en utilisant les prédicats rdfs:domain et
rdfs:range, respectivement
● Les propriétés sont globales (on peut donc y ajouter
des informations n’importe où)
RDF Schema – Propriétés
local:worksAt
local:dgi Prof:MichelGagnon

local:worksAt
rdfs:domain rdfs:range

local:Person local:Organization
RDF Schema – Propriétés
local:worksAt
local:dgi Prof:MichelGagnon

local:worksAt
rdfs:domain rdfs:range

local:Person local:Organization

rdf:type rdf:type

rdfs:Class
RDF Schema – Propriétés
local:worksAt
local:dgi Prof:MichelGagnon

local:hasActivity

rdfs:subPropertyOf
local:worksAt
rdfs:domain rdfs:range

local:Person local:Organization

rdf:type rdf:type

rdfs:Class
RDF Schema – Propriétés
● En RDF tout est une ressource, même les
propriétés
● Ceci signifie qu’on peut ajouter des descriptions
aux propriétés:

[Link] local:worksAt
[Link]

local:inverseOf
local:worksAt local:isEmployerOf
Exercice – Dessinez le graphe :

@prefix xsd: <[Link] .


@prefix rdf: <[Link] .
@prefix poly: <http:/[Link]/vocab#> .

poly:x1 poly:p <[Link] ;


a poly:A.
Exercice – Dessinez le graphe :

@prefix poly: <[Link]


@prefix xsd: <[Link]
@prefix rdf: <[Link]

poly:x1 poly:p [];


a poly:A .
[] poly:q <[Link] .
Exercice – Dessinez le graphe :

@prefix poly: <[Link]


@prefix xsd: <[Link]
@prefix rdf: <[Link]

poly:x1 poly:p [ poly:w poly:x2 ];


a poly:A .
poly:x2 poly:q <[Link] .
Exercice – Représenter en RDF :
Le président des États-Unis a rencontré le
premier ministre du Canada à Toronto le 22 mai
2011.
Exercice – Représenter en RDF :
Le président des États-Unis a rencontré le
premier ministre du Canada à Toronto le 22 mai
2011.
"2011-05-22"¨¨xsd:date

ex:date

ex:participant ex:participant
ex:rencontre

ex:présidentDe ex:lieu ex:premierMinistreDe

dbpedia:United_States dbpedia:Toronto dbpedia:Canada


Inférence
Si on a
aaa p bbb .

On peut inférer
_:n1 p bbb .

Si aaa a déjà été remplacé par _:n1 auparavant.


Sinon, il faut créer un nouveau nœud vide.
Inférence
Si on a
aaa p bbb .

On peut inférer
aaa p _:n1 .

Si bbb a déjà été remplacé par _:n1 auparavant.


Sinon, il faut créer un nouveau nœud vide.
Inférence - Exemple
Soit
local:MichelGagnon local:worksAt local:dgi .
local:JeanStJean local:worksAt local:dgi .

On peut inférer
local:MichelGagnon local:worksAt _:n1 .
Inférence - Exemple
Soit
local:MichelGagnon local:worksAt local:dgi .
local:JeanStJean local:worksAt local:dgi .

On peut inférer
local:MichelGagnon local:worksAt _:n1 .
local:JeanStJean local:worksAt _:n1 .
Inférence - Exemple
Soit
local:MichelGagnon local:worksAt local:dgi .
local:JeanStJean local:worksAt local:dgi .

On peut inférer
local:MichelGagnon local:worksAt _:n1 .
local:JeanStJean local:worksAt _:n1 .
_:n2 local:worksAt _:n1 .
Inférence - Exemple
Soit
local:MichelGagnon local:worksAt local:dgi .
local:JeanStJean local:worksAt local:dgi .

On peut inférer
local:MichelGagnon local:worksAt _:n1 .
local:JeanStJean local:worksAt _:n1 .
_:n2 local:worksAt _:n1 .
_:n3 local:worksAt _:n1 .
Inférence - Exemple
Ce graphe
_:n2 local:worksAt _:n1 .
_:n3 local:worksAt _:n1 .

est équivalent à celui-ci


[] local:worksAt _:n1 .
[ ] local:worksAt _:n1 .

local:worksAt

local:worksAt
Inférence - Exemple
local:MichelGagnon local:worksAt

local :dgi
local:JeanStJean local:worksAt

local:MichelGagnon local:worksAt

local:JeanStJean local:worksAt

local:MichelGagnon local:worksAt local:MichelGagnon local:worksAt

local:JeanStJean local:worksAt local:JeanStJean local:worksAt


Inférence
Si on a
aaa p bbb .

On peut inférer
p rdf:type rdf:Property .
Inférence
Si on a
aaa p bbb .

On peut inférer
aaa rdf:type rdfs:Resource .
et
bbb rdf:type rdfs:Resource .
Inférence
Si on a
p rdfs:domain d .
aaa p bbb .

On peut inférer
aaa rdf:type d .
Inférence
Si on a
p rdfs:range d .
aaa p bbb .

On peut inférer
bbb rdf:type d .
Inférence - Exemple
Soit
local:marieAvec rdfs:domain local:Homme .
local:marieAvec rdfs:domain local:Femme .
local:Paul local:marieAvec local:Marie .

On peut inférer
local:Paul rdf:type local:Homme .
local:Paul rdf:type local:Femme .
Donc Paul est à la fois un homme et une femme
Inférence
Si on a
c1 rdfs:subClassOf c2 .
aaa rdf:type c1 .

On peut inférer
aaa rdf:type c2 .
Inférence - Exemple
Soit
local:Professeur rdfs:subClassOf local:Person .
local:Michel rdf:type local:Professeur .

On peut inférer
local:Michel rdf:type local:Person .
Inférence
Si on a
c1 rdfs:subClassOf c2 .
c2 rdfs:subclassOf c3 .

On peut inférer
c1 rdf:subClassOf c3 .
Inférence
Si on a
p1 rdfs:subPropertyOf p2 .
aaa p1 bbb .

On peut inférer
aaa p2 bbb .
Inférence - Exemple
Soit
local:aime rdfs:subPropertyOf
local:eprouveSentimentEnvers .
local:Paul rdf:aime local:Marie .

On peut inférer
local:Paul rdf:eprouveSentimentEnvers
local:Marie .
Inférence
Si on a
p1 rdfs:subPropertyOf p2 .
p2 rdfs:subPropertyOf p3 .

On peut inférer
p1 rdf:subPropertyOf p3 .
Exercice – Graphe RDF valide?

prof:MichelGagnon
Exercice – Graphe RDF valide?

prof:MichelGagnon

NON!
Exercice – Graphes équivalents?

ex:a local:prop
local:prop
ex:a

local:prop
Exercice – Graphes équivalents?

ex:a local:prop
local:prop
ex:a

local:prop

OUI!
Exercice – Graphes équivalents?

local:prop

local:prop local:prop
ex:a ex:a
Exercice – Graphes équivalents?

local:prop

local:prop local:prop
ex:a ex:a

NON!
Exercice – Graphes équivalents?

local:p1
ex:a ex:a
local:p1

local:p2
ex:b local:p2 ex:b
Exercice – Graphes équivalents?

local:p1
ex:a ex:a
local:p1

local:p2
ex:b local:p2 ex:b

NON!
Montrer qu'un animal a un sentiment
envers un autre animal
ex:detester rdfs:subPropertyOf ex:avoirSentimentEnvers .
ex:Chat rdfs:subClassOf ex:Animal .
ex:Tom rdf:type ex:Chat .
ex:Jerry rdf:type ex:Animal .
ex:Tom ex:detester ex:Jerry .
Monter qu'un animal a un sentiment
envers un autre animal
(1) ex:detester rdfs:subPropertyOf ex:avoirSentimentEnvers .
(2) ex:Chat rdfs:subClassOf ex:Animal .
(3) ex:Tom rdf:type ex:Chat .
(4) ex:Jerry rdf:type ex:Animal .
(5) ex:Tom ex:detester ex:Jerry .
(6) ex:Tom ex:avoirSentimentEnvers ex:Jerry . (1,5)
(7) ex:Tom rdf:type ex:Animal . (2,3)
(8) _:n1 ex:avoirSentimentEnvers ex:Jerry . (6)
(9) _:n1 ex:avoirSentimentEnvers _:n2 . (8)
(10) _:n1 rdf:type ex:Animal . (7)
(11) _:n2 rdf:type ex:Animal . (4)
Monter qu'un animal a un sentiment
envers un autre animal
(1) ex:detester rdfs:subPropertyOf ex:avoirSentimentEnvers .
(2) ex:Chat rdfs:subClassOf ex:Animal .
(3) ex:Tom rdf:type ex:Chat .
(4) ex:Jerry rdf:type ex:Animal .
(5) ex:Tom ex:detester ex:Jerry .
(6) ex:Tom ex:avoirSentimentEnvers ex:Jerry . (1,5)
(7) ex:Tom rdf:type ex:Animal . (2,3)
(8) _:n1 ex:avoirSentimentEnvers ex:Jerry . (6)
(9) _:n1 ex:avoirSentimentEnvers _:n2 . (8)
(10) _:n1 rdf:type ex:Animal . (7)
(11) _:n2 rdf:type ex:Animal . (4)

[ a ex:Animal ;
ex:avoirSentimentEnvers [ a ex:Animal ] ] .
Peut-on avoir une même
interprétation pour ces graphes?

local:p1 ex:a local:p1 ex:a

ex:toto

local:p2 ex:b local:p2 ex:c


ex:b
Peut-on avoir une même
interprétation pour ces graphes?

local:p1 ex:a local:p1 ex:a

ex:toto

local:p2 ex:b local:p2 ex:c


ex:b

OUI!
Il suffit que ex:b et ex:c désignent la même entité
Peut-on avoir une même
interprétation pour ces graphes?

local:p1 ex:a local:p2 ex:a

ex:toto ex:toto

local:p2 ex:b local:p1 ex:b


Peut-on avoir une même
interprétation pour ces graphes?

local:p1 ex:a local:p2 ex:a

ex:toto ex:toto

local:p2 ex:b local:p1 ex:b

OUI!
Soient T, A et B les entités désignées par ex:toto, ex:a et ex:b, respectivement.
Il suffit que les propriétés associées à local:p1 et local:p2 contiennent toutes les
deux les paires (T,A) et (T,B).

Vous aimerez peut-être aussi