RDF

(Ce texte est la suite de l’article « Les métadonnées ».)

Introduction au RDF

Le Resource Description Framework (RDF) est un langage pour les métadonnées sur le web, c’est-à-dire un langage pour énoncer ce que l’on sait sur quelque chose ou quelqu’un. Par exemple, le RDF est idéal pour indiquer qui est l’auteur d’un document ou quel est le titre du document. De plus, le langage RDF est conçu pour être à la fois simple (tout étant relatif), suffisamment puissant pour « tout » décrire, et facilement utilisable par des logiciels. Nous présentons dans un premier temps les concepts de base ; ensuite, nous verrons une application intéressante : la norme Dublin Core. On associe souvent le RDF au XML parce qu’on représente parfois le RDF en XML, mais il n’y a pas de lien direct entre les deux concepts.

One can use RDF to model any type of knowledge without having to use any centrally approved notions. (Tim Bray)

Le RDF a été normalisé en 1999 (par une recommandation W3C) et il résulte d’un effort commun de plusieurs experts. Le RDF se veut suffisamment riche pour représenter de façon formelle la connaissance tout en étant simple à utiliser. Une des prémisses du format RDF est que tout peut être énoncé en utilisant des triplets : sujet, verbe et objet. Notez que certains auteurs utiliseront le terme prédicat au lieu du terme verbe. Par exemple, pour décrire « Jean », nous dirons que « Jean est un garçon » et nous décomposerons ainsi cette affirmation (ou l’afficherons dans un tableau) :

Sujet Verbe Objet
Jean est garçon

Nous ne faisons pas de la grammaire, mais bien de la représentation : le verbe n’a pas à être un verbe de la langue française ou anglaise. L’important est que le verbe soit un lien, une relation, entre une première chose (sujet) et une seconde (objet). Par exemple, si nous voulons affirmer que le titre de la page web http://www.daniel-lemire.com/ est « Daniel Lemire’s blog », nous pouvons le faire à l’aide du tableau suivant :

Sujet Verbe Objet
http://www.daniel-lemire.com/ titre Daniel Lemire’s blog

Ces exemples de représentation ne sont pas encore des exemples de données « RDF », car en RDF, le verbe doit être un URI (Uniform Resource Identifier). Le RDF, tout comme le XML, est fait pour être traité par des machines et les machines sont bêtes. Elles ne savent pas ce que signifie le mot « titre » dans le tableau précédent. Est-ce un titre à la Bourse, le titre d’une fonction (comme docteur) ou le titre d’une page ? Pour régler ce problème, il faut utiliser des URI, c’est-à-dire des adresses fictives qui identifient une ressource Internet.

