Les petites cases

RDFaiser votre blog, 1ère partie : la théorie

HTML, de même que XHTML, permet de structurer une page Web selon les principes d'un langage à balises. Les différentes balises indiquent de manière hiérarchique le rôle joué par chaque portion d'information dans le contexte de la page Web.

Ainsi, la structure d'un document HTML, comme tout document XML, ne décrit pas le contenu/le message de la page Web, mais reflète la structure de la page Web en elle-même. C'est pourquoi il me semble erroné de parler de « sémantisation », lorsqu'on encode en HTML ou, plus généralement, en XML.

Par exemple, soient les deux portions de code HTML suivants :

<div class="contenu">
       <p class="normal">
                Le <a href="http://barcamp.org/SemanticCampParis">SemanticWeb camp</a> se déroule à Paris
                le samedi 16 février 2008 à partir de 9h30.
        </p>
</div>

<div class="description">
         <ul>
                <li>
                        Le <strong>SemanticWeb camp</strong> se déroule à Paris
                        le <em>samedi 16 février 2008 à partir de 9h30</em>.
                </li>
         </ul>
</div>

Ces deux bouts de code HTML ne sont pas identiques du point de vue de la structure, pourtant, du point de vue du contenu, ils délivrent la même information, le même message. Si certains pourraient y voir une limitation de XML, il n'en est rien. Ce n'est tout simplement pas son rôle.

Pourtant, pour exploiter automatiquement l'information, il pourrait être utile d'exprimer dans le code HTML la structure ou la description du message. Ainsi, même en utilisant du code HTML différent, il serait possible d'exprimer le fait que le contenu est le même et tant qu'à faire autant l'exprimer selon un modèle commun, au hasard, RDF...

C'est précisément le but de RDFa dont la dernière version vient de sortir avec le statut de Working draft au W3C. Son principe de base est le même que les microformats, à savoir ajouter dans les attributs HTML des informations sur la structure du message.

Mais, là où les microformats utilisaient les attributs de HTML normalement dévolues à la structuration de la page Web, par exemple, l'attribut « class », confondant alors structure de la page Web et structure du message de la page Web, RDFa introduit de nouveaux attributs. De même, là où les microformats imposaient une normalisation de la valeur des attributs pour structurer le message, RDFa, en s'appuyant sur RDF, permet la réutilisation de tous les vocabulaires existants, ainsi que les ressources déjà disponibles. Loin de moi, l'idée de dévaloriser les microformats, c'est un moyen très simple d'ajouter un peu de structure à une page Web, mais, au final, leurs limites sont atteintes assez rapidement.

Reprenons notre exemple précédent et ajoutons du RDFa :

<div class="contenu" instanceof="cal:Vevent">
             <p class="normal">
                     Le <a href="http://barcamp.org/SemanticCampParis"><span property="cal:summary">SemanticWeb camp</span></a>
                     se déroule à <span property="cal:location">Paris</span>
                     le <span property="cal:dtstart" content="20080216T0930-0100>samedi 16 février 2008
                     à partir de 9h30</span>.
              </p>
</div>

<div class="description" instanceof="cal:Vevent">
           <ul>
                 <li>
                        <strong property="cal:summary">SemanticWeb camp</strong> se déroule à
                        <span property="cal:location">Paris</span> le <em property="cal:dtstart" content="20080216T0930-0100>samedi 16 février 2008 à partir de 9h30</em>.
                 </li>
          </ul>
</div>

Dans cette exemple, sont décrites les informations suivantes :

  • La portion de code décrit un événement ;
  • Cet événement est le SemanticWeb Camp ;
  • Cet événement a lieu à Paris ;
  • Cet événement a lieu le Samedi 16 février 2008 à partir de 9h30 ;

Ça a l'air évident pour nous autres humains, mais ça ne l'est absolument pas pour une machine. RDFa permet donc de faciliter le travail à la machine, puisque si la structure HTML est différente, la structure du message est la même et est clairement exprimée. Il est alors possible de mettre au point des applications qui exploite cette structure. Dans des précédents billets, j'ai déjà montré deux petites expériences avec RDFa. Mais, il en existe beaucoup d'autres. Par exemple, un moteur de recherche pourrait exploiter le type de ressource indiquée dans l'attribut instanceof. Cela permettrait de raffiner les recherches. Et, à la différence de HTML 5 et ses balises <article> et <section> qui n'ont aucun sens du point de vue de la structuration d'une page Web, le couple XHTML 1 et RDFa respectent le rôle de chacun des modèles.

Mais, je vous vois venir. Vous allez me répondre que c'est très joli, mais que la syntaxe est tout de même un poil complexe. Je ne peux pas vous donner tort. Mais, entre nous, n'est-ce-pas le but du Web dynamique et des CMS de générer le code HTML ? Toutes les données d'un CMS ne sont-elles pas parfaitement structurées dans une base de données ?

De même, vous conviendrez avec moi, que mis à part pour générer les fils RSS, on n'exploite bien peu la structure de nos données. Elle ne sert finalement qu'à placer les différents blocs d'information sur la page Web. Pourquoi ne pas l'exprimer clairement dans le code via RDFa ? Il suffirait de changer les templates/squelettes/themes de votre site, en y introduisant du RDFa, et le tour est joué, on a du RDFa généré automatiquement et à peu de frais et vous contribuez facilement à la construction du Web de données.

Pour vous aider dans cette démarche et pour passer de la théorie à la pratique, rendez-vous au prochain billet.



Structuration Moteur de recherche RDFa XHTML Geekeries — 

Commentaires

Avant que ça arrive pour le grand publique il va falloir un moment quand même je pense. Il faudrait que la plupart des CMS s'y mettent en l'intégrant nativement, et aussi les système de blog, etc. Sinon les exploitation possible sont nombreuse en effet ! Vivement un web + sémantique. Pierre

Je trouve pour ma part l'idée passionnante. Je ne m'étais pas intéressé à RDFa jusqu'à peu, mais je me suis plongé dans les specs et j'avoue avoir été passionné.

Je suis actuellement en train de préparer la migration de mon blog sous XHTML+RDFa (ce qui ne devrait pas poser de problème, vu que le Thème était déjà compatible XHTML 1.1).