RDF est un modèle conceptuel permettant de
décrire des choses, simplement et sans ambiguité.
RDF est normalisé par le W3C. Ses applications visent initialement le web sémantique mais elles peuvent s'étendre plus largement à l'ingénierie des connaissances.
RDF n'est qu'un modèle abstrait au même titre, par exemple, que l'arithmétique. RDF permet de décrire toute chose selon un mécanisme particulièrement simple : il s'agit de phrases minimales, composées d'un sujet, d'un verbe et d'un complément ; on parle de
déclaration RDF (peut-être mieux traduit sous la forme de
proposition RDF). Par exemple :
Clément aime sa maman est une déclaration RDF possible. D'autres déclarations où "Clément" est sujet peuvent conduire, grâce à ce simple mécanisme, à une connaissance poussée de ce sujet. On remarquera la proximité de RDF avec le langage naturel. Cependant, RDF est un modèle formel, construit pour être efficace en toute circonstance ; là où les diverses langues peuvent se permettrent des implicites en fonction du contexte du discours, RDF ne peut se permettre la fantaisie d'omettre l'un des trois éléments de sa phrase. En français, par exemple, telle personne pourra vous exprimer en regardant le ciel : "il pleut" ; cette personne sous-entend naturellement qu'il pleut des gouttes d'eau à l'endroit où elle se situe. En RDF on exprimera alors explicitement toutes les composantes de la proposition : "Des gouttes d'eau [sujet] pleuvent [verbe] en ce lieu [complément]". Ce formalisme peut, dans certains cas, paraître un peu lourd, mais il est nécessaire pour analyser des propositions automatiquement et sans ambiguité. Grace à RDF, il devient possible d'écrire des programmes informatiques capables d'opérer des traitements sur des connaissances : indexation, classement, diffusion, formatage, comparaison, inférence, etc.
Description sommaire
Le principe de base
La spécification officielle définit ainsi le modèle RDF :
- 1. Il existe un ensemble appelé Ressources.
- 2. Il existe un ensemble appelé Littéraux.
- 3. Il existe un sous-ensemble de Ressources appelé Propriétés.
- 4. Il existe un ensemble appelé Déclarations, dont chaque élément est un triplet de la forme
- {pred, sub, obj}
- où pred est une propriété (membre de Propriétés), sub est une ressource (membre de Ressources), et obj est ou bien une ressource ou bien un littéral (membre de Littéraux).
Autrement dit,
RDF définit une ressource (URI) sous la forme d'un triplet : ressource, propriété, valeur. Formulé encore autrement, on peut dire qu'une chose est décrite sous la forme d'une phrase : sujet, verbe, complément. Ce modèle conceptuel permet de représenter un nombre considérable de choses.
Les nécessaires compléments
Pour autant, ce modèle n'épuise pas les possibilités de représentation des choses.
- La réification expliquée par un exemple : si nous avons le triplet <l'homme> <a vu> <l'ours>, comment représenter l'homme qui a vu l'homme qui a vu l'ours ? Il faut alors réifier, autrement dit référencer, le premier triplet dans le second triplet : <l'homme> <a vu> <<l'homme> <a vu> <l'ours>>.
- J'aime bien cette image, mais elle ne me semble pas tout à fait exacte pour décrire la réification :-) ... L'homme qui a vu l'homme qui a vu l'ours n'a pas nécessairement vu l'homme en train de voir l'ours. La relation est donc entre ces deux hommes alors que la réification est une relation entre une ressource et un triplet. C'est je pense un bon exemple pour illustrer les langages de requêtes RDF, mais il doit être adapté pour illustrer la réification. Si nous partons du triplet <l'homme> <voit> <l'ours>, la réification serait nécessaire pour que quelqu'un puisse témoingner de ce fait : <l'homme> <voit> <<l'homme> <voir> <l'ours>>. -- EricVanDerVlist
- La notion de collection de ressources ou de littéraux est également précisée dans RDF pour compléter son champ de représentation. La norme précise "RDF définit trois sortes de collections : listes ordonnées, appelées Séquences, listes non ordonnées, appelées Bags, et listes qui représentent des alternatives pour la valeur (unique) d'une propriété, appelée Alternatives".
Comment écrire du RDF ?
RDF peut être représenté de diverses manières. La syntaxe XML proposée dans sa spécification originelle, n'est qu'un exemple d'écriture du modèle.
1. On peut écrire, pour soit-même,
du RDF comme l'on parle : <
CharlesNepote> <est> <un homme>. Cette solution présente l'avantage de faciliter la prise en main du modèle, mais, n'étant pas standardisée, elle ne permet pas des échanges informatiques.
2. On peut utiliser
la syntaxe RDF/XML :
<?xml version="1.0" encoding="iso-8859-1"?>
<rdf:RDF
<rdf:Description
<rdf:type
</rdf:Description>
</rdf:RDF>
Cette solution, certe difficile à lire, présente l'avantage d'être en XML et donc de profiter des avantages de ce dernier, notamment de l'interopérabilité et de la profusion d'outils.
La syntaxe XML de RDF est améliorable quand elle est bien présentée.
[ Proposition d'une illustration, tirée de
http://peccatte.karefil.com/Software/Metadata.htm, peut être plus simple à comprendre. Vous pouvez supprimer ce commentaire et l'illustration s'ils ne conviennent pas :

--
DavidDelon ]
3. On peut utiliser
la syntaxe N3
Le même document avec la syntaxe n3.
# Base was: file:/Users/karl/Documents/2004/01/20/toto.rdf
#ENDS
La syntaxe N3 offre l'avantage d'être plus facile à lire et à écrire que la syntaxe XML. Elle convient bien pour l'écriture à la main, des outils traduisant ensuite cette syntaxe en XML. Le projet
CraoWiki:VocabulaireWikiSiteExchange (interwiki) [fr] utilise par exemple la syntaxe N3 pour formuler un
vocabulaire.
Qu'est-ce que RDF n'est pas ?
Nous proposons ici de rappeler, si besoin en était, ce que RDF n'est pas, malgré ce que l'on pourrait croire.
- RDF n'est pas un langage de programmation : il ne possède pas une syntaxe unique mais peut se traduire sous plusieurs formes.
- RDF n'est pas fait spécifiquement pour présenter des données : étant un modèle conceptuel très élémentaire, il pourrait le devenir, mais telle n'est pas sa destination première.
- RDF n'est pas un format de données.
Discussions
Ses applications visent initialement le web sémantique mais elles peuvent s'étendre plus largement à l'ingénierie des connaissances.
- Il me semble que RDF est plus générique que cela et que c'est un modèle permettant de décrire des graphes de la même manière que XML est un modèle permettant de décrire des arbres. -- EricVanDerVlist
- Oui sur le fond. Que va cependant comprendre le lecteur néophyte si on lui présente en introduction que RDF est un modèle pour décrire des graphes (et XML un modèle pour décrire des arbres) ? <lecteur_non-informaticien>RDF c'est pour afficher des graphes ? c'est pour décrire des graphes qui seront affichés dans le navigateur ? etc. XML est utilisé par les arboriculteurs ?</lecteur_non-informaticien> Je pense qu'un "modèle pour décrire des graphes", pour essentielle qu'elle soit, est une définition conceptuelle qui risque de faire peur, ou, pire de n'être pas comprise du lecteur néophyte. Il me paraît utile en revanche de la préciser plus en aval pour les lecteurs avancés, après une introduction très terre à terre et pragmatique (c'est pour cela que, dans le paragraphe suivant, j'utilise un vocabulaire volontairement simple). Moi même, la notion de "modèle pour décrire des graphes" ne me parle pas beaucoup. Je n'ai qu'une connaissance très très superficielle de ces concepts. Pour moi, au-delà de la définition "mathématique", je retiendrai une définition plus "métier" : RDF est avant tout un modèle permettant de décrire toute chose à l'aide d'un mécanisme très basique, très simple et très proche du langage naturel : la phrase simple (sujet, verbe, complément). Je te concède que ma phrase introductive est peut-être mal choisie et qu'il faut la préciser ("Ses applications visent initialement le web sémantique mais elles peuvent s'étendre plus largement à l'ingénierie des connaissances.") Peut-être peut-on la supprimer ? Peut-être peut-on relayer ta réflexion dans une partie consacrée aux utilisateurs plus avancés. -- CharlesNepote
- Le lecteur néophyte n'existe sans doute pas plus que le lecteur lambda :) ... Je veux dire par là qu'il n'y a a pas un mais des lecteurs néophytes et que si ton lecteur néophyte est prof de maths, la notion de graphe lui parlera peut-être plus que ton introduction! Ceci dit je comprend ton souci et ma remarque est plus générale : comme tu le soulignes, RDF est très générique, ce qui veut dire que des applications peuvent avoir intéret à utiliser RDF en dehors de son champ d'application initial et je ne sais pas comment qualifier son champ d'action mieux qu'en disant qu'il s'agit de sérialisation de graphes. RDF a, je pense, un rôle à jouer notamment dans tout ce qui est modélisation et aurait par exemple pu être utilisé pour définir XMI. Le résultat aurait, j'en suis convaincu, été plus simple que ce qui existe aujourd'hui. -- EricVanDerVlist
Il est difficile de faire le tour du potentiel informatique des modèles basés sur des triplets ; ils sont par exemple à la base des efficaces mécanismes d'intelligence artificielle comme les systèmes experts. Il est donc naturel de trouver ces triplets dans les standards du web : RDF, Topics Maps, voire XML, etc.
La norme RDF peut être vue comme une initiation ou une incitation à la pratique.
Chacun peut donc user et à titre privé abuser même des avantages de cette syntaxe élémentaire. Mais
la spécification RDF étant une importante restriction de ce potentiel il importe de se préoccuper dans l'usage et dans chaque cas s'il s'agit d'un triplet RDF valide ou d'un triplet d'un autre type. --
HerveTigier
- Oui sur l'essentiel. Ces réflexions ne peuvent cependant, à mon sens, faire partie de l'introduction, volontairement pragmatique. Elles gagneraient cependant à être développées dans une partie "prospective" ou "plus loin" ou "analyse avancées" ou encore "Critique de RDF" (ou comme vous voudrez). Quelques autres points : 1. Attention, d'un côté on dit que RDF n'est pas un language mais un modèle et de l'autre vous en parlez comme une "syntaxe élémentaire" (or, RDF peut avoir plusieurs syntaxes formelles). 2. Pourquoi dites-vous que RDF est une importante restriction du potentiel [des triplets]" ? Pouvez-vous donner des exemples de "triplets d'un autre type". -- CharlesNepote
Je sent bien qu'il faut ajouter une partie qui dépasse la simple description, mais j'ai encore du mal à voir l'étendue de ses contenus et donc son titre.
"RDF avancé" ? N'hésitez pas à faire des propositions. --
CharlesNepote
- Charles et Éric, je reprends les choses dans l'ordre et dans le détail :
1. J'ai lu d'abord votre page en la trouvant claire.
2. Ayant il y a un mois fait une lecture approndie de la nouvelle version de la spécification RDF , j'ai retrouvé dans votre page les mêmes sujets d'interrogation, accentués du fait que vous voulez légitimement faire court et simple.
3. J'allais reporter mon intervention quand Eric a avancé le mot générique et ainsi ayant fait le premier accroc à votre présentation, j'ai rédigé un paragraphe qui essayait de clarifier "à la source" de quoi il retournait.
4. A savoir que RDF conçu par le W3C n'est qu'une application restrictive des triplets; même si cela va de soi, RDF apporte quelque chose en plus ...
5. Tout peut se discuter et peu importe les termes employés ... Il faut avant tout de ne pas encourager des malentendus difficiles à dissiper.
6. Le fait primordial autour duquel tourne notre entretien est :
Le langage naturel et d'autres formalismes informatiques présentent une affinité avec une représentation en triptyque (A<>B<>C). Cela tient à la nature des choses et donc aussi à la nature de la pensée... Ce concept semble pouvoir être appelé
relation ternaire.
- 6.1 Ce fait justifie : "Il est difficile de faire le tour du potentiel informatique des modèles basés sur des triplets ; ils sont par exemple à la base des efficaces mécanismes d'intelligence artificielle comme les systèmes experts. Il est donc naturel de trouver ces triplets dans les standards du web : RDF, Topic Maps, voire XML, etc."
- 6.2 Le modèle RDF ayant adopté et adapté cette relation ternaire, il se trouve apte à tous les développements permis par ladite relation potentiellement. D'où je pense une partie de l'observation d'Eric et aussi d'ailleurs les bases de votre optimisme quand à l'utilité de cette norme. Cependant !
- 6.3 D'une part, il n'est guère question dans la spécification de voir en pratique les futurs usages étendus de la norme. (mais là n'est pas l'essentiel)
- 6.4 Surtout, en dépit du potentiel théorique évoqué ci-dessus, ce que vous rappelez comme "principe de base" et bien sûr conforme à la spécification est je le répète une importante restriction :
- 6.4.1 : Restriction ou plutôt restrictions : sujet et propriété sont des ressources dotées d'URI ; on concède seulement à l'objet d'être "libre".
- 6.4.2 : Importante ! non drastique : Cette condition aurait pu être optionnelle d'une part ; elle contraint très fortement la mise en oeuvre d'autre part (et ainsi en rebute sans doute plus d'un !). Tout cela est-il contestable ?
- 6.5 Reélargissons maintenant la question pour cette page importante, pour essayer de conclure : RDF est étroitement dépendant des URI ; ainsi RDF est porteur non pas de la totalité du potentiel de la relation ternaire, mais d'une partie seulement étant contraint par la nécessité des URI (ou alors le concept URI n'est pas appliqué ou pris en considération).
- 6.6 J'espère que vous convenez maintenant de cette dimension (qui n'est pas sans me gêner depuis un mois comme je vous l'ai dit) et alors qu'elle mérite d'être soulignée comme j'ai essayé de le faire en peu de mots. Je n'y vois pas du RDF avancé comme vous me le proposez : Je vous suis tout-à-fait quand vous incitez le lecteur à se familiariser avec l'usage des triplets en les démythifiant, mais je crois important de le prévenir que RDF définit radicalement un usage particulier pour le grand bien du web sémantique (même si nous sommes tous d'accord là-dessus, il garde un fort potentiel à peine évoqué (là ce sera du RDF avancé !)).
7. Relisant l'observation d'Eric, je rebondis sur son expression "champ d'application initial" en pensant que dans l'exposition des bases cette perspective risque de dissiper l'attention du néophyte ;-) (là-dessus je suis d'accord avec vous ayant lu une page de wikinet où vous vous adressez à de "grands enfants" ...).
J'ai été très long, mais je ne crois pas inutilement !
Ah oui, sans aller chercher ma documentation Prolog, pour d'autres exemples de relation ternaire, je parle simplement de "triplets d'un autre type" dès qu'ils ne respectent pas la spécification dans une de ses syntaxes : "web sémantique" "est" "un ambitieux projet" en est un !
J'ai pu mal comprendre ... et analyser le rôle exact de RDF me fait espérer jeter un pont solide entre ces normes et mes considérations abstraites... --[
HerveTigier]
Références
Les spécifications officielles de RDF
Cours, articles, tutoriels sur RDF
Applications, expérimentations, exemples de réalisations
Des outils pour les développeurs
- RDF converter [en] : pour convertir du RDF/XML, RDF/N3 ou RDF/NTriples dans l'un des deux autres formats.
- Classes PhP pour traiter du RDF [en]
- RDF API for PhP [en]
- Mozquery [en] (open source), générateur de fichier XML-RDF
- Ganesha [en], éditeur RDF/XML en Java ; logiciel libre sous licence GPL ; le logiciel n'est pas encore publié (03/06) mais devrait l'être dans les prochaines semaines.
Signalétique visuelle RDF
Comparaison entre RDF et les langues naturelles
- Objection à certaines remarques de Hervé Tigier
(Par un "néophyte matheux") --
ChristianB?
- 1 - Je trouve que parler des propriétés générales des relations ternaires à propos de RDF n'aide pas à la clarification et n'est pas vraiment exact. C'est plus simple d'en rester à l'idée que RDF utilise des triplets (terme clair aussi bien en informatique ou en math et même dans le langage courant). Se référer à une théorie des relations ternaires n'a vraiment de sens que dans une situation où on veut définir DES relations ternaires dotées de propriétés particulières intéressantes.
- 2 - Or il est expliqué clairement ailleurs que le RDF vise à définir des relations binaires (ou des graphes binaires ce qui est à peu près synonyme). Dans cette optique l'un des trois termes d'un triplet a un rôle particulier qui est nommer la relation ou le graphe dans lequel on veut placer les deux autres termes. Autrement dit ce terme relationnel indique quel sens on donne au fait de lier ces deux termes (ou quelle action on associe à ce fait) en fonction bien sûr de l'ensemble des autres déclarations (triplets) présentes dans l'environnement (la page et ce à quoi certains termes renvoient par les URI) et des mécanismes généraux qui caractérisent RDF.
- 3 - Le gain supposé de généraliser à tout va est illusoire. Si on oublie la spécificité de chaque terme d'un triplet (y compris les différences de caractérisation des sujets et des objets, les objets pouvant seul comporter des littéraux si j'ai bien compris) on ne fait pas nécessairement mieux, on fait autre chose de moins structuré, avec moins de règles communes (moins de normes) et donc aussi plus à redéfinir à chaque fois pour chaque système. A la limite s'il n'y a plus de convention commune, les systèmes ne pourront communiquer. La question est donc de savoir ce qu'on veut faire, comment et jusqu'à quel degré de généralité on peut aller de manière dominable avec les moyens et les concepts disponibles actuellement.
- On ne sait pas réaliser des systèmes informatiques aussi souples que nous, les humains (et de loin) notamment parce qu'on comprend encore très mal comment nous faisons pour construite des représentations et des raisonnements sur mesure selon les catégories de pb à traiter. A ces égard les triplets ne sont pas plus fondamentaux que d'autres structures simples et, par exemple, les grammaires génératives des linguistes se heurtent encore à la subtilité et la diversité de nos moyens d'expression, qui débordent toujours des modèles ayant beaucoup évolué depuis la premiètre tentative de Chomsky
- 4 - On doit donc décider (pour la norme RDF comme pour toute autre norme de traitement informatique) quelles réductions opérer pour arriver à ce que les objets à manipuler puissent tous êtres représentés en vus d'un traitement homogène (selon les mêmes règles générales, conçues pour permettre de définir des règles plus spécifiques, etc.). C'est finalement nous qui devons décider des limites possibles, de la finalité et du sens car l'ordinateur ne sait pas le faire et parce qu'il est à notre service, ah mais ! :-)
- Dire pourquoi le RDF est comme il est (ou pourquoi il devrait être modifié), c'est d'abord dire : je veux qu'on puisse faire telle et telle chose et voilà comment le RDF permet de le faire.
- S'il y a trop de buts divergents, une norme unique ne suffira peut-être pas dans l'immédiat.