Vous êtes sur la page 1sur 364

ÉCOLE DES SCIENCES DE L’INFORMATION

WEB SÉMANTIQUE
EL MOUKHI NAWFAL

Année universitaire 2022-2023


WEB SÉMANTIQUE : LES SEPT CHAPITRES DU COURS
Chapitre 1. Introduction au web sémantique
Chapitre 2. XML
Chapitre 3. Schémas XML
Chapitre 4. Famille XML
Chapitre 5. RDF
Chapitre 6. SPARQL
Chapitre 7. RDFS et le langage OWL

2
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE

« regarder le passé pour comprendre l’avenir »

3
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE
1. Brève histoire du Web
2. Principes architecturaux
3. Standards et déploiement
4. Séparation du fond et de la forme
5. De la page à la ressource
6. Principes des données liées
7. La pile de standardisation

4
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE
1. Brève histoire du Web
2. Principes architecturaux
3. Standards et déploiement
4. Séparation du fond et de la forme
5. De la page à la ressource
6. Principes des données liées
7. La pile de standardisation

5
1. BRÈVE HISTOIRE DU WEB

Déléguer la gestion des liens

Vannevar BUSH, 1890-1974

6
1. BRÈVE HISTOIRE DU WEB

Déléguer la gestion des liens

• Vannevar BUSH, 1890-1974


Memex, Life Magazine, 10 septembre 1945
• Memex
- externaliser les associations
- assister la (re)mémorisation
7
1. BRÈVE HISTOIRE DU WEB

Relier les documents numériques

Ted NELSON

8
1. BRÈVE HISTOIRE DU WEB

Relier les documents numériques

• Ted NELSON
• Hypertexte
• Hypermédia
Complex information processing: a file structure for the complex,
the changing and the indeterminate, T. H. Nelson, ACM, 1965
9
1. BRÈVE HISTOIRE DU WEB

Lier à travers le réseau

Tim Berners-Lee

10
1. BRÈVE HISTOIRE DU WEB

Lier à travers le réseau

• Tim Berners-Lee
• Identifier et lier sur
Information Management: A Proposal
Tim Berners-Lee, CERN, March 1989, May 1990 les réseaux
11
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE
1. Brève histoire du Web
2. Principes architecturaux
3. Standards et déploiement
4. Séparation du fond et de la forme
5. De la page à la ressource
6. Principes des données liées
7. La pile de standardisation

12
2. PRINCIPES ARCHITECTURAUX

Les principes du web

13
2. PRINCIPES ARCHITECTURAUX

Les principes du web

14
2. PRINCIPES ARCHITECTURAUX

Les principes du web

15
2. PRINCIPES ARCHITECTURAUX

Les trois composants de l’architecture web

1. Identification & adressage (URL)


ex. http://www.esi.ac.ma
2. Communication / protocole (HTTP)
GET /centre/rabat HTTP/1.1
Host: www.esi.ac.ma
3. Langage de représentation (HTML)
Nawfal travaille chez
<a href="http://esi.ac.ma">esi</a>
16
2. PRINCIPES ARCHITECTURAUX

Les trois composants de l’architecture web

17
2. PRINCIPES ARCHITECTURAUX

au-delà des représentations documentaires

18
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE
1. Brève histoire du Web
2. Principes architecturaux
3. Standards et déploiement
4. Séparation du fond et de la forme
5. De la page à la ressource
6. Principes des données liées
7. La pile de standardisation

19
3. STANDARDS ET DÉPLOIEMENT

Nombre des serveurs web chaque année

20
3. STANDARDS ET DÉPLOIEMENT

La guerre des navigateurs

21
3. STANDARDS ET DÉPLOIEMENT

1994 création du World Wide Web Consortium

Harmoniser les évolutions du web

22
3. STANDARDS ET DÉPLOIEMENT

statuts des standards

recommendation
proposed recommendation
candidate recommendation
last call
working draft

23
3. STANDARDS ET DÉPLOIEMENT

statuts des standards

recommendation
proposed recommendation
candidate recommendation
last call
working draft

24
3. STANDARDS ET DÉPLOIEMENT

statuts des standards

recommendation
proposed recommendation
candidate recommendation
last call
working draft

25
3. STANDARDS ET DÉPLOIEMENT

statuts des standards

recommendation
proposed recommendation
candidate recommendation
last call
working draft

26
3. STANDARDS ET DÉPLOIEMENT

statuts des standards

recommendation
proposed recommendation
candidate recommendation
last call
working draft

27
3. STANDARDS ET DÉPLOIEMENT

au W3C, tout n’est pas un standard

Note
Group report
Member submission

28
3. STANDARDS ET DÉPLOIEMENT

différentes activités de standardisation (2008)

W3C©
29
3. STANDARDS ET DÉPLOIEMENT

différentes représentations d’informations

W3C©
30
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE
1. Brève histoire du Web
2. Principes architecturaux
3. Standards et déploiement
4. Séparation du fond et de la forme
5. De la page à la ressource
6. Principes des données liées
7. La pile de standardisation

31
4. SÉPARATION DU FOND ET DE LA FORME

Cascading Style Sheets (CSS)


CSS Zen Garden: une seule « page », un seul contenu, mais une
collection de présentations.

32
4. SÉPARATION DU FOND ET DE LA FORME

proposer ses propres langages (XML)

structurer des données famille ouverte de langages


en utilisant des balises langage composable
dans un format textuel dans un format textuel

33
4. SÉPARATION DU FOND ET DE LA FORME

Explosion du nombre de langages

MusicML MathML SVG (graphique)


OpenOffice (bureautique)
XACML (accès) FpML (finance)
SMIL (multimédia) CML (chimie)
GPX (GPS) WSDL (Services)
NewsML XHTML …

34
4. SÉPARATION DU FOND ET DE LA FORME

Multiplication des outils et standards attenants

• Parseurs (DOM, SAX) • XQuery


• Schémas XML • XSL
• Xpath • XProc
• Xpointer
• XLink

35
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE
1. Brève histoire du Web
2. Principes architecturaux
3. Standards et déploiement
4. Séparation du fond et de la forme
5. De la page à la ressource
6. Principes des données liées
7. La pile de standardisation

36
5. DE LA PAGE À LA RESSOURCE

localiser une page (URL)

37
5. DE LA PAGE À LA RESSOURCE

Multiplication des références au Web

38
5. DE LA PAGE À LA RESSOURCE

Changement de statut de la référence

39
5. DE LA PAGE À LA RESSOURCE

Le web est un réseau de ressources

40
5. DE LA PAGE À LA RESSOURCE

La notion de ressource
Définition :
On appelle ressource tout ce qui peut être identifié par un URI.
http://nawfal.info/objets#mavoiture
ex. une page, une personne, une voiture, un chien, une idée, un pays,
un produit, un service….

41
5. DE LA PAGE À LA RESSOURCE

Au-delà des représentations documentaires

42
5. DE LA PAGE À LA RESSOURCE

La notion d’espace de nommage (namespace)


Définition :
Espace abstrait rassemblant des noms d’un même ensemble.
http://esi.ac.ma/sujets#compilation
ex. un dictionnaire, un index de bibliothèque, un lexique, un standard,
un référentiel métier…

43
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE
1. Brève histoire du Web
2. Principes architecturaux
3. Standards et déploiement
4. Séparation du fond et de la forme
5. De la page à la ressource
6. Principes des données liées
7. La pile de standardisation

44
6. PRINCIPES DES DONNÉES LIÉES

Ratatouille : ou la recette des données liées

45
6. PRINCIPES DES DONNÉES LIÉES

Datatouille : ou la recette des données liées

46
6. PRINCIPES DES DONNÉES LIÉES

Principes techniques: le web appliqué aux données

1. Utiliser des URI HTTP (URL) pour que l’on puisse les suivre
ex. http://chercheurs.ma/nelmoukhi
2. Lorsqu’un URI est suivi renvoyer des données sur ce qu’il
représente (HTTP)
3. Inclure dans ces données des liens vers d’autres données (Web)

47
6. PRINCIPES DES DONNÉES LIÉES

Principes techniques: le web appliqué aux données

48
6. PRINCIPES DES DONNÉES LIÉES

Principes techniques: le web appliqué aux données

49
6. PRINCIPES DES DONNÉES LIÉES

Principes techniques: le web appliqué aux données

50
6. PRINCIPES DES DONNÉES LIÉES

Principes techniques: le web appliqué aux données

51
6. PRINCIPES DES DONNÉES LIÉES

Importance du nom de domaine


http://ns.esi.ma/nawfal.elmoukhi#moi

ma

esi

ns

nawfal.elmoukhi#moi
52
6. PRINCIPES DES DONNÉES LIÉES

« linked open data » : l’explosion des données ouvertes


et liées

53
CHAPITRE 1. INTRODUCTION AU WEB SÉMANTIQUE
1. Brève histoire du Web
2. Principes architecturaux
3. Standards et déploiement
4. Séparation du fond et de la forme
5. De la page à la ressource
6. Principes des données liées
7. La pile de standardisation

54
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


55
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


56
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


57
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


58
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


59
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


60
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


61
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


62
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


63
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


64
7. LA PILE DE STANDARDISATION

Pile des standards du Web de données W3C®


65
WEB SÉMANTIQUE : LES SEPT CHAPITRES DU COURS
Chapitre 1. Introduction au web sémantique
Chapitre 2. XML
Chapitre 3. Schémas XML
Chapitre 4. Famille XML
Chapitre 5. RDF
Chapitre 6. SPARQL
Chapitre 7. RDFS et le langage OWL

66
CHAPITRE 2. XML

67
CHAPITRE 2. XML
1. Introduction
2. Les avantages de XML
3. Structure de base d’un fichier XML

68
CHAPITRE 2. XML
1. Introduction
2. Les avantages de XML
3. Structure de base d’un fichier XML

69
1. INTRODUCTION

eXtensible Markup Language est une spécification proposée par le


W3C (World Wide WConsortium) en 1998 et qui s’est imposé comme
un standard incontournable . De plus, le langage XML est format
général de documents orienté texte. C’est, aussi, un sous-ensemble de
SGML (Standard Generalized Markup Language).

70
CHAPITRE 2. XML
1. Introduction
2. Les avantages de XML
3. Structure de base d’un fichier XML

71
2. LES AVANTAGES DE XML

• Ce langage utilise un langage humain et non informatique. Donc,


