RDF en cinquante mots
D'accord, peut-être qu'il y a un peu plus de cinquante mots, mais les points-clés sont plutôt simples (et en gras pour vous les dirigeants qui voulez juste aller à l'essentiel). Le Resource Description Framework (NdT : « Cadre de description de ressources »), ou « RDF », c'est en fait deux choses.
D'abord, RDF est un modèle à base de graphes pour décrire les ressources Internet (comme les pages web ou les emails), et comment ces ressources sont liées les unes aux autres.
Mais qu'est-ce que cela signifie réellement ? Pour un développeur, cela veut dire que le modèle de donnée RDF (le « graphe ») peut être utilisé comme mécanisme pour intégrer et organiser les ressources Internet.
Prenons un exemple : les marque-pages. Actuellement, la plupart des navigateurs vous permettent d'organiser hiérarchiquement vos marque-pages dans des dossiers. Chaque marque-page est un pointeur vers une page web, appelé URI (Uniform Resource Identifier, ou identifiant uniforme de ressource).
Mais une page Web n’est qu’un type de ressource Internet. Il en existe des tonnes d'autres, notamment des messages électroniques, des articles Reddit, des flux RSS et des résultats de recherche de votre robot d'exploration Web préféré, pour n'en nommer que quelques-uns. Et fondamentalement, il n'y a aucune raison pour que vous ne puissiez pas les traiter comme des « signets ». ainsi, en les regroupant dans des dossiers à votre guise, ou peut-être même en créant des dossiers « intelligents ». des dossiers qui, lorsque vous les ouvrez, génèrent dynamiquement leur contenu en exécutant une recherche commune que vous définissez.
Et un marque-page peut vraiment avoir des propriétés arbitraires associées : vous pourriez vouloir inventer votre propre schéma « classification » pour un marque-page codé à la façon « cool » Macintosh. Ou vous pourriez vouloir relier un marque-page à un autre marque-page, ou le garder dans plusieurs « dossiers » à la fois.
Le graphe RDF fournit un modèle de données parfait sur lequel construire un service de marque-pages « universel » comme décrit ci-dessus : le graphe peut contenir des pointeurs vers des ressources arbitraires et les regrouper de n'importe quelle manière que vous pouvez imaginer.
Mais attendez, il y a plus…
Ensuite, RDF est une syntaxe de sérialisation. Cette syntaxe permet aux modèle à base de graphes d'être transmis entre « agents ».
D'accord, qu'est-ce que ça peut bien vouloir dire ? Fondamentalement, cela signifie que les parties du modèle de données RDF peuvent être communiquées au-delà des frontières du réseau, et les contenus du graphe peuvent changer dynamiquement lorsque l'information provient d'un service distant.
Reprenons l'exemple des marque-pages. Disons que l'un de mes « dossiers » de marque-pages est réellement un pointeur vers ma boîte de réception : lorsque j'ouvre ce dossier, voilà! Tous les messages que j'ai reçus dans la nuit apparaissent.
Mais comment cela marche-t-il ? Le dossier « boîte de réception » était en fait un simple pointeur vers une ressource Internet qui contient plus de RDF qui étendent le graphe. Cette « ressource Internet » était une URI qui pointait vers un script CGI (disons, <code>http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&folder=inbox</code>). Le script CGI génère en fait du RDF sérialisé, qui est simplement un moyen de formater un graphe en XML :
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:sm="http://www.mozilla.org/smart-mail/schema#"
xmlns:schema="https://schema.org/">
<rdf:Description rdf:nodeID="n-101"
about="http://www.mozilla.org/smart-mail/get-mail.cgi?user=waterson&folder=inbox">
<sm:message id="4025293">
<sm:recipient>Chris Waterson "waterson@google.com"</sm:recipient>
<sm:sender>Aunt Helga "helga@ancestry.net"</sm:sender>
<sm:received-by>x-wing.mcom.com</sm:received-by>
<sm:subject>Great recipe for Banana Bread</sm:subject>
<sm:body>
<rdf:Description rdf:nodeID="n-201">
<schema:name>Aunt Helga's World Famous Banana Bread</schema:name>
<schema:recipeInstructions>
Preheat the oven to 350 degrees. Mix in the ingredients in a bowl.
Add the flour last.
Pour the mixture into a loaf pan and bake for one hour.
</schema:recipeInstructions>
<schema:recipeIngredient>3 or 4 ripe bananas, smashed.</schema:recipeIngredient>
<schema:recipeIngredient>1 egg</schema:recipeIngredient>
<schema:recipeIngredient>3/4 cup of sugar</schema:recipeIngredient>
<schema:suitableForDiet>http://schema.org/LowFatDiet</schema:suitableForDiet>
<schema:cookTime>PT1H</schema:cookTime>
<schema:recipeYield>1 loaf</schema:recipeYield>
<schema:prepTime>PT1H</schema:prepTime>
<rdf:type rdf:resource="http://schema.org/Recipe"/>
<schema:nutrition rdf:nodeID="n-202"/>
</rdf:Description>
<rdf:Description rdf:nodeID="n-301">
<rdf:type rdf:resource="http://schema.org/NutritionInformation"/>
<schema:fatContent>9 grams fat</schema:fatContent>
<schema:calories>240 calories</schema:calories>
</rdf:Description>
</sm:body>
</sm:message>
</rdf:Description>
</rdf:RDF>
À la réception de la monstruosité ci-dessus, le moteur RDF incorpore le RDF à la bonne place dans le graphe, et le contrôle arbre qui implémente réellement l'UI dans le marque-page est informé qu'il devrait commencer à dessiner des icônes pour le dernier message sur la purée de patate douce de Tante Helga.