B-A-BA RDFa

Dans sa version la plus simple, le web est un monde "plat" composé de pages contenant des informations et reliées entre elles. La plupart du temps, ces pages sont aisément compréhensibles par les humains qui les lisent. Elles sont cependant difficiles à interpréter pour les machines et les applications qui les parcourent, comme les moteurs de recherche. C'est l'une des raisons pour lesquelles les moteurs de recherche donnent souvent des mauvaises réponses aux questions posées : ils n'en comprennent pas le sens. Le web sémantique vise à donner du relief à ce monde en lui ajoutant une couche d'information précisant le sens des expressions présentes dans les pages ; ces données relatives aux données du "monde plat" sont appelées métadonnées. La façon de mettre en œuvre les métadonnées progresse pour permettre et améliorer l'enrichissement sémantique et le RDF est une norme évoluée permettant d'associer du sens aux informations du web. Il a aussi vocation à mettre ces informations en réseau en construisant un graphe conceptuel.

Le RDFa offre une extension du (X)HTML pour inclure ces informations directement dans les pages web.

Graphe

Un graphe est un objet mathématique (à ne pas confondre avec graphique qui signifie "représentation graphique"). Un graphe est, par définition, un ensemble de sommets reliés par des arêtes. Dans le langage courant, un graphe est souvent décrit aussi comme un ensemble de nœuds reliés par des arcs.

Si les arêtes sont dotées d'un sens de parcours, le graphe est dit orienté. La figure suivante donne une représentation graphique d'un graphe orienté.
graphe orienté

Graphe RDF

Le RDF est une Forme de Description de Ressources (RDF = Resource Description Framework) reposant sur l'emploi de graphes pour exprimer des informations à propos de ressources. Une "ressource" peut être toute chose comme, par exemple, un document, une personne, un objet physique, un concept abstrait.

Une information est exprimée par une assertion : "telle ressource (sujet) a pour propriété (prédicat) telle autre ressource (objet)". Dans cette page, ce modèle d'assertion est désigné par le sigle SPO pour "sujet-prédicat-objet".

Les deux ressources "sujet" et "objet" sont des sommets du graphe ; le prédicat qui exprime le lien est une arête orientée qui joint les deux sommets.

La suite de ce texte est développée sur un exemple, l'assertion :

"Les aventures de Huckleberry Finn" a pour auteur Mark Twain.

Le sujet est le livre intitulé "Les aventures de Huckleberry Finn", l'objet est la personne qui l'a écrit : "Mark Twain" et le prédicat est le lien entre les deux : "a pour auteur". Il existe plusieurs manières de représenter cette information élémentaire.

Représentation graphique

La manière la plus visuelle de représenter ce graphe élémentaire est d'en donner une représentation graphique telle que la suivante.
Les aventures de Huckleberry Finn a pour auteur Mark Twain

Visuelle, certes, donc utile à la compréhension humaine, cette représentation n'aide guère les machines.

Les triplets RDF