Un URI contient un protocole (http, mailto, ftp, etc.), un domaine comme « fichiers.com » et un chemin comme « /mesfichiers/index.html ». Dans ce cours, nous adoptons la norme RFC2396 et nous permettons que les URI comportent le symbole du dièse (#), comme « ftp://fichiers.com#maman » : tout ce qui apparaît après ce symbole forme le « fragment ». Notons que les accents ne peuvent pas être utilisés dans un URI ; ainsi, « http://école.com » n’est pas un URI valable. Un protocole particulier, « urn », est parfois utilisé dans les URI. Par exemple, pour identifier un livre par son code ISBN, nous pouvons utiliser l’URI « urn :ISBN:0-123-12345-1 ».

Toutes les adresses URL (Uniform Resource Locator) utilisées sur le web, comme « http://www.google.com », « mailto:bill@microsoft.com », « ftp://fichiers.com », ainsi que d’autres adresses ayant la même syntaxe, mais qui ne pointent pas nécessairement vers une ressource Internet existante, sont des exemples d’URI. Ainsi, si l’on vous donne l’URI « http://www.mydomain.com/daniel », il n’est pas certain qu’une page web se trouve à cette adresse. Le seul but des URI est d’identifier des ressources. Le mot ressource a ici un sens très large : tout peut être considéré comme une ressource. Par exemple, pour identifier l’humoriste « Daniel Lemire », nous pouvons adopter l’URI « http://www.daniellemire.com/luimeme » ; ce sera un bon choix si l’humoriste en question est propriétaire du nom de domaine (daniellemire.com) et compte le garder longtemps. Par ailleurs, on pourra utiliser l’URI http://www.daniel-lemire.com/fr/ pour identifier le professeur « Daniel Lemire » qui est responsable de ce cours. Dans ce dernier exemple, l’URI est aussi une adresse URL qui pointe vers la page personnelle du professeur. Nous voyons immédiatement l’avantage des URI : alors que l’ordinateur ne saura pas toujours faire la différence entre « Daniel Lemire » l’humoriste et « Daniel Lemire » le professeur, nous pourrons, en utilisant des URI, analyser automatiquement l’information, à la condition que tous utilisent le même URI pour représenter la même ressource. Pour distinguer les individus, nous pourrions utiliser leur numéro d’assurance sociale, etc. Mais comme le concept de ressource est général, il faut aussi pouvoir distinguer les différentes significations que peut prendre le mot « titre », et ainsi de suite. La langue française (ou anglaise) permet à un mot d’avoir plusieurs sens, alors que chaque URI représente un concept et un concept seulement.

Supposons maintenant que nous voulions décrire l’affirmation suivante en RDF : « Il y a une personne appelée Daniel Lemire dont l’adresse de courriel est dlemire@teluq.uquebec.ca et qui est professeur. » Cette phrase peut être très difficile à analyser par un ordinateur. Commençons par la décomposer en affirmations simples : sujet/verbe/objet. D’abord, pour qu’il n’y ait pas de confusion, nous allons identifier l’individu s’appelant Daniel Lemire par l’URI « http://www.daniel-lemire.com/fr/ ».
 http://www.daniel-lemire.com/fr/ est une personne.
 http://www.daniel-lemire.com/fr/ s’appelle Daniel Lemire.
 http://www.daniel-lemire.com/fr/ peut être joint par courriel à dlemire@teluq.uquebec.ca.
 http://www.daniel-lemire.com/fr/ a le titre de professeur.

Rappelons ici que tous les verbes et tous les sujets doivent être identifiés par des URI. En ce qui nous concerne, il n’y a qu’un seul sujet identifié par « http://www.daniel-lemire.com/fr/ ». Il reste à trouver des URI pour les verbes et certains objets. Prenons d’abord la première affirmation : « http://www.daniel-lemire.com/fr/ est une personne ». Le verbe « être », dans cette phrase, associe la classe « personne » (au même sens que dans la programmation orientée objet) à la ressource « http://www.daniel-lemire.com/fr/ ». Nous pourrions inventer un URI ayant ce sens, mais il en existe déjà un : « http://www.w3.org/1999/02/22-rdf-syntax-ns#type ». Chaque fois que nous rencontrons cet URI, cela signifie qu’une ressource appartient à une certaine classe. Quant à l’objet « personne », il existe au moins un URI pour noter la classe « personne », soit « http://www.w3.org/2000/10/swap/pim/contact#Person ». Nous verrons que dans d’autres contextes, d’autres URI peuvent être utilisés avec un sens similaire.

Finalement, l’affirmation « http://www.daniel-lemire.com/fr/ est une personne » peut s’écrire comme ceci :

Sujet http://www.daniel-lemire.com/fr/
Verbe http://www.w3.org/1999/02/22-rdf-syntax-ns#type
Objet http://www.w3.org/2000/10/swap/pim/contact#Person

Passons maintenant à la deuxième affirmation : « http://www.daniel-lemire.com/fr/ s’appelle Daniel Lemire ». Le verbe « s’appelle » peut être identifié par l’URI « http://www.w3.org/2000/10/swap/pim/contact#fullName ». Encore une fois, nous aurions pu créer notre propre URI, pour autant que nous utilisions toujours le même avec la même signification. L’objet, « Daniel Lemire », n’a pas de signification particulière et n’est qu’une chaîne de caractères ; nous ne sommes donc pas tenus d’utiliser un URI. Cela n’est vrai que pour les objets : les sujets et les verbes doivent toujours être représentés par des URI en RDF. Nous obtenons le tableau suivant :

Sujet http://www.daniel-lemire.com/fr/
Verbe http://www.w3.org/2000/10/swap/pim/contact#fullName
Objet "Daniel Lemire"

Nous notons les chaînes de caractères avec les guillemets : alors que « http://www.unuri.org » est un URI, « "http://www.unuri.org" » est une chaîne de caractères.

Dans l’affirmation « http://www.daniel-lemire.com/fr/ peut être joint par courriel à dlemire@teluq.uquebec.ca », nous pouvons remplacer le verbe par « http://www.w3.org/2000/10/swap/pim/contact#mailbox ». Quant à l’objet « dlemire@teluq.uquebec.ca », c’est une adresse de courriel ; afin qu’un ordinateur puisse comprendre qu’il s’agit d’une adresse de courriel et non d’une chaîne de caractères, nous utiliserons l’URL « mailto:dlemire@teluq.uquebec.ca » pour le représenter. Nous avons donc le tableau suivant :

Sujet http://www.daniel-lemire.com/fr/
Verbe http://www.w3.org/2000/10/swap/pim/contact#mailbox
Objet mailto:dlemire@teluq.uquebec.ca

L’affirmation « http://www.daniel-lemire.com/fr/ a le titre de professeur » se traite de la même manière, de telle sorte que nous obtenons finalement le tableau suivant :

Sujet http://www.daniel-lemire.com/fr/
Verbe http://www.w3.org/1999/02/22-rdf-syntax-ns#type
Objet http://www.w3.org/2000/10/swap/pim/contact#Person
Sujet http://www.daniel-lemire.com/fr/
Verbe http://www.w3.org/2000/10/swap/pim/contact#fullName
Objet "Daniel Lemire"
Sujet http://www.daniel-lemire.com/fr/
Verbe http://www.w3.org/2000/10/swap/pim/contact#mailbox
Objet mailto:dlemire@teluq.uquebec.ca
Sujet http://www.daniel-lemire.com/fr/
Verbe http://www.w3.org/2000/10/swap/pim/contact#personalTitle
Objet "Professeur"

Précisons qu’en RDF, l’ordre des affirmations est sans importance. Ainsi, l’ordre des rangées dans le tableau est donc sans importance.

Ce tableau est une description formelle de notre phrase d’origine « Il y a une personne appelée Daniel Lemire dont l’adresse de courriel est dlemire@teluq.uquebec.ca et qui est professeur. » ; cette description peut être traitée par un ordinateur.

On peut aussi représenter le tableau graphiquement.

Diagramme RDF

Nous pouvons résumer le RDF comme ceci :
 Le RDF peut être utilisé pour représenter tout objet, tant un site web qu’un individu.
 Le RDF peut être traité par une machine.
 Le RDF est composé de triplets : sujet/verbe/objet.
 Le sujet est toujours identifié par un URI ; mais dans certains cas, on peut omettre l’URI et alors, un URI factice sera généré dynamiquement.
 Le verbe est toujours identifié par un URI, sans aucune exception.
 L’objet est soit un URI, soit une valeur explicite (une chaîne de caractères, par exemple).
 Le RDF peut être représenté en XML.

Exemple : la norme Dublin Core

À titre d’exemple, nous allons étudier plus précisément la norme Dublin Core. Il s’agit sans doute de l’utilisation la plus connue et la plus répandue du RDF. La norme Dublin Core est assez simple et vise à décrire les travaux rendus disponibles sur le web (auteur, titre, date, etc.). Cette norme s’inspire de la bibliothéconomie.

La norme Dublin Core définit plusieurs « verbes » (au sein du RDF) ; on peut en consulter la liste à l’adresse http://dublincore.org/documents/dcmi-terms/ (en anglais). Cette norme a été publiée pour la première fois en juillet 1999.

Le préfixe de la norme Dublin Core est « http://purl.org/dc/elements/1.1/», du moins pour les éléments de base présentés ici. Voici les URI complets et leur signification :

 http://purl.org/dc/elements/1.1/creator: Personne ou organisme qui est l’auteur du travail.
 http://purl.org/dc/elements/1.1/contributor: Personne ou organisme qui a contribué à un travail, mais sans en être l’auteur.
 http://purl.org/dc/elements/1.1/coverage: Lieu et période correspondant au travail.
 http://purl.org/dc/elements/1.1/date: Date associée au travail, généralement sous la forme AAAA-MM-JJ. Il peut s’agir de la date de publication, de création ou de la dernière révision.
 http://purl.org/dc/elements/1.1/description: Brève description du travail.
 http://purl.org/dc/elements/1.1/format: Format sous lequel est publié le travail. Si le travail est publié en HTML, alors on utilisera souvent « text/html » pour décrire le format.
 http://purl.org/dc/elements/1.1/identifier: Code ou URI qui correspond de façon unique au travail. Si un travail est publié à une adresse web, on peut utiliser cette adresse comme URI ; si c’est un livre avec un ISBN, on peut utiliser un URI de la forme « urn:ISBN:0-123-12345-1 ».
 http://purl.org/dc/elements/1.1/language: Code ISO-639/ISO-3166 décrivant le travail. Si le travail est publié en français, on peut utiliser « fr-CA » ; sinon, en anglais, ce serait « en-CA » (CA signifie Canada).
 http://purl.org/dc/elements/1.1/publisher: Organisme responsable de la publication du travail.
 http://purl.org/dc/elements/1.1/relation: Ressource liée au travail. Par exemple, pour un travail fait en classe, on peut établir un lien avec l’exposé du travail.
 http://purl.org/dc/elements/1.1/rights: Contient souvent une affirmation permettant de savoir qui est propriétaire du travail (détenteur du droit d’auteur).
 http://purl.org/dc/elements/1.1/source: Résumé du travail de quelqu’un d’autre. Cet URI permet de pointer vers la source originale.
 http://purl.org/dc/elements/1.1/subject: Généralement, une liste de mots-clés.
 http://purl.org/dc/elements/1.1/title: Titre du travail.
 http://purl.org/dc/elements/1.1/type: Type de la ressource (texte, image, etc.). Notons que le « type » est différent du « format ». Par exemple, une image peut être en format Jpeg ou Gif, un texte peut être en format Word ou ASCII.

Voyons comment nous pouvons décrire ce texte que vous êtes en train de lire, en utilisant la norme Dublin Core. Attribuons-lui l’URI « http://www.uquebec.ca/rdfexemples.html».

Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/creator
Objet http://www.daniel-lemire.com/fr/
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/date
Objet "2004-07-27"
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/title
Objet "Introduction au RDF"
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/type
Objet "text"
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/Language
Objet "fr-CA"
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/subject
Objet "XML, RDF, Dublin Core"
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/rights
Objet "Copyright 2005 Daniel Lemire"
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/description
Objet "Un document comprenant des exemples d’utilisation du RDF en gestion des connaissances."
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/format
Objet "text/html"
Sujet http://www.uquebec.ca/rdfexemples.html
Verbe http://purl.org/dc/elements/1.1/identifier
Objet http://www.uquebec.ca/rdfexemples.html

Il existe des applications plus sophistiquées de la norme Dublin Core, mais nous avons ici l’essentiel. Vous pouvez dès maintenant cataloguer les ressources d’une entreprise en utilisant simplement ce que nous venons de présenter. Comme la norme est utilisée partout dans le monde, il sera possible d’échanger ces descriptions ou d’utiliser des logiciels communs pour le traitement ou l’affichage des informations.

Le gouvernement du Canada adopte la norme Dublin Core dans ses sites web. Par exemple, la page http://canada.gc.ca/main_f.html contient les métadonnées suivantes :

<meta name="dc.title" content="Introduction au site Web officiel du gouvernement du Canada | Site du Canada">
<meta name="dc.creator" content="Gouvernement du Canada, Travaux publics et Services gouvernementaux Canada, Direction des services d'information du gouvernement, Site du Canada">
<meta name="dc.language" http-equiv="ISO639-2" content="fre">
<meta name="dc.contributor" content="Équipe du site du Canada">

Une norme similaire à Dublin Core qui est aussi souvent utilisée est Open Graph. On remplace alors "dc.title" par "og:title", etc.

Pour obtenir plus d’informations, voir l’article RDF dans Wikipédia.