Le Vendredi 19 août 2005 à Bayonne
CC-BY-SA

Cet été, j'ai découvert le modèle de données RDF et ce fut une révélation. Je meurs donc d'envie de vous faire partager mes nouvelles connaissances à ce sujet, en essayant d'expliquer ceci de façon simple (ainsi, j'ai délibérément simplifié les exemples de codes pour plus de lisibilité).

Tout d'abord, rappelons ce qu'est le XML. C'est une syntaxe, un langage permettant de créer d'autres langages. On peut aujourd'hui faire tout et n'importe quoi avec des langages utilisant la syntaxe XML : du dessin (SVG), de la messagerie instantanée (Jabber)... et bien sûr des textes structurés (XHTML).

C'est sur le XML que se basent le XHTML et le RDF/XML. Si le premier est omniprésent, le second peine à s'imposer. Pourtant, ils ne sont pas en compétition l'un contre l'autre, il se complètent.

À ma droite, le XHTML

Le XHTML structure les documents textes, il définit leurs titres, leurs paragraphes, leurs emphases, leurs différents composants. Il est facilement compréhensible par l'homme et optimisé pour l'affichage dans un navigateur.
En voici un exemple :

            Fun House des Stooges
            

Fun House des Stooges

En 1970, les Stooges publient leur album Fun House chez Elektra.

  1. Down On The Street
  2. Loose
  3. T.V. Eye
  4. Dirt
  5. 1970
  6. Funhouse
  7. L.A. Blues

Le problème principal avec ce format c'est qu'il structure l'information mais ne la définit pas. Seuls des êtres humains avertis de ce qu'est un album de musique peuvent la comprendre. Sinon, comment deviner ce qu'est Elektra ? Que les Stooges sont ici un groupe de musique et non des comiques de télévision ? Ce que représente la liste de termes après la description ?

À ma gauche, le RDF/XML

