RDF-S: Ressource Description Framework-
Schema
UP Web
1
Introduction
Graphe RDF vs ontologie
Introduction à RDFS
Classes en RDFS
Propriétés en RDFS
Activité
2
Introduction
Place de RDF-S dans la pile des standards du WS:
3
Graphe RDF vs Ontologie
Graphe
RDF
Book Person
Is a Is a
Ontologie Book Author Edward
orientalism Said
11$ Orientalism
4
Introduction à RDFS
• Recommandation du W3C depuis 2004
• Permet de définir des vocabulaires RDF, en nommant :
✓ des classes
✓ des relations de sous-classe
✓ des relations de sous-propriété
✓ le typage des prédicats : domaine, co-domaine, …
• Permet de définir une organisation hiérarchique des classes et des propriétés
• RDFS est donc un premier langage de définition d’ontologie
• RDFS a une expressivité réduite, permet des inférences simples (par rapport à d’autres
langage de définition d’ontologie comme OWL), mais trop d’expressivité n’est pas forcément
une qualité ...
➔ Ainsi RDFS étend RDF à la description d’ontologies (légères)
5
Classes en RDFS
• Ressources et classes :
✓ Les ressources peuvent être « rangées » dans des classes
• Déclarations :
✓ d’une ressource comme classe : propriété rdfs:Class
Livre
Rdf:type
Orientalism
6
Sous Classe en RDFS
• Une classe peut être sous-classe d’une ou plusieurs classes :
• On utilise la propriété rdfs:subClassOf pour exprimer qu’une classe est
sous-classe d’une autre classe
• Si C sous-classe de C’ alors toutes les instances de C sont instances
de C’
Document
Rdfs:subclassOf
Livre
Rdf:type
Orientalism
7
Définitions de classes et propriétés en RDFS
Par rapport à la définition de classes et propriétés d’un langage de POO comme Java :
• RDFS opte pour une approche centrée sur les propriétés :
✓ au lieu de définir des classes en donnant leurs propriétés, on définit des propriétés en
donnant leur domaine et co-domaine
• Exemple :
✓ en Java : « la classe eg:Document a un attribut eg:author de type eg:Person ».
✓ en RDFS : « la propriété eg:author a pour domaine la classe eg:Document, et pour co-
domaine la classe eg:Person »
• Une ressource peut être instance de plusieurs classes (plusieurs rdf :type pour une même
ressources)
8
Définitions de classes et propriétés en RDFS
Document Personne
Rdfs:subclassOf Rdfs:subclassOf
Livre Auteur
Rdf:type Rdf:type
:auteur
Orientalism Edward Said
• Domaine: Document
• Co-domaine ou range: Personne
9
RDFS vs RDF
Personne
Document
rdfs:subclassOf rdfs:subclassOf
Livre Auteur
Rdfs
Rdf:type rdf:type
Rdf
10
Code RDF
11
Code RDFS
<rdfs:class rdf:ID=‘Document’>
<rdfs:class rdf:ID=‘Personne’>
<rdfs:class rdf:ID=‘Livre’>
<rdfs:subclassOf rdf:ressource=‘Document’>
</rdfs:class>
<rdfs:class rdf:ID=‘Auteur’>
<rdfs:subclassOf rdf:ressource=‘Personne’>
</rdfs:class>
<rdf:Property rdf:ID=‘Title’>
<rdfs:domain rdf:resource=‘Document’/>
<rdfs:range rdf:resource=‘[Link]
</rdf:Property>
<rdf:Property rdf:ID=‘Creator’>
<rdfs:domain rdf:resource=‘Document’/>
<rdfs:range rdf:resource=‘Personne’/>
</rdf:Property>
<rdf:Property rdf:ID=‘Name’>
<rdfs:domain rdf:resource=‘Personne’/>
<rdfs:range rdf:resource=‘[Link]
</rdf:Property>
<rdf:Property rdf:ID=‘FirstName’>
<rdfs:domain rdf:resource=‘Personne’/>
<rdfs:range rdf:resource=‘[Link]
</rdf:Property>
<rdf:Property rdf:ID=‘Son’>
<rdfs:domain rdf:resource=‘Personne’/>
<rdfs:range rdf:resource=‘Personne’/> 12
</rdf:Property>
Classes RDF-RDFS
13
Propriétés RDF-RDFS
14
Introduction aux Bibliothèques Python pour le Web
Sémantique
✓ Le web sémantique ne se limite pas à la théorie. Pour construire des applications, nous
avons besoin d'outils pratiques.
✓ Python, grâce à sa simplicité et son riche écosystème, est un excellent choix.
✓ Nous allons nous concentrer sur deux bibliothèques essentielles :
❑ RDFLib : Pour une manipulation de bas niveau des graphes RDF.
❑ Owlready2 : Pour une approche orientée objet des ontologies OWL.
15
RDFLib
✓ Rôle : Une bibliothèque pour travailler directement avec des données RDF.
✓ Fonctionnalités :
❑ Parser (analyser) et sérialiser (enregistrer) dans de nombreux formats (Turtle, XML,
JSON-LD...).
❑ Créer, modifier et parcourir des graphes RDF.
❑ Exécuter des requêtes SPARQL.
✓ Idéal pour : La manipulation de triplets, la conversion de formats et un contrôle fin sur la
structure RDF.
16
RDFLib: Fonctions Clés
✓ Pour installer RDFLib il faut lancer la commande: pip install rdflib
✓ Créer un Graphe
✓ Charger des données
✓ Ajouter des triplets
17
RDFLib: Fonctions Clés
✓ Sérialiser le graphe
✓ La Fonction [Link]()
❑ Rôle : Elle permet de définir un raccourci (un préfixe) pour un long URI d'Espace de Noms
(Namespace).
❑ Syntaxe : [Link](préfixe, URI_espace_nom)
❑ Utilité : C'est essentiel pour la lisibilité lors de la sérialisation de votre graphe (par exemple en
Turtle ou RDF/XML). Au lieu d'écrire des URI complets partout, on utilise le préfixe.
18
RDFLib: Fonctions Clés
✓ La Classe URIRef
❑ Rôle : Représente une ressource dans le graphe RDF dont l'identité est une URI (Uniform
Resource Identifier) exacte. C'est l'équivalent d'un nœud nommé.
❑ Dans le Triplet (S, P, O) :
▪ Un URIRef peut être le Sujet (S).
▪ Un URIRef est toujours le Prédicat (P).
▪ Un URIRef peut être l'Objet (O).
❑ Types de Ressources : Cela représente des entités concrètes (une personne, une adresse,
un livre) ou des propriétés/relations.
19
RDFLib: Fonctions Clés
✓ La Classe URIRef
❑ Rôle : Représente une ressource dans le graphe RDF dont l'identité est une URI (Uniform
Resource Identifier) exacte. C'est l'équivalent d'un nœud nommé.
❑ Dans le Triplet (S, P, O) :
▪ Un URIRef peut être le Sujet (S).
▪ Un URIRef est toujours le Prédicat (P).
▪ Un URIRef peut être l'Objet (O).
❑ Types de Ressources : Cela représente des entités concrètes (une personne, une adresse,
un livre) ou des propriétés/relations.
20
RDFLib: Fonctions Clés
✓ La Fonction [Link]()
❑ Rôle : Ajoute un triplet (Sujet, Prédicat, Objet) au graphe RDF (g).
❑ Format du Triplet : Le triplet est passé à la fonction comme un tuple Python de trois éléments
: (S, P, O).
▪ S (Sujet) : Généralement un URIRef (ou BNode).
▪ P (Prédicat) : Toujours un URIRef.
▪ O (Objet) : Un URIRef, un BNode, ou un Literal.
✓ Utilisation de Literal()
❑ Rôle : Représente la valeur de donnée (Objet) d'une propriété (ex: un nom, une date, un
nombre).
❑ Types de Données : Literal gère automatiquement le typage des données Python (chaîne,
entier, flottant, booléen, etc.).
21
Activité
Créer un programme Python utilisant RDFLib pour modéliser les connaissances suivantes en
RDF/RDFS et afficher le graphe résultant au format Turtle.
Connaissances à Modéliser :
✓ Informations individuelles (RDF) :
✓ Pierre a 30 ans.
✓ Pierre connaît Marie.
✓ Informations de typage (RDF/RDFS) :
✓ Pierre est un Étudiant.
✓ Marie est une Étudiante.
✓ Informations de hiérarchie (RDFS) :
La classe Étudiant est une sous-classe (subClassOf) de la classe Adulte.
Consignes de Codage :
✓ Initialisation : Créer un nouveau graphe RDFLib et définir un espace de noms (Namespace)
personnalisé pour votre vocabulaire (par exemple, ex:) ainsi que les préfixes standards rdf: et
rdfs:.
✓ Modélisation : Utiliser les fonctions URIRef(), Literal(), [Link], et [Link] pour
insérer tous les triplets.
✓ Affichage : Afficher le contenu complet du graphe résultant au format Turtle (ttl).
22
Merci de votre attention
23