RDFAoût, votre feuilleton de l'été : pendant un mois, 2 billets par semaine sur le RDFa, à l'attention des lecteurs connaissant déjà le HTML.

Notions abordées dans ce billet : XHTML Vocabulary, Creative Commons, recherche sémantique, graphes, données liées...

Nous avons vu au cours des trois premiers épisodes les mécanismes de base de RDFa et nous allons consacrer les trois prochains à étudier des vocabulaires.

L'autre XHTML

C'est de la prose, ignorante.

Monsieur Jourdain in Le Bourgeois gentilhomme de Molière.

Vous connaissez déjà XHTML, le vocabulaire XML pour structurer des documents textes, voici XHTML le vocabulaire RDF.

XHTML Vocabulary

  • URI : http://www.w3.org/1999/xhtml/vocab#
  • Préfixes usuels : xhv, xhtml
  • 26 propriétés / 0 classes

En fait, celui-là aussi vous le connaissez déjà car vous le manipulez sans le savoir à chaque fois que vous coder en HTML. Oui, vous faîtes du RDFa depuis plus de 10 ans (ou presque) ! C'est en effet un vocabulaire implicite (il n'est pas obligatoire de déclarer son espace de nom et de préfixer ses termes) composé de la vingtaine de valeurs standards des attributs @rel et @rev sur les éléments <a/> et <link/>.

Revenons à notre exemple préféré, la page https://twitter.com/carlomorelli19, nous y trouvons :

<link href="http://a3.twimg.com/a/1281553050/stylesheets/geo.css" rel="stylesheet" />

Et nous obtenons ce triplet :

Sujet Prédicat Objet
sujet implicite valeur de @rel valeur de @href
http://twitter.com/carlomorelli stylesheet http://a3.twimg.com/a/1281553050/stylesheets/geo.css
http://www.w3.org/1999/xhtml/vocab#stylesheet

Une implémentation incomplète dans les navigateurs...

Pour rendre l'implicite explicite, on aurait pu l'écrire ainsi :

<link href="http://a3.twimg.com/a/1281553050/stylesheets/geo.css" rel="xhv:stylesheet" xmlns:xhv="http://www.w3.org/1999/xhtml/vocab#" />

Mais cette dernière écriture n'est pas encore bien gérée par les navigateurs Web.

La première liste de valeurs de @rel est apparue en 1997, dans la spécification du HTML 3.2, soit 2 ans avant RDF et 9 ans avant RDFa. Ce vocabulaire n'a donc été interprété comme du RDFa qu'a posteriori.

Ce "bricolage" pose aujourd'hui problème car beaucoup d'acteurs ont pris l'habitude d'utiliser l'attribut @rel avec leurs propres vocabulaires sans les associer à des espaces de noms. A côté des 26 propriétés officielles (dont stylesheet, icon, alternate, prev, next, license, meta...), nous pouvons donc trouver des termes (nofollow, canonical, search...) qui ne sont pas reconnus par des processeurs RDFa et qui ne serviront malheureusement pas à bâtir de précieux triplets.

... mais des usages pratiques et puissants ailleurs

Détecter les feuilles de style et les flux RSS, afficher les favicons et des aides à la navigation... les usages de ce vocabulaire au sein d'un navigateur font partie de notre quotidien.

Mais il est plus intéressant de se pencher sur ses usages hors navigateur. Par exemple, le célèbre hébergeur de photographies Flickr l'utilise pour préciser la licence des œuvres, en les associant à des ressources maintenues par le projet Creative Commons.

Sur la page https://www.flickr.com/photos/bilalmirza/3341149156/ :

<a href="http://creativecommons.org/licenses/by/2.0/deed.fr" rel="license">
	Certains droits réservés (licence Creative Commons)
</a>
Sujet Prédicat Objet
https://www.flickr.com/photos/bilalmirza/3341149156/ http://www.w3.org/1999/xhtml/vocab#license http://creativecommons.org/licenses/by/2.0/deed.fr

Ce qui permet aux moteurs de recherche d'images comme celui de Google de proposer un filtre selon la licence. Par exemple, je peux chercher toutes les photos de plage que je peux modifier dans le cadre d'un usage commercial. C'est très puissant.

Des données liées entre elles

On peut aller encore plus loin. L'objet de notre triplet est une ressource, la licence en question, mais nous ne la connaissons pas. Par contre, nous connaissons la ressource correspondant au droit de modifier librement l'œuvre, et c'est précisément ce droit qui nous intéresse.

Cretaive Commons

  • URI : http://creativecommons.org/ns#
  • Préfixes usuels : cc
  • 10 propriétés / 6 classes

En tant qu'êtres humains, nous pouvons accéder à la représentation HTML de cette ressource pour en savoir plus. Et, grâce au RDFa contenu dans cet HTML, les automatismes peuvent faire de même et apprendre ceci :

<h2>Vous êtes libres :

<ul>
	⁝
	<li rel="cc:permits" resource="http://creativecommons.org/ns#DerivativeWorks">de modifier cette création</li>
</ul>

Autrement dit :

Sujet Prédicat Objet
http://creativecommons.org/licenses/by/2.0/deed.fr http://creativecommons.org/ns#permits http://creativecommons.org/ns#DerivativeWorks

Avec ce triplet, l'automatisme sait que cette licence accorde ce droit et, en liant les deux triplets au sein d'un même graphe (puisque l'objet du premier est le sujet du deuxième), il en déduit qu'il nous est possible de modifier la photographie présente sur Flickr.

Voici le graphe en question :

Grâce au modèle RDF, le RDFa est bien plus qu'un simple mécanisme d'annotation de documents (comme le sont les microformats). C'est le Web même, mais pour les données.

Il y a beaucoup à dire sur les données liées et les graphes, mais jetons d'abord un dernier coup d'œil sur le code HTML de la licence, qu'y voyons-nous ? Un autre vocabulaire RDF est utilisé : Dublin Core. Une autre de vos vieilles connaissances que nous allons nous remémorer dans le prochain épisode.