Le fondement du RDF est de fournir une représentation écrite avec des caractères standard (pouvant être encodée en UTF-8, notamment) et facilitant l'interprétation. Le ressort de cette représentation est d'expliciter la forme du modèle SPO en mettant en évidence les trois composants (sujet, prédicat, objet) de l'assertion. À cet effet, il existe plusieurs formats de notation. Le plus explicite est le "N-Triples", qui dispose chaque assertion sur une ligne de trois blocs séparés par des espaces et suivis d'un point (et d'un éventuel commentaire). L'emploi le plus basique consiste à utiliser pour chaque bloc une chaîne de caractères. Par exemple :

"Les aventures de Huckleberry Finn" "a pour auteur" "Mark Twain" . # Cette assertion littéraire est littérale !

Le texte après le # est un texte de commentaire non pris en compte. La vraie substance se trouve avant ce caractère #. Cette notation représente déjà un progrès par rapport à la phrase initiale en évitant les erreurs sur la reconnaissance des blocs. Cependant, elle n'est pas très informative sur leur nature.

Pour incorporer davantage de sens, il est recommandé d'utiliser des "vocabulaires contrôlés", c'est-à-dire des descripteurs définis sans ambiguité et, autant que possible, déjà disponibles afin d'augmenter l'interopérabilité des applications. En outre, les vocabulaires contrôlés modernes fournissent des identifiants uniques (URI, de l'anglais Uniform Resource Identifier) qui peuvent, notamment, être des URL.

Par exemple, "Mark Twain" est un auteur pour lequel la BNF fournit une page qui le décrit. Pour caractériser plus précisément l'auteur, la BNF complète son propre identifiant unique par le vocabulaire contrôlé foaf qui le définit, en tant que ressource, comme une personne : http://data.bnf.fr/ark:/12148/cb11927291n#foaf:Person. Ainsi, dans le triplet RDF, la chaîne de caractères "Mark Twain" peut avantageusement être remplacée par cet URI qui le caractérise sans confusion possible.

Il en est de même pour le livre. Pour décrire cette œuvre, la BNF invoque le vocabulaire contrôlé frbr, un modèle élaboré par l'IFLA (International Federation of Library Associations and Institutions) et associe donc au livre l'URI http://data.bnf.fr/ark:/12148/cb120369031#frbr:Work qui identifie l'œuvre et permet d'accéder à toutes les éditions répertoriées par la BNF.

Enfin, pour le prédicat, la célèbre norme Dublin Core fournit aussi une définition précise pour laquelle elle recommande d'utiliser l'URI http://purl.org/dc/terms/creator.

En définitive, avec la notation N-Triples, la traduction du graphe élémentaire considéré peut s'écrire :

. # Assertion en N-Triples avec URI ]]>

Cette notation a le mérite de la clarté et c'est pourquoi elle est populaire pour les échanges de données. Toutefois, elle n'est pas adaptée à l'inclusion dans les pages web. Pour ce faire, il existe une notation qui permet d'inclure du RDF directement dans le code HTML d'une page : l'extension RDFa (RDF dans les Attributs).

RDFa

Le RDFa offre une extension du (X)HTML qui permet d'inclure dans les balises des indicateurs sémantiques interprétables par les machines et leurs applications. Il s'agit donc d'une syntaxe permettant d'implémenter les triplets RDF au sein même des pages web.

Ceci se fait à l'aide de nouveaux attributs permettant de désigner le sujet, le prédicat et l'objet d'une assertion. De plus, le RDFa existe en version complète et en version allégée (RDFa lite). Les exemples donnés plus loin sont adaptés au XHTML (la prise en compte dans le HTML est similaire).

Deux cas courants sont examinés ici :

Assertion relative à un sujet externe

Un exemple va rendre cela plus clair. L'assertion prise comme exemple plus haut peut prendre en RDFa la forme suivante.

Le livre "Les aventures de Huckleberry Finn" a été écrit par Mark Twain.

Comme cela est "visible" sur le paragraphe précédent : en fait, l'enrichissement sémantique est masqué au lecteur humain. Au contraire, une machine va exploiter le code source de ce même paragraphe, affiché ci-dessous (où class="term" n'est qu'une mention de style CSS, sans portée sémantique) :

Le livre "Les aventures de Huckleberry Finn" a été écrit par Mark Twain.

]]>

L'attribut about définit comme sujet le livre caractérisé par l'URI http://data.bnf.fr/ark:/12148/cb120369031#frbr:Work pour toutes les assertions contenues dans la balise div qui porte cet attribut. Dans le cas particulier, il y a une seule assertion, énoncée "silencieusement" par la balise span, et elle dit que la propriété http://purl.org/dc/terms/creator a pour valeur la ressource http://data.bnf.fr/ark:/12148/cb11927291n#foaf:Person.

Assertion relative à la page web en cours

La page en cours est le sujet par défaut, qui n'a donc pas besoin d'être déclaré explicitement. Il ne reste plus qu'à énoncer le prédicat et l'objet, en utilisant les mêmes attributs que ci-dessus. Ceux-ci peuvent être portés par une simple balise meta placée dans la section head de la page :

]]>