Au contraire, le RDF/XML permet de donner du sens à l'information, afin qu'elle soit compréhensible par des machines et donc qu'on puisse automatiser son traitement.
Voici exactement les mêmes informations, mais ce coup-ci dans le format RDF/XML :

            
              Fun House
              Stooges
              1970
              
              
              
                
                  
  • Down On The Street
  • Loose
  • T.V. Eye
  • Dirt
  • 1970
  • Funhouse
  • L.A. Blues
  • Ainsi, des moteurs peuvent répondre aux question suivantes : combien de chansons contient Fun House ? En quelle année est paru le disque ? Est-ce vraiment un album ? etc. Alors qu'en se contentant de la version XHTML, ils ne pouvaient fonctionner que par mots clefs, comme Google aujourd'hui.

    Le problème est que publier ceci tel quel ou même avec une feuille de style ne donnera pas un document facilement lisible par les humains. Le RDF ne peut donc pas remplacer le XHTML.

    Au centre.... XHTML 2

    Aujourd'hui, les webmestre soucieux de donner du sens à la publication de leurs données doivent créer deux fichier séparés : le XHTML pour les humains, le RDF/XML pour les machines. Cette opération n'est pas si fastidieuse qu'elle en a l'air car les deux fichiers peuvent être générés simultanément depuis une même base de donnée, mais tout de même c'est une charge supplémentaire.

    La solution à ce problème arrive bientôt. avec le futur XHTML2.0 et son implémentation de l'attribut property, à mon avis l'apport le plus marquant de cette nouvelle version :

                Fun House des Stooges
                
                
                

    Fun House des Stooges

    En 1970, les Stooges publient leur album Fun House chez Elektra.

    1. Down On The Street
    2. Loose
    3. T.V. Eye
    4. Dirt
    5. 1970
    6. Funhouse
    7. L.A. Blues

    Ainsi, dans un seul document nous offrons une information complète : structurée pour la compréhension de l'homme, adaptée au traitement des machines.

    Vous pouvez donc deviner que je fais partie de ceux qui attendent XHTML2.0 avec impatience.

    Commentaires

    Salut Pierre, J'ai plusieurs

    Ultimateclem

    U
    ultimateclem.net
    Vendredi 19 août 2005 - 09:31

    Salut Pierre,

    J'ai plusieurs choses à dire concernant cet article. Commençons par ce qui fait le plus mal : quelques erreurs à corriger (mais je pense que tu as omis ces choses pour rendre le bazar plus compréhensible).

    Tous les fichiers XML commencent de la même manière, que ce soit XHTML, RDF ou XSL :
    <?xml version="1.0" encoding="iso-8859-1"?> qui définit la version d'XML et l'encodage des caractères.

    Suivit de la première balise ouvrante, qui définit les espaces de noms :
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

    Ensuite, plus important : je ne vois pas la différence entre ton fichier XHTML et ton fichier RDF, si ce n'est que les noms des balises changent. En tout cas, il est très facile de passer de l'un à l'autre grâce à une feuille XSL (feuille de style). Donc, pour moi, les 2 fichiers sont équivalent, et c'est peut-être même possible d'afficher le fichier RDF correctement dans un navigateur grâce à une CSS, mais n'ayant jamais essayé, je ne suis pas sûr.

    Je crois que je commence à comprendre l'intérêt de RDF. C'est un format XML qui permet d'échanger les données entre différents services/programmes, les balises donnent un sens profond à l'information incluse, comme "auteur", "créateur"... ce qui n'existe pas dans le XHTML car les balises ont plutôt un sens seulement dans la présentation.

    Pour moi, à propos de cet exercice, je préfèrerai une autre solution : je stocke les informations dans des fichiers RDF au lieu de prendre un base de données. Si je veux faire apparaître les informations dans une page web, je transforme le fichier RDF en XHMTL via une feuille de style XSL, ou je parse le fichier RDF à l'aide de script PHP ou Perl pour aller chercher l'information et l'insérer dans la page. L'avantage majeur est que les informations restent (à moitié) lisibles et modifiables par le programmeur grâce à un simple éditeur de texte, et non cachées au milieu d'une énorme base de données. Et le jour où je passe au format XHTML2, j'ai juste à changer les scripts php/perl, l'information est toujours contenue dans les fichiers RDF.

    Pour les en-têtes et les

    pierre

    Profile picture for user pierre
    Vendredi 19 août 2005 - 12:18

    Pour les en-têtes et les déclarations, tu as vu juste, j'ai fait exprès de les omettre pour simplifier la lecture. J'ai d'ailleurs aussi fait l'omission la plus grave pour ce genre de démonstration : celles des attributs about. Mais bon, le soucis de clarté a prévalu.

    Afficher RDF avec CSS, j'ai essayé. Ça passe mais il n'y a pas le côté littéraire de XHTML.

    Au mieux, on peux avoir une liste de ce type :
    Titre : Fun House
    Créateur : Stooges
    Année : 1970
    etc.

    Ce qui remplace difficilement une phrase en XHTML comme :
    "L'album Fun House des Stoges est paru en 1970."

    Sinon, tu dis "Je crois que je commence à comprendre l'intérêt de RDF.". hé hé. Mon billet y est pour quelque chose ?

    Juste une remarque : le XHTML moderne ne définit pas la présentation mais la structure. Mais je suppose que tu le savais déjà et que tu as fait une erreur d'étourderie.

    La déclaration XML est

    Karl

    K
    la-grange.net
    Samedi 20 août 2005 - 06:35

    La déclaration XML est optionnelle si le document est codé en utf-8 ou utf-16.
    Il manque le doctype et l'espace de nom sinon.

    L'avantage du RDF par rapport au XML, c'est que RDF est un modèle de relations entre objets. Ces relations sont donc établis à priori. Je n'ai pas besoin de savoir si un élément imbriqué dans un autre établit une relation d'un certain type, car c'est exprimé dans le modèle RDF, ce qui n'est pas vrai en XML.

    Pierre, je reste sur ma

    Ultimateclem

    U
    ultimateclem.net
    Jeudi 1 septembre 2005 - 19:50

    Pierre, je reste sur ma position : je qualifie XHTML comme étant un moyen de faire de la présentation (je cherche les mots exacts, mais je ne trouve pas). Je m'explique : les balises de XHTML ne permettent de décrire les objets que comme étant un ensemble à présenter dans une page. On découpe la page en division, en titres, en paragraphes, en images, etc... Mais chaque élément, par exemple un paragraphe, n'a pas d'autre but que de faire de la présentation. Un paragraphe ne dit pas si c'est un auteur, un titre d'album ou même un éditeur.

    Par contre, RDF donne un sens (plus) profond aux informations du fichier : un auteur est un auteur. C'est cette idée que je voulais exprimer dans mon commentaire précédent.

    L'exemple que tu cites est facilement réalisable grâce à une feuille XSL (feuille de style) : c'est une technique qui permet de passer d'un fichier XML à un autre. XSL est vraiment un langage de programmation puissant qui permet de passer de RDF à XHTML et inversement. (Ou alors utiliser PHP/Perl pour extraire l'information du fichier RDF, mais je me répète).

    Ce problème de vocabulaire,

    pierre

    Profile picture for user pierre
    Vendredi 9 septembre 2005 - 17:00

    Ce problème de vocabulaire, c'est juste que ta définition du terme "présentation" n'est pas celle communément admise. Je vais donc citer la recommandation du W3C :

    "Le langage HTML trouve ses racines dans SGML qui a toujours été un langage destiné à la spécification d'un balisage de structures. Avec la maturité, les éléments et attributs de présentation HTML sont de plus en plus remplacés par d'autres mécanismes, en particulier les feuilles de styles. L'expérience montre que la séparation de la structure d'un document de sa présentation permet de réduire les coûts de diffusion vers un grand éventail de plates-formes, de médias, etc., et facilite la mise à jour des documents."

    Par contre, oui, le RDF donne plus d'informations car il donne du sens.

    Pour le XSL, peut-être, cette technologie ne m'intéresse pas vraiment... pour l'instant.

    Il n'est pas nécessaire de

    Vincent BARBEROT (Networkvb)

    V
    networkvb.com
    Mardi 19 février 2013 - 20:20

    Il n'est pas nécessaire de faire toutes ses opérations. Il existe le RDFa qui permet d'avoir une page présentable humainement parlant, tout en ayant du RDF. L'avantage de cette solution, c'est qu'elle permet de sauvegarder les données RDF directement en base de données en codant en PHP.

    Il est dommage dans l'article de ne pas dire que cela correspond au Web sémantique (Web 3.0) qui permet de créer le web de données (Web 4.0). Tout le monde connait Wikipédia, et bien cette grande encyclopédie est en plusieurs formats notamment en RDF et interrogeable avec DBPedia.

    Vincent,

    pierre

    Profile picture for user pierre
    Jeudi 22 janvier 2015 - 05:07

    Vincent,

    Sauf erreur de ma part, le RDFa a été annoncé le 17 mai 2006 quand le mécanisme a été désolidarisé du XHTML2.  Soit presque un an après ce billet.

    J'ai eu l'occasion d'écrire de nombreux billets sur ce sujet en 2010 :

    • Épisode 1 : Au commencement était l'URI
    • Épisode 2 : Des triplets partout
    • Épisode 3 : Soyez brefs
    • Épisode 4 : De vieilles connaissances (1)
    • Épisode 5 : De vieilles connaissances (2)
    • Épisode 6 : Organiser la connaissance
    • Épisode 7 : Contenants, contenus et auteurs
    • Épisode 8 : Succès et limites
    Le contenu de ce champ sera maintenu privé et ne sera pas affiché publiquement.
    À propos des formats de texte

    HTML simple

    • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
    • Les lignes et les paragraphes vont à la ligne automatiquement.