c’est un langage lisible et compréhensible;
• Il est extensible : permet de définir ses propres balises et ses
propres attributs;
• Un document XML peut être validé par des règles strictes, contenues
par des DTD ou des Schémas, décrivant sa structure et la
hiérarchisation de ses données;
• On a une séparation stricte entre contenu et présentation. En effet,
le traitement de la mise en forme est rigoureusement séparé de la
structure du document XML;
72
2. LES AVANTAGES DE XML

• Il est un format standardisé ouvert ne nécessitant aucune licence,


intégralement basé texte et qui peut être associé à n’importe quel
jeu de caractères;
• Langage très utilisé soit pour le stockage de document, pour
l’échange de données entre applications, comme fichier de
configuration
• ….

73
CHAPITRE 2. XML
1. Introduction
2. Les avantages de XML
3. Structure de base d’un fichier XML

74
3. STRUCTURE DE BASE D’UN FICHIER XML

Pour qu’un document XML soir correct, il doit d’abord être bien formé
et, ensuite, être valide. La première contrainte est de nature
syntaxique (concerne les règles d’écriture) et la seconde contrainte est
de nature structurelle (le document doit respecter le modèle
d’organisation). Un tel document est généralement contenu dans un
fichier texte dont l’extension est ‘.xml’.

75
3. STRUCTURE DE BASE D’UN FICHIER XML

En d’autres termes, le document se découpe en deux parties


consécutives qui sont le prologue et le corps. Les commentaires et les
instructions de traitement sont ensuite librement insérés avant, après et
à l’intérieur du prologue et du corps. De façon générale, la structure
globale d’un document est la suivante :

76
3. STRUCTURE DE BASE D’UN FICHIER XML

Prologue
Le prologue contient deux déclarations facultatives mais fortement
conseillées (comme les commentaires et des instructions de traitement :
voir en bas du cours). Alors, la ligne d’introduction du document
(prologue) est :

<?xml version=”1.0″ encoding=”iso-8859-1″ standalone=”no”?>

77
3. STRUCTURE DE BASE D’UN FICHIER XML

Prologue
Cette ligne permet donc d’indiquer la version XML utilisée, le jeu de
caractères utilisé et l’autonomie du document tel que :
• La version XML : soit 1.0 ou 1.1, sachant que la très grande
majorité des documents sont en version 1.0 et que la version 1.1
est assez décriée;
• L’Encoding : Le jeu de caractères employé (UTF-8 est l’encoding
pris par défaut).

78
3. STRUCTURE DE BASE D’UN FICHIER XML

Prologue

79
3. STRUCTURE DE BASE D’UN FICHIER XML

Prologue

• standalone : désigne l’indépendance du document, au sens où il


n’existe aucun élément externe qui puisse altérer la forme finale du
document XML fourni à l’application par le parseur (références
d’entités, valeurs par défaut…). Ce champ prend les valeurs yes
ou no. Dans la pratique, il n’a pas grand intérêt et vous pouvez
l’ignorer. Si l’attribut standalone est omis, c’est la valeur no qui est
prise par défaut.

80
3. STRUCTURE DE BASE D’UN FICHIER XML

Prologue

Remarques :
➢ Les attributs encoding et standalone sont facultatifs;
➢ Le prologue n’est pas obligatoire et, dans ce cas, le comportement
par défaut (version 1.0 et encoding UTF-8) est utilisé.

81
3. STRUCTURE DE BASE D’UN FICHIER XML

L’élément racine
• L’élément racine est obligatoire. Cet élément est une balise unique
dans le document. Elle encadrera le contenu de votre document;
• Attention : N’oubliez pas que XML est sensible à la casse, par
conséquent <tag> et <Tag> n’ont pas la même signification.
• Pour notre exemple, nous nommerons l’élément racine librairie :
<?xml version=”1.0″ encoding=”iso-8859-1″?>
<librairie>

</librairie>
82
3. STRUCTURE DE BASE D’UN FICHIER XML

Le contenu
Le document XML est organisé sous forme d’éléments, dont l’un est
l’élément racine. Un élément est formé d’une balise ouvrante, d’un
contenu et de la balise fermante correspondante.

83
3. STRUCTURE DE BASE D’UN FICHIER XML

Le contenu
Tous les éléments doivent avoir une balise d’ouverture et une balise de
fermeture sauf l’élément vide. Aussi, On peut avoir des éléments
imbriqués (attention aux fermetures) , des éléments ayant des attributs
et d’autres cas qu’on va traiter au fur et à mesure dans ce cours.
Exemple 1 :

84
3. STRUCTURE DE BASE D’UN FICHIER XML

Le contenu
Exemple 2 : document bien formé

85
3. STRUCTURE DE BASE D’UN FICHIER XML

Le contenu
Remarque : Certains caractères ayant une signification particulière
dans la grammaire du XML restent interdits : < , > , &. Pour ces
caractères comme pour les caractères pouvant poser des problèmes à
l’affichage, utilisez les caractères de masquages (d’échappement) soit
sous forme d’entités nommées, soit sous forme d’entités codées.

86
3. STRUCTURE DE BASE D’UN FICHIER XML

Les commentaires

Les commentaires sont introduits dans un document XML comme dans


un document HTML : <!-- commentaires -->

87
3. STRUCTURE DE BASE D’UN FICHIER XML

Instructions de traitement
Elles permettent de fournir des informations supplémentaires sur le
document aux analyseurs syntaxiques. Premièrement, une instruction
de traitement commence par <? et se termine par ?>. La plus utilisée
de ces instructions est celle constituant le prologue d’un document XML:
<?xml version=”1.0″?>
l’inclusion d’une référence à une feuille de style utilise aussi ce type
d’instruction.

88
3. STRUCTURE DE BASE D’UN FICHIER XML

CDATA
Cette section permet d’inclure des données textuelles, des exemples
de code…, dans un document XML sans qu’il soit nécessaire de
substituer les caractères spéciaux par des caractères de masquage.
La mise en oeuvre d’une section CDATA s’écrit ainsi :

Remarque : Les sections CDATA ne peuvent pas être imbriquées.

89
WEB SÉMANTIQUE : LES SEPT CHAPITRES DU COURS
Chapitre 1. Introduction au web sémantique
Chapitre 2. XML
Chapitre 3. Schémas XML
Chapitre 4. Famille XML
Chapitre 5. RDF
Chapitre 6. SPARQL
Chapitre 7. RDFS et le langage OWL

90
CHAPITRE 03. SCHÉMAS XML

1. Validation des documents XML


2. DTD
3. XSD

91
CHAPITRE 03. SCHÉMAS XML

1. Validation des documents XML


2. DTD
3. XSD

92
1. VALIDATION DES DOCUMENTS XML

• Un document XML doit être bien formé, c’est-à-dire, on peut le


parser pour en extraire l’arbre correspondant ;
• Mais un document XML n’est en général pas un arbre arbitraire: il
encode une donnée structurée d’un langage particulier.
• Exemple : un arbre HTML commence obligatoirement par une
racine <html> qui a deux fils (et uniquement deux fils) <head> et
<body> : Il s’agit de la grammaire (ou du schéma) du langage
XHTML.

93
1. VALIDATION DES DOCUMENTS XML

Un schéma décrit donc :


1. Un vocabulaire: ensemble de noms de balises et d’attributs ;
2. Une structure: comment les choses sont agencées les unes aux
autres (hiérarchisation des données).

94
1. VALIDATION DES DOCUMENTS XML

Pour décrire la structure d’un document XML, on peut utiliser les DTDs
(Document Type Definitions) ou les Schémas xml (XSD)
95
CHAPITRE 03. SCHÉMAS XML

1. Validation des documents XML


2. DTD
3. XSD

96
2. DTD

• Une DTD (Document Type Definition) est une forme de grammaire


relativement ancienne ;
• La syntaxe d’une DTD n’est pas à base de balise mais à base
d’instructions, selon la syntaxe <!INSTRUCTION…> ;
• Une DTD peut être interne ou externe au document XML.

97
2. DTD

Déclaration d’une DTD externe

• Dans chaque document XML, une référence vers la DTD externe est
insérée par l’instruction d’en-tête DOCTYPE ;
• Exemples :
➢ Fichier local :

98
2. DTD

Déclaration d’une DTD externe

• Exemples :
➢ url :

99
2. DTD

Déclaration d’une DTD interne


• Syntaxe : <!DOCTYPE root-element [ declarations ]>
• Exemple : document xml avec dtd interne

100
2. DTD

Structure d’une DTD


• Une DTD permet essentiellement de spécifier les noms, les contenus
et les attributs des éléments qui composent le fichier XML visé.
• Un élément (balise en xml) est exprimé selon la syntaxe suivante :
<!ELEMENT nomElément contenu > Avec :
➢ nomElément : est le nom de l’élément;
➢ Contenu : indique le type de données ou les éléments qui
doivent ou peuvent être imbriqués.

101
2. DTD

Structure d’une DTD

Le contenu peut être un :