Celle-ci précise que cette page (sujet par défaut) a pour sujet (prédicat : http://purl.org/dc/terms/subject) le RDF (objet : notice RAMEAU http://catalogue.bnf.fr/ark:/12148/cb166897014).

Si plusieurs assertions doivent être incluses et comportent une racine commune pour les URI utilisés, la répétition de celle-ci peut être évitée en la déclarant en préfixe dans une balise parente des assertions par l'attribut prefix="rac: http://longue_racine_commune" qui définit du même coup le raccourci rac: de substitution. Cependant, les espaces de nommage les plus connus disposent déjà d'un raccourci par défaut (voir la liste des préfixes prédéfinis constituant le "contexte initial de RDFa"). Par exemple, la présente page contient la structure RDFa suivante.

[…]
<head>
[…]
<meta property="dc:identifier" content="SZ-1701182121" />
<meta property="dc:title" xml:lang="en" content="RDF" />
<meta property="dc:language" content="fr" />
<meta property="dc:description" xml:lang="fr" content="Découverte facile du RDF pour un enrichissement sémantique simple des pages (X)HTML." />
<meta property="dc:subject" content="http://catalogue.bnf.fr/ark:/12148/cb166897014" />
<meta property="dc:subject" xml:lang="en" content="Resource Description Framework" />
<meta property="dc:coverage" xml:lang="fr" content="Internet au début du XXIe siècle." />
<meta property="dc:type" xml:lang="en" content="text" />
<meta property="dc:format" content="application/xhtml+xml" />
[…]
<meta property="dc:rights" xml:lang="fr" content="© Sellig Zed, 2017. Sous licence Creative Commons CC-BY-NC." />
<meta property="dc:rights" content="https://creativecommons.org/licenses/by-nc/2.0/fr/legalcode" />
<meta property="dc:source" content="https://www.w3.org/TR/rdf11-primer/" />
<meta property="dc:source" content="https://www.w3.org/TR/rdfa-primer/" />
<meta property="dc:relation" xml:lang="fr" content="http://www.myriapyle.net/soussite/xhtml5dc/modele_xhtml5dc_interne.xhtml" />
[…]
</head>

Ici, dc: remplace l'espace de nommage du "Dublin Core". Il est à noter que la tendance actuelle est de se référer à l'espace du DC qualifié (http://purl.org/dc/terms/) dans tous les cas, même si n'est utilisé que du DC simple normalement défini par un espace de nommage spécifique (http://purl.org/dc/elements/1.1/). Un clic sur le lien "Validation RDFa seul" au bas de cette page montre que cette pratique est aussi adoptée par le W3C. Il est autorisé de redéfinir le raccourci en surchargeant l'option par défaut, par exemple en modifiant la balise head comme suit.

<head prefix="dc: http://purl.org/dc/elements/1.1/">

Le RDFa est quand même validé mais cela provoque un avertissement dans le validateur "RDFa seul" (le 20 janvier 2016).

Conclusion

L'emploi du RDFa, en conjonction avec les identifiants uniques de vocabulaires contrôlés reconnus, rend l'enrichissement sémantique des pages web efficace, de manière très simple.

Notamment, l'inclusion de métadonnées relatives à la page en cours peut se faire de manière très voisine de la pratique HTML "classique" (avec des balises meta) et très facile, en combinant, par exemple, le vocabulaire contrôlé Dublin Core comme source de prédicats et les notices de la BNF, (RAMEAU notamment), comme source de ressources. D'autres sources existent.

Enfin, cette page détaille essentiellement des exemples reposant chacun sur un graphe élémentaire constitué de deux sommets et d'une arête. Elle-même est dotée d'un graphe RDFa en étoile très simple. Cependant, les assertions peuvent être aisément multipliées. Les sommets et les arêtes se chaînent alors pour former des graphes qui peuvent devenir complexes.

Lecture


Div pour recevoir la date de mise à jour affichée par un Javascript.

logo html 5 valid-xhtml-rdfa-blue Validation xhtml5 + RDFa - Validation RDFa seul - Traduction du RDFa en RDF XML.