Les petites cases

RDF pour les nuls

Préambule du 27 août 2007 : à la suite d'un bon billet de David sur RDF, je voulais ajouter en commentaire la référence vers ce billet que j'avais écrit le 8 septembre 2006 ; je me suis alors aperçu qu'il n'avait pas été récupéré lors de l'import de mon ancien blog. Comme j'avais un peu la flemme de rechercher dans mes archives persos, mon sauveur se nomme Internet Archive dont le crawler salutaire avait indexé cette page. Qu'il en soit remercié. Le voici donc republié en l'état, en espérant que les commentateurs de l'époque m'excuseront le fait que je ne récupère pas leur prose ;-).

Pour vous faire apprécier pleinement toute la substantifique moelle du prochain billet, je me suis dit qu'il serait peut-être utile de réexpliquer le principe général de RDF1. Je voulais rassembler toute cela en un billet, mais ça faisait un peu long, alors j'ai séparé les choses. Donc, ceux qui ont déjà tout compris, vous pouvez attendre sagement le prochain billet (promis, il devrait arriver dans la foulée), pour ceux qui voudraient une piqûre de rappel voire plus, je vous invite à lire cet essai d'explication pédagogique de RDF (vous me direz en commentaire si ça vous paraît clair).

RDF n'est pas un langage de programmation, ni même un langage à balises permettant de structurer une information. C'est un modèle de description des données, c'est d'ailleurs le sens de l'acronyme RDF : Ressource description framework. Pour communiquer entre humains, nous disposons d'un langage que l'on qualifie de « naturel » pour le différencier avec les langages informatiques. RDF, c'est un peu l'équivalent de notre langage naturel pour permettre à des machines de communiquer entre elles.

Une grammaire

En langage naturel, pour décrire les données/choses/objets/concepts... on dispose des phrases qui sont composées de mots eux-mêmes constitués par l'agencement de sons et organisés selon une grammaire (ouf !!). En RDF, ce sont les assertions, appelés aussi déclaration dans la norme du W3C, qui jouent le rôle des phrase et qui possèdent une grammaire très simple : Sujet Prédicat Objet. En clair, faire du RDF consiste, en fait, « simplement » à écrire l'équivalent de phrases simples pour que des machines (qui sont somme toute stupides) puissent se parler et échanger des données de façon intelligente. En multipliant ces phrases, on agrège de l'information et on finit par créer des connaissances. Ces déclarations peuvent être représentées sous la forme d'un graphe. Par conséquent, le RDF est un modèle de description de données sous forme de graphes. Donc premier élément important : des phrases simples dites déclarations (statement dans la langue de Shakespeare).

Évidemment, il n'est pas possible d'exprimer toutes les informations avec des phrases simples. C'est pourquoi il existe en RDF des méthodes pour construire l'équivalent de phrases plus complexes. Mais dans le cadre de cette explication, je vous propose d'en rester là.

Une syntaxe

Pour inscrire le langage naturel sur un support en vue de son partage de façon asynchrone, nous disposons de l'écriture constituant un système graphique d'expression du langage. De la même façon, pour une machine, il est utile d'exprimer les déclarations d'une façon qu'il sera capable de comprendre. Ainsi, on inscrit les déclarations/graphes RDF selon un système graphique, une syntaxe particulière. En fait, on peut même les écrire selon plusieurs syntaxes (un peu comme si on avait plusieurs types d'alphabets différents). Il y a quatre syntaxes : XML, N3, N-triples, Turtle.

Un référentiel commun

Pour pouvoir communiquer et se comprendre, deux humains doivent utiliser un référentiel commun qui est exprimé dans un dictionnaire. C'est le même principe en RDF, sauf qu'en lieu et place du dictionnaire, nous disposons des URI qui peuvent être définis dans des vocabulaires RDF, d'autres fichiers RDF comme des ontologies ou tout simplement une page Web. Par exemple, le vocabulaire FOAF définit le concept de personne. Si, dans un fichier RDF, le sujet décrit est de type personne, je vais le définir comme tel en utilisant l'URI : http://xmlns.com/foaf/0.1/Person.

Deux types d'objets en RDF utilisent les URIs :

  1. Une ressource qui correspond à toutes choses décrites par une expression RDF ;

  2. une propriété qui est un aspect, une caractéristique, un attribut, ou une relation spécifique utilisée pour décrire une ressource, en clair le prédicat

Exemple : « http://lespetitescases.net (ressource/sujet) http://purl.org/dc/elements/1.1/title (propriété/prédicat) 'Les petites cases'(objet) » est une déclaration RDF qui se traduit en langage naturel par : « le site Web dont l'adresse est http://lespetitescases.net a pour titre les Petites cases ».

Comme on le voit à travers cet exemple, il est possible d'indiquer l'objet d'une déclaration par une simple chaîne de caractère. On parle alors de litéral. Ce genre de propriété est appelé propriété de type de données. Mais, il est aussi possible de faire référence en objet à une ressource, on parle alors de propriété d'objet.

Pour finir, voici un exemple compet2 :

Je cherche à décrire ce site Web en RDF en utilisant la syntaxe XML :

<?xml version="1.0"?>

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

xmlns:dc="http://purl.org/dc/elements/1.1/">

<rdf:Description rdf:about="http://www.lespetitescases.net/">

<dc:title>Les petites cases</dc:title>

<dc:author>Gautier Poupeau</dc:author>

<dc:subject>Web sémantique</dc:subject>

<dc:subject>XML</dc:subject>

<dc:subject>Digital humanities</dc:subject>

</rdf:Description>

</rdf:RDF>

Voici la liste des assertions

SubjectPredicateObject
http://www.lespetitescases.net/ http://purl.org/dc/elements/1.1/title "Les petites cases"
http://www.lespetitescases.net/ http://purl.org/dc/elements/1.1/author "Gautier Poupeau"
http://www.lespetitescases.net/ http://purl.org/dc/elements/1.1/subject "Web sémantique"
http://www.lespetitescases.net/ http://purl.org/dc/elements/1.1/subject "XML"
http://www.lespetitescases.net/ http://purl.org/dc/elements/1.1/subject "Digital humanities"

J'aurais bien aimé vous proposer aussi le graphe de ces déclarations mais le RDF validator qui est censé le générer automatiquement est parfois un peu capricieux...

Quelques notes en passant

1 Zid, tu constateras avec plaisir que je suis tes conseils, je me répète ;-)

2 Cet exemple est inspiré de la présentation des résultats de le validateur RDF du W3C.

RDF Causeries — 

Commentaires

Tiens, on se disait il y a pas longtemps avec un ami qu'on trouvait vraiment cette collection hideuse et insultante, et que l'on était prêt à faire des trucs pour les débutants, mais pas des trucs pour les nuls. Je ne vais donc pas lire ton billet ;-).
Je ne me lasse pas de tes notes sur le RDF et les ontologies. Même si je ne comprends pas encore tout dans les détails! Continue à te répéter (je n'avais pas commenté lors de la première note, j'en profite ici!)!