• Contenu textuel : #PCDATA (Parsed Character Data) . Exemple :
<!ELEMENT PRENOM (#PCDATA)>
• Vide : Empty. Exemple : <!ELEMENT BR EMPTY>
• Aléatoire : ANY (l’élément peut contenir n’importe quel élément
présent dans la DTD). Exemple: <!ELEMENT adresse ANY>

102
2. DTD

Structure d’une DTD

• Séquence d’éléments : suite de noms d’éléments séparés par des


virgules. L’ordre doit être respecté. Exemple : <!ELEMENT
NOMComplet (NOM,PRENOM+)>
• Choix : suite de noms d’éléments séparés par des barres verticales
“|” : Exemple : <!ELEMENT NOMComplet (NOM|PRENOM+)>
• Mélange : Contenu variable <!ELEMENT tes (NOM|#PCDATA)>

103
2. DTD

Structure d’une DTD

Remarques : indicateurs d’occurrences

Les contenus peuvent avoir l’un des indicateurs d’occurrences suivants :


• “*” : Une occurrence quelconque (0 ou plus) ;
• “+” : Une occurrence quelconque (1 ou plus) ;
• “?” : 0 ou 1 occurrence.

104
2. DTD

Attributs

Les éléments peuvent avoir des attributs, alors la DTD doit inclure la
déclaration de ces attributs via l’instruction ATTLIST selon la syntaxe
suivante :
<!ATTLIST nomElement nom TYPE OBLIGATION VALEUR_PAR_DEFAUT>

105
2. DTD

Attributs
1. TYPE peut être :
• CDATA : du texte (Character Data) ;
• ID : un identifiant unique (caractères et nombres) ;
• IDREF : une référence vers un ID ;
• IDREFS : une liste de références vers des ID (séparés par un blanc) ;
• NMTOKEN : un mot (contient : des lettres, des chiffres, un point [ . ] , un tiret [ –
], un trait de soulignement [ _ ] et un deux-points [ : ] ) ;
• NMTOKENS : une liste de mots (séparation par un blanc) ;
• Une énumération de valeurs : chaque valeur est séparée par le caractère |.
106
2. DTD

Attributs

2. OBLIGATION peut être :


• #REQUIRED : obligatoire ;
• #IMPLIED : optionnel ;
• #FIXED valeur : valeur imposée par défaut et non modifiable par une valeur
effective.

3. VALEUR_PAR_DEFAUT : la valeur par défaut

107
2. DTD

Attributs
Exemple 1:

<!ATTLIST chapitre titre CDATA #REQUIRED auteur CDATA #IMPLIED>

Explication :

L’élément chapitre possède un attribut titre obligatoire et un attribut


auteur optionnel.

108
2. DTD

Attributs
Exemple 2:

<!ATTLIST crayon couleur (rouge|vert|bleu) “bleu”>

Explication :

L’élément crayon possède un attribut couleur dont les valeurs font


partie de l’ensemble rouge, vert, bleu.

109
2. DTD

Attributs
Exemple 3:

<!ATTLIST produit code ID>

Explication :

chaque produit doit avoir un code unique.

110
2. DTD

Entités

L’entité associe un nom à une valeur. Ce nom est employé dans le


document XML comme une forme d’alias ou de raccourci vers la valeur
suivant la syntaxe &nom;. La valeur d’une entité peut être interne ou
externe.

111
2. DTD

Entité interne

• Dans la forme interne la syntaxe pour déclarer une entité est


simplement la suivante : <!ENTITY nom “VALEUR”>.

• Exemple :
➢ Dans le DTD, on définit l’entité : <!ENTITY dgdcc “Département
Génie des Données, des Contenus et des Connaissances”>
➢ Dans XML, on utilise l’entité déjà définie : <PARA>Les
formateurs de la &dgdcc; vous souhaiter bon courage dans les
exams</PARA>
112
2. DTD

Entité externe

Dans la forme externe, on se retrouve avec le même principe qu’avec


l’instruction DOCTYPE en tête du document XML assurant le lien vers
une DTD. Les mots-clés SYSTEM et PUBLIC servent donc à réaliser un
lien vers une valeur présente dans un fichier.

113
2. DTD

Entité externe

Exemple :

114
2. DTD

Entité paramétrique

• Les entités ne s’appliquent pas uniquement au document XML. Elles


peuvent également servir à la réalisation de la DTD pour limiter
les répétitions de blocs de définition (par exemple, un attribut
présent dans plusieurs éléments).
• Cette forme d’entité est appelée entité paramétrique et doit être
déclarée suivant la syntaxe : <!ENTITY % nom “VALEUR”>.
• L’instruction %nom; sert à utiliser une entité paramétrique dans la
DTD.
115
2. DTD

Entité paramétrique

Exemple :

• Définition de l’entité :
<!ENTITY % type_defaut “CDATA #REQUIRED “>
• Utilisation de l’entité :
<!ATTLIST chapitre titre %type_defaut; >.

116
2. DTD

Les limites du DTD


• Les DTD ne sont pas au format XML : Cela signifie qu’il est
nécessaire d’utiliser un outil spécial pour “parser” un tel fichier,
différent de celui utilisé pour l’édition du fichier XML ;
• Les DTD ne supportent pas les “espaces de nom” : En pratique,
cela implique qu’il n’est pas possible, dans un fichier XML défini
par une DTD, d’importer des définitions de balises définies par
ailleurs ;
• Le “typage” des données est extrêmement limité : que du
#PCDATA
117
CHAPITRE 03. SCHÉMAS XML

1. Validation des documents XML


2. DTD
3. XSD

118
3. XSD

Les schémas XML (XSD) permettent comme les DTD de définir des modèles de
documents. Il est ensuite possible de vérifier qu’un document donné respecte un
schéma.
119
3. XSD

Avantage des schémas xml :


• Syntaxe XML ;
• Un grand nombre de types de données de base : booléens,
entiers, intervalles de temps, etc.
• Il est possible de créer de nouveaux types : par ajout de
contraintes sur un type existant, ….
• La notion d’héritage : Les éléments peuvent hériter du contenu et
des attributs d’un autre élément
• Une grande facilité de conception modulaire de schémas
120
3. XSD
Fichier XML DTD

121
3. XSD
XSD équivalent

122
3. XSD

Syntaxe XSD et référencement

Un schéma xml est un fichier xml avec extension « .xsd ». Comme tout
document xml, un schéma xml commence par le prologue, puis
l’élément racine.

123
3. XSD

Syntaxe XSD et référencement


Syntaxe :

Avec : xmlns: xsd = “http://www.w3.org/2001/XMLSchema” : Indique que les


éléments et types de données utilisés dans le schéma proviennent de l’espace de
noms”http://www.w3.org/2001/XMLSchema”. Il spécifie également que les
éléments et les types de données provenant de l’espace de noms
“http://www.w3.org/2001/XMLSchema” doivent être préfixés par « xsd: »
124
3. XSD

Syntaxe XSD et référencement

Le référencement d’un schéma XML se fait au niveau de l’élément racine du fichier


XML grâce à l’utilisation de 2 attributs :

125
3. XSD

Éléments (Déclaration)
• Syntaxe :
<xsd:element name=”nom_element” type=”type_element”>
• Exemples :
<xsd:element name=”date-naissance” type=”xsd:date”>
<xsd:element name=”nombre-enfants” type=”xsd:integer”>
• Remarque : Valeur par défaut/Valeur fixe : on peut ajouter l’attribut default
pour spécifier la valeur par défaut , ou l’attribut fixed pour spécifier une valeur
fixe égale à “valeur” Les éléments peuvent être de type simple ou complexe.
126
3. XSD

Éléments de type simple

• Un élément simple est un élément XML qui ne peut contenir que du


texte. Il ne peut contenir aucun autre élément ou attribut.

• Remarque : Le texte peut être de plusieurs types différents. Il peut


s’agir de l’un des types prédéfinis (booléen, chaîne, date, etc.), ou il
peut s’agir d’un type personnalisé qu’on peut définir nous-même
(restrictions ,union ou list )

127
3. XSD

Les types simples prédéfinis

• Numériques : xsd:boolean, xsd:int ( 32 bits), xsd:short (16 bits), xsd:byte (8


bits), xsd:long (64 bits), xsd:integer (entier sans limite de précision),
xsd:positiveInteger ( entier strictement positif sans limite de précision),
xsd:negativeInteger (entier strictement négatif sans limite de précision),
xsd:float (32 bits conforme à la norme IEEE), xsd:double (64 bits conforme à la
norme IEEE), xsd:decimal ( Nombre décimal sans limite de précision).
• Chaines de caractères : xsd:string, xsd:normalizedString ( pas de : tabulation
/ de saut de ligne / de retour chariot) , xsd:Name ( Nom XML), xsd:language
(Code de langue comme fr, en-GB), xsd:anyURI (comme
http://www.istanticsafi.ma/~cours/)
128
3. XSD

Les types simples prédéfinis


• Date & Heures : xsd:time format hh:mm:ss[.sss][TZ]. La partie .sss des secondes
est optionnelle. Tous les autres champs sont obligatoires. L’heure peut être suivie
d’un décalage horaire TZ qui est soit Z pour le temps universel soit un décalage
commençant par + ou – comme -07:00.
• xsd:date : Date au format YYYY-MM-DD. Tous les champs sont obligatoires.
xsd:dateTime : Date et heure au format YYYY-MM-DDThh:mm:ss, Par exemple
2008-01-16T14:07:23. Tous les champs sont obligatoires
• Types Hérités des DTD : xsd:ID (identifiant un élément), xsd:IDREF ( référence à
un élément par son identifiant), xsd:IDREFS , xsd:ENTITY(permet de faire
référence à une entité le plussouvent non XML et déclaré dans des fichiers DTD),
xsd:ENTITIES : liste d’entités externes non XML séparés par des espaces 129
3. XSD

Éléments de type complexe

Un élément est dit de type complexe s’il contient autres éléments (enfants) ou/et a
des attributs. Il existe quatre types d’éléments complexes:
• éléments vides
• éléments qui ne contiennent que d’autres éléments
• éléments contenant uniquement du texte
• éléments contenant à la fois d’autres éléments et du texte

130
3. XSD

Éléments de type complexe


Chacun de ces éléments peut également contenir des attributs :

131
3. XSD

Éléments de type complexe

Pour définir un type complexe, on peut utiliser la balise complexType :

132
3. XSD

Éléments de type complexe


Le type peut être global et donc associé à un nom (Méthode 2) ou bien être local à
un élément (Méthode 1). Exemple :

133
3. XSD

Éléments de type complexe

On peut contrôler COMMENT les éléments doivent être utilisés dans les
documents avec des indicateurs :

134
3. XSD

Indicateurs d’ordre
• Opérateurs de séquences : xsd:sequence définit un nouveau type formé d’une
suite des éléments en séquence ordonnée. C’est l’équivalent de l’opérateur ‘ , ‘
des DTD.
DTD XSD

135
3. XSD

Indicateurs d’ordre
• Opérateurs de choix : xsd:choice définit un nouveau type formé d’une suite des
éléments énumères de choix. C’est l’équivalent de l’opérateur ‘ | ‘ des DTD.
DTD XSD

136
3. XSD

Indicateurs d’ordre

• Opérateurs d’ensemble : Il définit un nouveau type dont chacun des éléments


doit apparaître une fois dans un ordre quelconque.

137
3. XSD

Indicateurs d’occurrence
• Les attributs minOccurs et maxOccurs permettent de préciser le nombre
minimal ou maximal d’occurrences d’un élément ou d’un groupe. Ils sont
l’équivalent des opérateurs ?, * et + des DTD.
• L’attribut minOccurs prend un entier comme valeur. L’attribut maxOccurs prend
un entier ou la chaîne unbounded comme valeur pour indiquer qu’il n’y a pas de
nombre maximal. La valeur par défaut de ces deux attributs est la valeur 1.
• Exemple :
soit en DTD : <!ELEMENT elem (elem1, elem2?, elem3*) > .
Donner son equivalent en xsd

138
3. XSD

Indicateurs de groupes
Il est possible de nommer des groupes d’éléments et des groupes d’attributs afin
de pouvoir les réutiliser. Ce mécanisme aide à structurer un schéma complexe et
vise à obtenir une meilleure modularité dans l’écriture des schémas. Les groupes
d’éléments et d’attributs sont respectivement définis par les éléments xsd:group et
xsd:attributeGroup.
• xsd:group : permet de définir un groupe d’éléments dont le nom est donné par
l’attribut name. Le contenu de l’élément xsd:group est un fragment de type
nécessairement inclus dans un élément xsd:sequence, xsd:choice ou xsd:all.
L’utilisation d’un groupe est équivalente à l’insertion de son contenu. L’intérêt d’un
groupe est de pouvoir l’utiliser à plusieurs reprises et de factoriser ainsi les
parties communes à plusieurs types
139
3. XSD

Indicateurs de groupes
Exemple : Donner un document xml valide selon ce schéma

140
3. XSD

Indicateurs de groupes
• xsd:attributeGroup : permet de définir un groupe d’attributs dont le nom est
donné par l’attribut name. Le contenu de l’élément xsd:attributeGroup est
constitué de déclarations d’attributs introduites par l’élément xsd:attribute.
Exemple :

141
3. XSD

Résumé Types Complexes

Un type complexe peut être construit explicitement ou être dérivé d’un autre type
par extension ou restriction.

142
3. XSD

Attributs (Définition et déclaration)

• L’attribut, ne contenant que du texte, ainsi il est de type simple. L’attribut peut
être global et donc réutilisable au sein de plusieurs définitions de type
complexe.

• Exemple :

143
3. XSD

Attributs (Définition et déclaration)

• Remarque 1 Attributs et Options : Les attributs sont facultatifs par défaut. Pour
spécifier que l’attribut est obligatoire, utilisons l’attribut “use“: l’attribut use de
xsd:attribute peut prendre la valeur optional ; required ou prohibited.
• Remarque 2 Attributs et Valeurs par défaut : Les attributs peuvent avoir une
valeur par défaut (default) OU une valeur fixe spécifiée (fixed). Une valeur par
défaut est automatiquement attribuée à l’attribut lorsqu’aucune autre valeur
n’est spécifiée. Une valeur fixe est également automatiquement attribuée à
l’attribut et nous ne pouvons pas spécifier une autre valeur :

144
3. XSD

Création d’un nouveau type simple


On peut définir un nouveau type simple à l’aide de la syntaxe suivante :

145
3. XSD

Opérateur d’union
• L’opérateur xsd:union définit un nouveau type simple dont les valeurs sont celles
des types listés dans l’attribut memberTypes.
• Exemple :

146
3. XSD

Opérateur de liste
• L’opérateur xsd:list définit un nouveau type simple dont les valeurs sont les listes
de valeurs du type simple donné par l’attribut itemType. Il s’agit uniquement de
listes de valeurs séparées par des espaces. Ces listes sont souvent utilisées
comme valeurs d’attributs.
• Exemple :

147
3. XSD

Restriction de type

• La restriction permet d’obtenir un type dérivé à partir d’un type de


base (héritage). L’idée générale de la restriction est de définir un
nouveau type dont les contenus au sens large sont des contenus du
type de base.
• La restriction d’un type est introduite par l’élément xsd:restriction
dont l’attribut base donne le nom du type de base.

148
3. XSD

Restriction par longueur


• pour limiter la longueur d’une valeur dans un élément, nous utiliserions les
contraintes de longueur maxLength et minLength. Exemple :

149
3. XSD

Restriction par intervalle

150
3. XSD

Restriction par énumération

151
3. XSD

Restriction par motif

152
3. XSD

Traitement des caractères d’espacement (xsd:whiteSpace)


• Cette facette est particulière. Elle ne restreint pas les valeurs valides mais elle
modifie le traitement des caractères d’espacement à l’analyse lexicale. Cette
facette peut prendre les trois valeurs preserve, replace et collapse qui
correspondent à trois modes de fonctionnement de l’analyseur lexical.

153
3. XSD

Traitement des caractères d’espacement (xsd:whiteSpace)


De façon générale :
• value=”preserve” : le processeur XML ne supprimera aucun caractère d’espace
blanc.
• value=”replace” : le processeur XML remplacera tous les caractères d’espaces
blancs (sauts de ligne, tabulations, espaces et retours chariot) par des espaces.
• value=”collapse” : tous les caractères d’espacement seront remplacés par des
espaces, les espaces de début et de fin sont supprimés et les espaces multiples
sont réduits à un seul espace.

154
3. XSD

Résumé sur les restrictions (Facettes)


• enumeration : Définit une liste de valeurs acceptables
• fractionDigits : Spécifie le nombre maximal de décimales autorisé. Doit être
égal ou supérieur à zéro
• length : Spécifie le nombre exact de caractères ou d’éléments de liste autorisés.
Doit être égal ou supérieur à zéro
• maxExclusive : Spécifie les limites supérieures des valeurs numériques (la
valeur doit être inférieure à cette valeur)
• maxInclusive : Spécifie les limites supérieures des valeurs numériques (la valeur
doit être inférieure ou égale à cette valeur)
155
3. XSD

Résumé sur les restrictions (Facettes)


• maxLength : Spécifie le nombre maximal de caractères ou d’éléments de liste
autorisés. Doit être égal ou supérieur à zéro
• minExclusive : Spécifie les limites inférieures des valeurs numériques (la valeur
doit être supérieure à cette valeur)
• minInclusive : Spécifie les limites inférieures des valeurs numériques (la valeur
doit être supérieure ou égale à cette valeur)
• minLength : Spécifie le nombre minimum de caractères ou d’éléments de liste
autorisés. Doit être égal ou supérieur à zéro
• pattern : Définit la séquence exacte de caractères acceptable
156
3. XSD

Résumé sur les restrictions (Facettes)

• totalDigits : Spécifie le nombre exact de chiffres autorisés. Doit être supérieur à


zéro
• whiteSpace : Spécifie comment les espaces blancs (sauts de ligne, tabulations,
espaces et retours chariot) sont gérés.

Remarque : on peut, aussi, faire des restrictions des types complexes. L’idée reste
la même avec les extensions de type.

157
3. XSD

Les extensions de type


• L’extension est une façon, comme les restrictions, d’obtenir un type dérivé à
partir d’un type de base (Héritage). L’idée générale de l’extension est de
rajouter du contenu et des attributs. L’extension s’applique aux types simples et
aux types complexes mais elle donne toujours un type complexe.
• L’extension d’un type est introduite par l’élément xsd:extension dont l’attribut
base donne le nom du type de base. Celui-ci peut être un type prédéfini ou un
type défini dans le schéma. Le contenu de l’élément xsd:extension explicite le
contenu et les attributs à ajouter au type de base.
• L’élément xsd:extension est enfant d’un élément xsd:simpleContent ou
xsd:complexContent, lui-même enfant de l’élément xsd:complexType.
158
3. XSD

Extension d’un type simple

L’extension permet uniquement d’ajouter des attributs pour donner un type


complexe à contenu simple. Lors d’une extension d’un type simple, l’élément
xsd:extension est toujours enfant d’un élément xsd:simpleContent. Les déclarations
des attributs qui sont ajoutés sont placées dans le contenu de l’élément
xsd:extension.

159
3. XSD

Extension d’un type simple


Exemple : Définition d’un type Prix qui étend le type prédéfini xsd:decimal en lui
ajoutant un attribut devise de type xsd:string

160
3. XSD

Extension d’un type complexe


Types complexes à contenu simple :
Il est possible d’étendre un type complexe à contenu simple pour lui ajouter de
nouveaux attributs. On obtient alors un nouveau type complexe à contenu simple
qui possède les attributs du type de base et ceux déclarés par l’extension.
L’extension d’un tel type est similaire à l’extension d’un type simple. L’élément
xsd:extension est encore enfant d’un élément xsd:simpleContent. Les déclarations
des attributs qui sont ajoutés sont placées dans le contenu de l’élément
xsd:extension.

161
3. XSD

Extension d’un type complexe


Types complexes à contenu simple : Exemple :

162
3. XSD

Extension d’un type complexe


Types complexes à contenu complexe :

L’extension d’un type complexe à contenu complexe consiste à ajouter du contenu


et/ou des attributs. Le contenu est ajouté après le contenu du type de base. L’ajout
d’attribut est semblable au cas des types complexes à contenu simple.

163
3. XSD

Extension d’un type complexe


Types complexes à contenu complexe : Exemple :

164
3. XSD

165
WEB SÉMANTIQUE : LES SEPT CHAPITRES DU COURS
Chapitre 1. Introduction au web sémantique
Chapitre 2. XML
Chapitre 3. Schémas XML
Chapitre 4. Famille XML
Chapitre 5. RDF
Chapitre 6. SPARQL
Chapitre 7. RDFS et le langage OWL

166
CHAPITRE 04. FAMILLE XML

1. XPATH
2. XSLT
3. XQUERY

167
CHAPITRE 03. FAMILLE XML

1. XPATH
2. XSLT
3. XQUERY

168
1. XPATH

Le langage de requête XPath (XML Path Language) peut être utilisé pour parcourir
les éléments et les attributs d’un document XML. Ainsi, Une expression XPath (non
xml) est une requête qui sert principalement à extraire telle ou telle partie de
l’arborescence XML.

169
1. XPATH

• XPath contient plus de 200 fonctions intégrées. Aujourd’hui, les expressions XPath
peuvent également être utilisées en JavaScript, Java, schéma XML, PHP, Python,
C et C ++, et de nombreux autres langages. Aussi, XPath est un élément majeur
de la norme XSLT.
• Remarque :
- XPath 1.0 est devenu une recommandation W3C le 16 novembre 1999.
- la version XPath 2.0 est devenu une recommandation du W3C le 23 janvier
2007.
- Le 8 avril 2014 , XPath 3.0 est devenu une recommandation W3C

170
1. XPATH
• XPath utilise des expressions de chemin pour sélectionner des nœuds ou des
ensembles de nœuds dans un document XML. Ces expressions de chemin
ressemblent beaucoup aux expressions de chemin que vous utilisez avec les
systèmes de fichiers informatiques traditionnels :

• Remarque :
- chemin absolu : /étape1/étape2/étape3/…
- chemin relatif : étape1/étape2/étape3/…
171
1. XPATH
Terminologies xpath : Nœuds
Les documents XML sont traités comme des arbres de nœuds. Ainsi, l’élément le plus
haut de l’arbre est appelé l’élément racine. Dans XPath, il existe sept types de
nœuds: nœuds élément, attribut, texte, espace de noms, instruction de traitement,
commentaire et document.

172
1. XPATH
Terminologies xpath : les relations entre les nœuds
• Parent : Chaque élément et attribut a un parent.
• Children : Les nœuds d’élément peuvent avoir zéro, un ou plusieurs enfants.
• Siblings : Noeuds ayant le même parent.
• Ancestors (ancêtres) : Parent d’un nœud, parent d’un parent, etc.
• Descendants (descendance) : Les enfants d’un nœud, les enfants des enfants, etc.

173
1. XPATH
Syntaxe xpath
XPath utilise des expressions de chemin pour sélectionner des nœuds ou des
ensembles de nœuds dans un document XML. Donc, le nœud est sélectionné en
suivant un chemin ou des étapes.

174
1. XPATH
Syntaxe xpath : Sélection des nœuds
Le nœud est sélectionné en suivant un chemin ou des étapes. Pour cela, on peut
utiliser les expressions de chemin les plus utiles qui sont :

175
1. XPATH
Syntaxe xpath : Sélection des nœuds
Exemple :
• L’expression xpath : /stagiaires/stagiaire permet
de sélectionner tous les éléments ‘stagiaire’ qui sont
des enfants de ‘stagiaires’
• Cette expression : //stagiaire : Sélectionne tous les
éléments ‘stagiaire’ peu importent où ils se trouvent
dans le document
• Alors que l’expression : //@module : Sélectionne
tous les attributs nommés module

176
1. XPATH
Syntaxe xpath : Prédicats
• Les prédicats sont utilisés pour rechercher un nœud spécifique ou un nœud
contenant une valeur spécifique (exprimer une condition). Aussi, les prédicats
sont toujours intégrés entre crochets.
• Exemples :
1. L’expression xpath /stagiaires/stagiaire[1] Sélectionne le premier élément
stagiaire qui est l’enfant de l’élément de stagiaires.
2. /stagiaires/stagiaire[last()] : Sélectionne le dernier élément stagiaire qui est
l’enfant de l’élément stagiaires
3. /stagiaires/stagiaire[last()-1] : Sélectionne l’avant dernier élément stagiaire
qui est l’enfant de l’élément de stagiaires.
177
1. XPATH
Syntaxe xpath : Prédicats
4. /stagiaires/stagiaire[position()<5] : Sélectionne les quatre premiers
éléments stagiaire qui est l’enfant de l’élément de stagiaires.
5. //stagiaire[@numI] : Sélectionne tous les éléments ‘stagiaire’ qui ont un
attribut nommé numI
6. //stagiaire[@numI=’1509’] : Sélectionne tous les éléments ‘stagiaire’ qui ont
un attribut numI avec la valeur 1509
7. //stagiaire[note>10] : Sélectionne tous les éléments ‘stagiaire’ qui ont un
élément de note avec une valeur supérieure à 10.
8. //stagiaire[note>10]/nom : Sélectionne tous les éléments ‘nom’ des éléments
‘stagiaire’ qui ont un élément de note avec une valeur supérieure à 10.
178
1. XPATH
Syntaxe xpath : Sélection de nœuds inconnus
Les caractères génériques XPath peuvent être utilisés pour sélectionner des nœuds
XML inconnus. Voilà la description de chacun des caractères génériques :
• * : Correspond à n’importe quel nœud d’élément
• @* : Correspond à n’importe quel nœud d’attribut
• node () : Correspond à n’importe quel nœud de toute sorte
Exemple :
• //* : sélectionne tous les éléments du document
• //stagiaire[@*] : Sélectionne tous les éléments ‘stagiaire’ qui ont au moins un
attribut de toute nature
179
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
• En utilisant le | Dans une expression XPath, vous pouvez sélectionner plusieurs
chemins.
• Exemple :
//note | //nom : sélectionner tous les éléments ‘note’ et ‘nom’ dans le document.
• Remarque : Les opérateurs XPath
Une expression XPath renvoie soit un ensemble de nœuds, une chaîne, un
booléen ou un nombre. Voici une liste des opérateurs qui peuvent être utilisés
dans les expressions XPath: | , +, – , *, div, =, !=, < , <=, >, >=, or, and, mod

180
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
Exemples :
/AAA : Sélectionne l’élément racine AAA

AAA/CCC : Sélectionne tous les éléments

CCC qui sont enfants de l’élément racine AAA

181
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
AAA/DDD/BBB : Sélectionne tous les éléments
BBB qui sont enfants de DDD, qui sont enfants
de l’élément racine AAA

/AAA/BBB[1] : Sélectionne le premier élément


BBB, fils de l’élément racine AAA

182
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
AAA/BBB[last()] : Sélectionne le dernier élément
BBB, fils de l’élément racine AAA

//@id : Sélectionne tous les attributs id

183
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
//BBB[@id] : Sélectionne tous BBB qui ont
un attribut id

//BBB[@*] : Sélectionne tous BBB qui ont


un attribut

184
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
//BBB[@name] : Sélectionne tous BBB qui ont
un attribut name

//BBB[not(@*)] : Sélectionne tous BBB qui n’ont


pas d’attribut

185
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
//BBB[normalize-space(@name)=’bbb’] :
Sélectionne tous les éléments BBB ayant
un attribut name dont la valeur est bbb.
Les espaces de début de de fin sont
supprimés avant la comparaison

//BBB[@id=’b1′] : Sélectionne tous les


éléments BBB ayant un attribut id dont
la valeur est b1
186
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins

//*[count(BBB)=2] : Sélectionne les éléments


ayant deux enfants BBB

187
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins

//*[count(*)=3] : Sélectionne les éléments ayant


trois enfants

188
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins

//*[contains(name(),’C’ )]

189
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins

//FFF/ancestor::* Séléctionne tous les


ancêtres de l’élément FFF

190
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
Remarque :
• count() : fonction qui compte le nombre d’éléments sélectionnés.
• name() : fonction qui retourne le nom de l’élément.
• contains est une fonction qui retourne vrai si la chaîne du premier argument
contient celle du deuxième.
• La fonction string-length retourne le nombre de caractères dans une chaîne.
Exemple : //*[string-length(name())=3]

191
1. XPATH
Syntaxe xpath : Sélection de plusieurs chemins
• L’axe “parent” contient le parent du nœud contextuel s’il en a un
• L’axe ancêtre (ancestor) contient les ancêtres du nœud contextuel; cela
comprend son parent et les parents des parents etc… Aussi, cet axe contient
toujours le nœud racine, sauf si le nœud contextuel est lui-même la racine.

192
CHAPITRE 03. FAMILLE XML

1. XPATH
2. XSLT
3. XQUERY

193
2. XSLT
Définition
XSLT est un standard du W3C depuis 1999. C’est une technologie qui permet de
transformer les informations d’un document XML vers un autre type de document
(XML, XHTML/HTML, CSV…). Le principe de fonctionnement : un document XSLT est
associé à un document XML afin de créer un nouveau document d’une nature
différente ou identique.

194
2. XSLT
Structure de base
• Une feuille de style XSLT est un document xml (avec extension “.xsl”) séparé qui
contient des règles de transformation. Elle doit suivre la syntaxe globale ci-
dessous:

• Pour accéder aux éléments, attributs et fonctionnalités XSLT, nous devons


déclarer l’espace de noms : “http://www.w3.org/1999/XSL/Transform” (pointe
vers l’espace de noms XSLT W3C officiel)
• version = “1.0” représente la version xslt utilisée.
195
2. XSLT
Référencement
• Le référencement d’un document XSLT se fait au niveau du document XML dont
les informations seront utilisées au cours de la transformation. Ce référencement
se fait via une ligne à placer sous le prologue et avant l’élément racine du
document XML:
<?xml-stylesheet type=”text/xsl” href= “mon_document.xsl” ?>
• L’attribut type permet de définir le type du document que nous souhaitons
référencer. Dans notre cas, il s’agit d’un document XSLT : “text/xsl”. L’attribut
href permet d’indiquer l’URI du document que l’on souhaite référencer.
• Remarque : On peut associer une feuille de style XSL(T) à un (ou plusieurs)
documents XML.
196
2. XSLT
Output
• XSLT output, qui se place sous la racine stylesheet, désigne la nature du
document en sortie. Syntaxe :
<xsl:output method=”xml” encoding=”UTF-8″ .. />
• method : préciser le type du document produit à l’issue des transformations :
xml, html , xhtml ou text.
• encoding : préciser l’encodage du document produit à l’issue des
transformations la balise xsl :output peut avoir d’autres attributs.

197
2. XSLT
Template
Un document xsl est un ensemble de templates (règles de traduction). Le contenu
d’un template permet de définir les transformations à appliquer à l’ensemble des
données sélectionnées par l’expression XPath qui lui est attachée. Ce contenu peut-
être de différentes natures.

Exemple :

198
2. XSLT
Template
Le squelette d’un document XSLT effectuant une transformation vers un document
XHTML/HTML serait donc, par exemple, sous cette forme :

199
2. XSLT
Les fonctions
Ces fonctions vont nous permettre d’exploiter les données sélectionnées par nos
templates afin de procéder à des transformations plus ou moins complexes.
• Value-of : Extraire la valeur d’un élément XML ou la valeur de ses attributs

Syntaxe :

Exemple :

200
2. XSLT
Les fonctions

• for-each : Créer une boucle sur un ensemble d’éléments.

Syntaxe :

Exemple :

201
2. XSLT
Les fonctions

• sort : Trier en ordre croissant ou décroissant.

Syntaxe :

Exemple :

202
2. XSLT
Les fonctions
• If : Conditionner une transformation.
Opérateurs logiques : AND, OR, NOT
Opérateurs de comparaison : =, not (a=b), &lt; pour inférieur, &gt; pour supérieur

Syntaxe :

Exemple :

203
2. XSLT
Les fonctions

• Choose : Traiter des cas (plusieurs conditions).


Syntaxe : Exemple :

204
2. XSLT
Les fonctions

• apply-templates : permet de continuer la transformation des éléments enfants


d’un template.
Syntaxe : Exemple :

205
CHAPITRE 03. FAMILLE XML

1. XPATH
2. XSLT
3. XQUERY

206
3. XQUERY
Définition
• Langage permettant d’extraire des informations depuis un document ou un
ensemble de documents XML.
• Il permet aussi de réaliser des calculs complexes grâce à un large panel
d’instructions.

207
3. XQUERY
Définition
• XQuery fait aussi partie de la norme XSL.
• Il a été développé conjointement avec le XSLT 2.0.
• XQuery est construit à base des expressions XPath.
• XQuery & XPath partagent le même modèle de données et utilisent le même
ensemble de fonctions & opérateurs.
• XQuery offre d’autres composantes, en plus des expressions et fonctions Xpath.

208
3. XQUERY
Eléments du langage
• Fonction doc( ) : Fonction retournant le nœud document d’une ressource spécifiée
en paramètre à l’aide d’une IRI.

Remarque : pour pouvoir accéder à un fichier système, il faudra précéder l’IRI


par : file:///

Exemples :

209
3. XQUERY
Eléments du langage
• Fonction data( ) : Fonction retournant la valeur atomique d’un élément, un
attribut ou une séquence.

Exemples :

210
3. XQUERY
Eléments du langage
Expressions FLWOR

• For : Parcours d’une séquences d’éléments


• Let : Déclaration de variables
• Where : Restriction sur les éléments parcourus
• Order by : tri des éléments traités
• Return : Résultat à retourner
211
3. XQUERY
Eléments du langage
Expressions FLWOR

Obligatoire
Optionnel

212
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple :

213
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple :

214
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple :

215
3. XQUERY
Eléments du langage
Expressions FLWOR
• Il est possible de formater l’affichage du résultat en HTML.
• Insérer le script XQuery au sein d’une structure HTML et entourer le script par
des accolades { }

216
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple :

217
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple :

218
3. XQUERY
Eléments du langage
Expressions FLWOR
Il est possible d’attacher à la boucle FOR une variable de position qui permettra,
pour chaque itération, de retourner la position de l’élément courant.

AT
219
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple :

220
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple :

221
3. XQUERY
Eléments du langage
Expressions FLWOR
La clause GROUP BY permet de regrouper les résultats de l’expression FLWOR
sous la forme d’une séquence d’éléments. Elle doit être mise avant la clause ORDER
BY.
Exemple :

222
3. XQUERY
Eléments du langage
Expressions FLWOR
La clause COUNT permet d’associer l’élément courant dans une séquence à un
numéro d’ordre.
La différence avec la variable de position (dans la clause FOR) est que la clause
COUNT associe un numéro d’ordre à chaque élément de séquence construit par la
clause FOR (utilisation de plusieurs variables).

223
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple : Résultat :

224
3. XQUERY
Eléments du langage
Expressions FLWOR
Exemple : Résultat :

225
3. XQUERY
Eléments du langage
Il est possible de définir ses propres fonctions à l’aide de XQuery.
Syntaxe :

226
3. XQUERY
Eléments du langage
Appel de la fonction :

227
3. XQUERY
Eléments du langage
Exemple :

228
3. XQUERY
Eléments du langage
Il est possible de déclarer un préfixe pour les fonctions d’utilisateurs.
Syntaxe :

229
3. XQUERY
Eléments du langage
Exemple :

230
WEB SÉMANTIQUE : LES SEPT CHAPITRES DU COURS
Chapitre 1. Introduction au web sémantique
Chapitre 2. XML
Chapitre 3. Schémas XML
Chapitre 4. Famille XML
Chapitre 5. RDF
Chapitre 6. SPARQL
Chapitre 7. RDFS et le langage OWL

231
CHAPITRE 05. RDF

1. Décrire des ressources


2. Modèle de triplets et de graphe
3. Syntaxes de sérialisation
4. Valeurs, types et langues
5. Groupes
6. Nommer des graphes

232
CHAPITRE 05. RDF

1. Décrire des ressources


2. Modèle de triplets et de graphe
3. Syntaxes de sérialisation
4. Valeurs, types et langues
5. Groupes
6. Nommer des graphes

233
1. DÉCRIRE DES RESSOURCES

Proposition de départ

234
1. DÉCRIRE DES RESSOURCES

Schéma

235
1. DÉCRIRE DES RESSOURCES

Toile des ressources


1. DÉCRIRE DES RESSOURCES

Différents liens
1. DÉCRIRE DES RESSOURCES

communication
HTTP
WEB
référence adresse

URI
1. DÉCRIRE DES RESSOURCES

Modèle de base
communication

web de
données
référence adresse

Pile des standards du Web de données W3C®


1. DÉCRIRE DES RESSOURCES

Pile de standardisation

Pile des standards du Web de données W3C®


1. DÉCRIRE DES RESSOURCES

Pile de standardisation

Pile des standards du Web de données W3C®


1. DÉCRIRE DES RESSOURCES

Pile de standardisation

Pile des standards du Web de données W3C®


1. DÉCRIRE DES RESSOURCES

Pile de standardisation

Pile des standards du Web de données W3C®


1. DÉCRIRE DES RESSOURCES

Pile de standardisation

Pile des standards du Web de données W3C®


1. DÉCRIRE DES RESSOURCES

Pile de standardisation
communication

web de
données
référence adresse

Pile des standards du Web de données W3C®


dc:creator

rdf:label
ex:ingredient

rdf:about
ex:weight
rdf:type
CHAPITRE 05. RDF

1. Décrire des ressources


2. Modèle de triplets et de graphe
3. Syntaxes de sérialisation
4. Valeurs, types et langues
5. Groupes
6. Nommer des graphes

247
2. MODÈLE DE TRIPLETS ET DE GRAPHE

Signification de RDF

Resource : pages, chaises, idées, personnes ... tout ce qui peut avoir une URI
Description : attributs, caractéristiques, et relations entre ressources
Framework : modèle, langage et syntaxes pour ces descriptions
2. MODÈLE DE TRIPLETS ET DE GRAPHE

RDF
(sujet, prédicat, objet)
Exemples :
• « doc.html a pour auteurs Fabien, Catherine et Olivier et a pour
thème le Web sémantique »
• doc.html a pour auteur Fabien (doc.html, auteur, Fabien)
doc.html a pour auteur Catherine (doc.html, auteur, Catherine)
doc.html a pour auteur Olivier (doc.html, auteur, Olivier)
doc.html a pour thème Web sémantique (doc.html, thème, Web sémantique)
2. MODÈLE DE TRIPLETS ET DE GRAPHE

le triplet est l’atome de connaissance

Prédicat

Objet

Sujet
2. MODÈLE DE TRIPLETS ET DE GRAPHE

Les triplets forment les arcs d’un graphe


(sujet, prédicat, objet) → (sommet, arc, sommet)
2. MODÈLE DE TRIPLETS ET DE GRAPHE

RDF est un modèle de graphe


(doc.html, auteur, Catherine)
(doc.html, thème, Web sémantique)
2. MODÈLE DE TRIPLETS ET DE GRAPHE

RDF est un modèle de multi-graphe orienté et étiqueté

plusieurs arcs entre mêmes sommets


2. MODÈLE DE TRIPLETS ET DE GRAPHE

RDF est un modèle de multi-graphe orienté et étiqueté


les arcs ont un sens :
un sommet de départ (sujet)
un sommet d’arrivée (objet)
2. MODÈLE DE TRIPLETS ET DE GRAPHE

RDF est un modèle de multi-graphe orienté et étiqueté


Les arcs et sommets portent des étiquettes
2. MODÈLE DE TRIPLETS ET DE GRAPHE

Graphes étiquetés par des URI et des littéraux


2. MODÈLE DE TRIPLETS ET DE GRAPHE

Graphes étiquetés par des URI et des littéraux


2. MODÈLE DE TRIPLETS ET DE GRAPHE

Modèle ouvert

• vocabulaire extensible basé sur les URI


• autorise quiconque à faire des déclarations sur n’importe quelle ressource

http://mon_site.org/mon_type
2. MODÈLE DE TRIPLETS ET DE GRAPHE

Graphes étiquetés par des URI et des littéraux


2. MODÈLE DE TRIPLETS ET DE GRAPHE

Graphe mondial (GGG)

Ouvrir et relier des données à l’échelle du Web


2. MODÈLE DE TRIPLETS ET DE GRAPHE

Plusieurs vues sur un graphe

Il y a énormément de façons de traiter les données RDF


CHAPITRE 05. RDF

1. Décrire des ressources


2. Modèle de triplets et de graphe
3. Syntaxes de sérialisation
4. Valeurs, types et langues
5. Groupes
6. Nommer des graphes

262
3. SYNTAXES DE SÉRIALISATION

RDF a une syntaxe historique en XML et d’autres syntaxes : Turtle, TriG, JSON-LD,
N-Triples, N-Quads
3. SYNTAXES DE SÉRIALISATION

<RDF /> : des graphes dans des arbres XML


3. SYNTAXES DE SÉRIALISATION

<RDF /> : une racine


3. SYNTAXES DE SÉRIALISATION

<RDF /> : descriptions de ressources


3. SYNTAXES DE SÉRIALISATION

<RDF /> : liens entre ressources


3. SYNTAXES DE SÉRIALISATION

<RDF /> : valeurs littérales


3. SYNTAXES DE SÉRIALISATION

<RDF /XML> : beaucoup de variations syntaxiques


3. SYNTAXES DE SÉRIALISATION

<RDF /XML> : beaucoup de variations syntaxiques


3. SYNTAXES DE SÉRIALISATION

<RDF /XML> : beaucoup de variations syntaxiques


3. SYNTAXES DE SÉRIALISATION

RDF a une syntaxe minimaliste (N-Triples)


3. SYNTAXES DE SÉRIALISATION

N-Triples : liste de triplets simple à charger (parser)


- URI entre chevrons
- valeurs littérales entre " "
- triplets séparés par des .
3. SYNTAXES DE SÉRIALISATION

RDF a une syntaxe très populaire (Turtle)


3. SYNTAXES DE SÉRIALISATION

RDF est très concis en Turtle


3. SYNTAXES DE SÉRIALISATION

Déclaration des préfixes en Turtle


3. SYNTAXES DE SÉRIALISATION

URI entre chevrons ou nom qualifié


3. SYNTAXES DE SÉRIALISATION

Une (.) ou plusieurs propriétés (;) ou valeurs (,)


CHAPITRE 05. RDF

1. Décrire des ressources


2. Modèle de triplets et de graphe
3. Syntaxes de sérialisation
4. Valeurs, types et langues
5. Groupes
6. Nommer des graphes

279
4. VALEURS, TYPES ET LANGUES

Règles de composition d’un triplet RDF

1. Le sujet est toujours une ressource (pas un littéral)


2. La propriété binaire est d'un type identifié par un URI
3. La valeur est une ressource ou un littéral

(sujet, prédicat, objet)


4. VALEURS, TYPES ET LANGUES

Nœuds anonymes (blank nodes)

Quantification existentielle : il existe une ressource telle que… {  r ; …}


4. VALEURS, TYPES ET LANGUES

Nœuds anonymes (blank nodes)

Quantification existentielle : il existe une ressource telle que… {  r ; …}


4. VALEURS, TYPES ET LANGUES

Nœuds anonymes (blank nodes)

Quantification existentielle : il existe une ressource telle que… {  r ; …}


4. VALEURS, TYPES ET LANGUES

« XML schema datatypes » pour typer les littéraux

Les littéraux standards sont des chaînes de caractères, de type xsd:string


4. VALEURS, TYPES ET LANGUES

« XML schema datatypes » pour typer les littéraux

Les littéraux standards sont des chaînes de caractères, de type xsd:string


4. VALEURS, TYPES ET LANGUES

« XML schema datatypes » pour typer les littéraux

Les littéraux standards sont des chaînes de caractères, de type xsd:string


4. VALEURS, TYPES ET LANGUES
Tous les types de données des schémas
4. VALEURS, TYPES ET LANGUES

Indiquer la langue d’une valeur textuelle

Les littéraux peuvent être associés à une langue


4. VALEURS, TYPES ET LANGUES

Indiquer la langue d’une valeur textuelle

Les littéraux peuvent être associés à une langue


4. VALEURS, TYPES ET LANGUES

Indiquer la langue d’une valeur textuelle

Les littéraux peuvent être associés à une langue


4. VALEURS, TYPES ET LANGUES

Typer les ressources

la propriété rdf:type relie les URI des ressources et de leurs classes


4. VALEURS, TYPES ET LANGUES

Typer les ressources

la propriété rdf:type relie les URI des ressources et de leurs classes


4. VALEURS, TYPES ET LANGUES

Typer les ressources

la propriété rdf:type relie les URI des ressources et de leurs classes


CHAPITRE 05. RDF

1. Décrire des ressources


2. Modèle de triplets et de graphe
3. Syntaxes de sérialisation
4. Valeurs, types et langues
5. Groupes
6. Nommer des graphes

294
5. GROUPES

Les sacs (rdf:Bag) de ressources ou littéraux

Groupes simples sans ordre ni sens


5. GROUPES

Les sacs (rdf:Bag) de ressources ou littéraux

Groupes simples sans ordre ni sens


5. GROUPES

Les sacs (rdf:Bag) de ressources ou littéraux

Groupes simples sans ordre ni sens


5. GROUPES

Les séquences (rdf:Seq)

Groupes ordonnés de ressources ou littéraux


5. GROUPES

Les alternatives (rdf:Alt)

ex. une même valeur mais dans différentes langues


5. GROUPES

Les collections

Des listes exhaustives et ordonnées


5. GROUPES

Les collections

Des listes exhaustives et ordonnées


CHAPITRE 05. RDF

1. Décrire des ressources


2. Modèle de triplets et de graphe
3. Syntaxes de sérialisation
4. Valeurs, types et langues
5. Groupes
6. Nommer des graphes

302
6. NOMMER DES GRAPHES
les graphes nommés
Grouper des triplets dans des sous-graphes identifiés par des URI
6. NOMMER DES GRAPHES

RDF a une syntaxe TriG et une syntaxe N-Quads permettant d’exprimer des
contextes
6. NOMMER DES GRAPHES
Graphes nommés en TriG
6. NOMMER DES GRAPHES
Graphes nommés en N-Quads
6. NOMMER DES GRAPHES
Pile de standardisation
WEB SÉMANTIQUE : LES SEPT CHAPITRES DU COURS
Chapitre 1. Introduction au web sémantique
Chapitre 2. XML
Chapitre 3. Schémas XML
Chapitre 4. Famille XML
Chapitre 5. RDF
Chapitre 6. SPARQL
Chapitre 7. RDFS et le langage OWL

308
CHAPITRE 06. SPARQL

« accéder aux sources de données


du Web »

309
CHAPITRE 06. SPARQL

1. Appariement de graphes RDF


2. Filtres, contraintes et fonctions
3. Pré et post traitements
4. Différentes formes de requêtes
5. Formats et protocole de retours
6. Modification des bases

310
CHAPITRE 06. SPARQL

1. Appariement de graphes RDF


2. Filtres, contraintes et fonctions
3. Pré et post traitements
4. Différentes formes de requêtes
5. Formats et protocole de retours
6. Modification des bases

311
1. APPARIEMENT DE GRAPHES RDF
SPARQL Protocol And RDF Query Language

1. Langage de requête (syntaxe Turtle)


- SPARQL 1.1 Query Language - W3C REC 21 Mar. 2013
- SPARQL 1.1 Update - W3C REC 21 Mar. 2013

2. Langage de présentation des résultats


- SPARQL Query Results XML Format - W3C REC 21 Mar. 2013
1. APPARIEMENT DE GRAPHES RDF
Interroger avec SPARQL

SELECT ce que vous voulez

FROM où vous voulez

WHERE {comme }
vous voulez
1. APPARIEMENT DE GRAPHES RDF
Les triplets en SPARQL

• Syntaxe Turtle avec des points d'interrogation pour les variables:


?x rdf:type ex:Person
• Décrire des patrons de graphes à trouver:
SELECT ?subject ?property ?value WHERE { ?subject ?property ?value }
• Un patron est par défaut une conjonction de triplets:
SELECT ?x WHERE
{ ?x rdf:type ex:Person .
?x ex:name ?name . }
1. APPARIEMENT DE GRAPHES RDF
Mêmes abréviations qu’en Turtle
• Triplets ayant un sujet commun :
SELECT ?name ?fname SELECT ?name ?fname
WHERE {?x a ex:Person; WHERE{?x rdf:type ex:Person.
ex:name ?name ; ?x ex:name ?name .
?x ex:firstname ?fname .
ex:firstname ?fname ;
?x ex:author ?y . }
ex:author ?y . }
• Plusieurs valeurs
?x ex:firstname "Fabien", "Lucien" .
• ressource anonyme
[ ex:firstname "Fabien" ] ou
[] ex:firstname "Fabien" .
1. APPARIEMENT DE GRAPHES RDF
Déclarer les préfixes des espaces de noms
Déclarer des préfixes pour les vocabulaires utilisés dans la requête:
PREFIX mit: <http://www.mit.edu#>
SELECT ?student
WHERE {
?student mit:registeredAt ?x .
}
1. APPARIEMENT DE GRAPHES RDF
Déclarer les préfixes des espaces de noms
Déclarer des préfixes pour les vocabulaires utilisés dans la requête:
PREFIX mit: <http://www.mit.edu#>
SELECT ?student
WHERE {
?student <http://www.mit.edu#registeredAt> ?x .
}
1. APPARIEMENT DE GRAPHES RDF
Déclarer les préfixes des espaces de noms
Déclarer des préfixes pour les vocabulaires utilisés dans la requête:
PREFIX mit: <http://www.mit.edu#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?student
WHERE {
?student mit:registeredAt ?x .
?x foaf:homepage <http://www.mit.edu> .
}
Déclarer un espace de base par défaut i.e. pour les URI relatifs
BASE <…>
1. APPARIEMENT DE GRAPHES RDF
Spécifier la langue et le type des littéraux
pour obliger à respecter un attribut : @fr , ^^xsd:integer
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?x ?f WHERE {
?x foaf:name "Fabien"@fr ; foaf:knows ?f .
}

PREFIX foaf: <http://xmlns.com/foaf/0.1/>


SELECT ?x WHERE {
?x foaf:name "Fabien"@fr ;
foaf:age "21"^^xsd:integer .
}
1. APPARIEMENT DE GRAPHES RDF
Déclarer un motif optionnel
Une partie du patron de graphe n’est pas obligatoire.
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?person ?name
WHERE {
?person foaf:homepage <http://fabien.info> .
OPTIONAL { ?person foaf:name ?name . }
}

La variable ? name est potentiellement « unbound »


1. APPARIEMENT DE GRAPHES RDF
Déclarer deux patrons comme alternatifs
Faire l’union des résultats de deux motifs de graphes
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?person ?name
WHERE {
?person foaf:name ?name .
{
?person foaf:homepage <http://fabien.info> .
}
UNION
{
?person foaf:homepage <http://bafien.org> . ou
}
}
1. APPARIEMENT DE GRAPHES RDF
Spécifier des valeurs prédéfinies pour les variables
Supprimer des résultats correspondants à un pattern
PREFIX ex: <http://www.example.abc#>
SELECT ?x
WHERE {
?x a ex:Person
MINUS { ?x a ex:Man }
}
1. APPARIEMENT DE GRAPHES RDF
Spécifier des valeurs prédéfinies pour les variables
Fournir des résultats ou une partie du binding est prédéfinie
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?person ?name
WHERE {
?person foaf:name ?name .
} …
VALUES ?name { "Peter" "Pedro" "Pierre" }
1. APPARIEMENT DE GRAPHES RDF
Motifs de chemins dans les graphes
Des expressions régulières sur des chemins entre ressources
/ : sequence | : alternative
+ : one or several * : zero or several
? : optional ^ : reverse
! : negation
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?friend WHERE {
?x foaf:name "Fabien Gandon" ;
32
4
foaf:knows+ ?friend . ( … )
}
1. APPARIEMENT DE GRAPHES RDF
Ne garder que les résultats distincts
Un seul exemplaire des réponses ayant les mêmes valeurs pour les mêmes variables
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?name
WHERE { ?person foaf:name ?name . }
CHAPITRE 06. SPARQL

1. Appariement de graphes RDF


2. Filtres, contraintes et fonctions
3. Pré et post traitements
4. Différentes formes de requêtes
5. Formats et protocole de retours
6. Modification des bases

326
2. FILTRES, CONTRAINTES ET FONCTIONS
Filtrer les résultats sur les valeurs
Déclarer des contraintes supplémentaires notamment sur les variables
• select = clause sélectionnant les valeurs à retourner
• where
• filter = contraintes ajoutées dans la clause where exprimées avec des
fonctions de tests XPath 2.0 ou externes
2. FILTRES, CONTRAINTES ET FONCTIONS
ex. personne ayant au moins 18 ans
PREFIX ex: <http://inria.fr/schema#>
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person ;
ex:name ?name ;
ex:age ?age .
FILTER (xsd:integer(?age) >= 18)
}
2. FILTRES, CONTRAINTES ET FONCTIONS
Test sur les valeurs
Tester et comparer constantes et variables
• Comparateurs : <, >, =, <=, >=, !=

• Expressions régulières : regex(?x, "A.*")


• Tests sur les valeurs des variables : isURI(?x), isBlank(?x),
isLiteral(?x), bound(?x)
2. FILTRES, CONTRAINTES ET FONCTIONS
Accès et transformation des types et langues
Attributs langage et type, re-typage, et valeur brute
• Attributs et valeurs : lang(), datatype(), str()
• Fonctions de (re-)typage (casting XML Schema): xsd:integer(?x)
2. FILTRES, CONTRAINTES ET FONCTIONS
Fonctions chaînes & littéraux
2. FILTRES, CONTRAINTES ET FONCTIONS
Fonctions sur les dates

YEAR(Date), MONTH(Date), DAY(Date)


HOURS(Date), MINUTES(Date), SECONDS(Date)
TIMEZONE(Date), TZ(Date) accesseurs éléments de dates
NOW() date du jour
2. FILTRES, CONTRAINTES ET FONCTIONS
Fonctions numériques

ABS(Val), CEIL(Val), FLOOR(Val), ROUND(Val)


valeur absolue, arrondis
isNumeric(Val) tester si c’est une valeur numérique
RAND() valeur aléatoire entre 0 et 1
2. FILTRES, CONTRAINTES ET FONCTIONS
Autres fonctions

MD5(val), SHA1(val), SHA256(val), SHA384(val), SHA512(val)


fonctions de hachage
coalesce(val1,…, valn) première valeur valide construire
IRI(str), URI(str) un iri/uri d’une chaîne construire un
BNODE(ID) blank node
2. FILTRES, CONTRAINTES ET FONCTIONS
Combinaison et extension

• combinaisons booléennes de tests &&, ||, !, ()


• appel à des fonctions externes / extensions
2. FILTRES, CONTRAINTES ET FONCTIONS
Expression d’embranchement

Instruction de test classique: if… then… else…


PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT * where {
?x foaf:name ?name ; foaf:age ?age .
FILTER( if (langMatches(lang(?name), "FR"),
?age>=18, ?age>=21) )
}
2. FILTRES, CONTRAINTES ET FONCTIONS
Présence ou absence d’une valeur dans une liste

Deux instructions vérifiant la présence (in) ou l’absence (not in)


PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT * where {
?x foaf:name ?n .
FILTER (?n IN ("fabien", "olivier", "catherine") )
}
2. FILTRES, CONTRAINTES ET FONCTIONS
Vérifier qu’un motif n’existe pas

l’instruction (not exists) vérifie l’absence d’un motif de graphe


SELECT ?name
WHERE {
?x foaf:name ?name .
FILTER NOT EXISTS { ?x foaf:age -1 }
}
CHAPITRE 06. SPARQL

1. Appariement de graphes RDF


2. Filtres, contraintes et fonctions
3. Pré et post traitements
4. Différentes formes de requêtes
5. Formats et protocole de retours
6. Modification des bases

339
3. PRÉ ET POST TRAITEMENTS
Cibler un ou plusieurs graphes à fouiller

Contrôler les graphes sources utilisés pour répondre


PREFIX mit: <http://www.mit.edu#>
SELECT ?student
FROM <http//www.mit.edu/data.rdf>
WHERE { ?student mit:registeredAt ?x . }
3. PRÉ ET POST TRAITEMENTS
Cibler un ou plusieurs graphes à fouiller

Contrôler les graphes sources utilisés pour répondre


PREFIX mit: <http://www.mit.edu#>
SELECT ?student
FROM NAMED <http//www.mit.edu/data1.rdf>
FROM NAMED <http//www.mit.edu/data2.rdf>
WHERE {
GRAPH ?g {
?student mit:registeredAt ?x .
}
}
3. PRÉ ET POST TRAITEMENTS
Trier, filtrer et limiter les réponses

ex. trier par nom les réponses de la n°21 à la n°40


PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name
WHERE { ?x foaf:name ?name . }
ORDER BY ?name
LIMIT 20
OFFSET 20
3. PRÉ ET POST TRAITEMENTS
Agréger les résultats

Grouper sur une ou plusieurs variables: group by


Agréger des valeurs: count, sum, min, max, avg, group_concat, sample
Filtrer sur des valeurs groupées: having

PREFIX mit: <http://www.mit.edu#>


SELECT ?student
WHERE { ?student mit:score ?score . }
GROUP BY ?student
HAVING(AVG(?score) >= 10)
3. PRÉ ET POST TRAITEMENTS
Requêtes imbriquées

Utiliser les résultats d’une requête pour formuler une autre requête
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name WHERE {
{ SELECT (max(?age) as ?max)
WHERE { ?person foaf:age ?age } }
?senior foaf:age ?max .
?senior foaf:name ?name
}
3. PRÉ ET POST TRAITEMENTS
Expressions calculées

Définir des variables dont la valeur est calculée


PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?x (month(?date) as ?month)
WHERE { ?x foaf:birthday ?date . }
CHAPITRE 06. SPARQL

1. Appariement de graphes RDF


2. Filtres, contraintes et fonctions
3. Pré et post traitements
4. Différentes formes de requêtes
5. Formats et protocole de retours
6. Modification des bases

346
4. DIFFÉRENTES FORMES DE REQUÊTES
Vérifier l’existence d’au moins une réponse

Ne pas énumérer tous les résultats mais juste savoir si cela existe (vrai/faux)

PREFIX foaf: <http://xmlns.com/foaf/0.1/>


ASK { ?person foaf:age 111 . }
4. DIFFÉRENTES FORMES DE REQUÊTES
Construire un graphe RDF en sortie

Une requête peut avoir comme résultat un nouveau graphe RDF

PREFIX mit: <http://www.mit.edu#>


PREFIX corp: <http://mycorp.com/schema#>
CONSTRUCT { ?student a corp:FuturExecutive . }
WHERE { ?student a mit:Student . }
4. DIFFÉRENTES FORMES DE REQUÊTES
Description libre à la discrétion du serveur

Pour découvrir des données dont on ne sait pas grand chose

DESCRIBE <http://fabien.info>

PREFIX foaf: <http://xmlns.com/foaf/0.1/>


DESCRIBE ?x WHERE { ?x foaf:name "Fabien" }
CHAPITRE 06. SPARQL

1. Appariement de graphes RDF


2. Filtres, contraintes et fonctions
3. Pré et post traitements
4. Différentes formes de requêtes
5. Formats et protocole de retours
6. Modification des bases

350
5. FORMATS ET PROTOCOLE DE RETOURS
Résultats de requêtes SPARQL

Valeurs trouvées dans format indiqué


• bindings : valeurs sélectionnées, au format XML
• graphe RDF
• JSON (appels AJAX dans applications Web)
• CSV/TSV (ex. export)
5. FORMATS ET PROTOCOLE DE RETOURS
Exemple de binding en XML
<?xml version="1.0"?>
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
<head> <variable name="student"/> </head>
<results>
<result>
<binding name="student">
<uri>http//www.mit.edu/data.rdf#ndieng</uri>
</binding>
</result>
<result>
<binding name="student">
<uri>http//www.mit.edu/data.rdf#jdoe</uri>
</binding>
</result>
</results>
</sparql>
5. FORMATS ET PROTOCOLE DE RETOURS
Protocole SPARQL

• envoyer des requêtes


• recevoir les réponses
• reposer sur l’architecture Web
5. FORMATS ET PROTOCOLE DE RETOURS
Exemple de binding en HTTP

Comment envoyer une requête SPARQL à un serveur dans un appel HTTP

GET /sparql?query=<encoded query> HTTP/1.1


Host: fr.dbpedia.org
User-agent: my-sparql-client/0.1
5. FORMATS ET PROTOCOLE DE RETOURS
Exemple de binding en SOAP

Comment envoyer une requête SPARQL à un service web dédié


<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<query-request xmlns="http://www.w3.org/2005/09/sparql-protocol-types/#">
<query>SELECT ?x ?p ?y WHERE {?x ?p ?y}</query>
</query-request>
</soapenv:Body>
</soapenv:Envelope>
5. FORMATS ET PROTOCOLE DE RETOURS
Pile de standardisation
CHAPITRE 06. SPARQL

1. Appariement de graphes RDF


2. Filtres, contraintes et fonctions
3. Pré et post traitements
4. Différentes formes de requêtes
5. Formats et protocole de retours
6. Modification des bases

357
6. MODIFICATION DES BASES
SPARQL Update

Ajouter ou retirer des triplets ou des graphes


6. MODIFICATION DES BASES
Charger des triplets RDF

LOAD <http://example.org/dataset>
6. MODIFICATION DES BASES
Ajouter/retirer des triplets explicités

PREFIX foaf: <http://xmlns.com/foaf/0.1/>


PREFIX ex: <http://example.org/>
INSERT DATA {
ex:Jimmy foaf:name "Jimmy" ;
foaf:knows ex:John, ex:Robert .
}
6. MODIFICATION DES BASES
Ajouter/retirer des triplets explicités

PREFIX foaf: <http://xmlns.com/foaf/0.1/>


PREFIX ex: <http://example.org/>
INSERT DATA {
ex:Jimmy foaf:name "Jimmy" ;
foaf:knows ex:John, ex:Robert .
}
;
DELETE DATA {
ex:Jimmy foaf:knows ex:Mick .
}
6. MODIFICATION DES BASES
Ajouter/retirer des triplets calculés

PREFIX ex: <http://example.org/>


DELETE {
?x a ex:Musician
}
WHERE {
?x a ex:Musician
}
6. MODIFICATION DES BASES
Ajouter/retirer des triplets calculés

PREFIX ex: <http://example.org/>


INSERT {
?x a ex:Artist
}
WHERE {
?x a ex:Musician
}
6. MODIFICATION DES BASES
Ajouter/retirer des triplets calculés
PREFIX ex: <http://example.org/>
DELETE {
?x a ex:Musician
}
INSERT {
?x a ex:Artist
}
WHERE {
?x a ex:Musician
}

Vous aimerez peut-être aussi