RDF

Fort des premières réflexions et expériences, il est maintenant possible pour moi de regarder ce qui se fait déjà. On trouve sur Wikipedia des articles intéressants sur le web sémantique, le Web 3.0, les métadonnées, le web des données et l’Internet des objets.

L’ensemble est chapeauté par le web sémantique et sa pile (Semantic Web Stack). On parle aussi de Web 3.0 bien que ce terme semble être un terme commercial fourre-tout comme le fut le Web 2.0.

Le point centrale semble être le Resource Description Framework (RDF). Ce n’est pas un format de données ou protocole d’échange, mais plutôt un guide de fonctionnement des relations entre différentes URI. Différents protocoles se chargent de décrire les implémentations pratiques. Le XML via RDF/XML est un format d’échange de ces relations, tout comme N3, Turtle, RDFa ou FOAF. Le XML et l’URI sont marqués comme des références, c’est l’héritage du W3C.

Semantic Web Stack
Semantic Web Stack, la pile du web sémantique (source Wikipedia)

Tout ça c’est bien beau, avec plein de schémas, de liens entre les articles, de termes pompeux, d’explications vagues… mais à quoi ça sert?
Ah rien en fait! Non, quand même pas :-)
On trouve surtout des informations plus intéressantes et intelligibles sur les sites de référence des différents protocoles.

Des syntaxes variées

Prenons la syntaxe FOAF. Elle est dédiée à la gestion de personnes, ce qui lui fait perdre subitement beaucoup d’intérêt. Cependant, moyennant une extension du schéma des propriétés, une machine peut tout à fait être gérée comme une personne. Mais il me semble que les documents sont attachés à des personnes. Et donc il difficile de gérer des objets. Un document intéressant à lire pour commencer est le FOAF Vocabulary Specification. FOAF est un sous-ensemble de RDFS et OWL (cf index.rdf).

On ne s’attardera pas sur RDFS et OWL qui sont plus généralistes. Ce sont des schémas XML, des bibliothèques de descriptions pour des objets XML, de représentation des connaissances. Cela permet quand même de manipuler des objets divers et pas seulement des personnes. Si le XML permet de hiérarchiser les données et les attributs, le nombre de niveaux est limité par le simple besoin d’exprimer des triplets, trinôme d’attribut. On y reviendra.

RDFa est en gros une extension de la syntaxe pour le html. Il permet de représenter le contenu d’une page web avec la logique du RDF. Il na pas d’intérêt en dehors des pages web.

La logique sous-jacente

RDF décrit la logique qui articule l’ensemble. Mais ce n’est pas un langage à proprement parler. Il nécessite donc d’autres langages comme XML pour pouvoir être utilisé.

Le RDF traite de triplets pour décrire les relations entre des URI et/ou des valeurs. On distingue dans le triplet RDF les éléments sujet, prédicat et objet. Cela peut prendre plusieurs formes comme par exemple (sujet, prédicat, objet) ou prédicat(sujet, objet).

Dans le langage du réseau sémantique, c’est la description d’un arc entre deux nÅ“uds. Ces nÅ“uds pouvant être des constantes d’objets ou des constantes de concepts, soit en clair des données ou des descriptions des données. L’arc est toujours à sens unique.

Et sans XML ?

La syntaxe Notation3 (N3) est une autre façon de noter un triplet RDF. Contrairement à ce que l’on a vu jusque là, et en sens contraire du vent soufflé par le W3C, il n’utilise pas le langage XML. Le XML est en effet très généraliste, mais il est de fait très verbeux (faible entropie) et souvent assez difficile à lire par un être humain. Le XML fait référence à un schéma et celui-ci est indispensable pour traduire les objets du code XML.
N3 se rapproche dans sa forme sur un langage plus naturel pour les humains (ou tout du moins pour les occidentaux). Le triplet est noté sujet verbe objet et se termine par un point. Les URL sont entourées par des symboles <inférieur et supérieur>. Seul l’objet peut être remplacé par une valeur simple. Les sujet et verbe sont des URI.
Il dispose en plus de quelques raccourcis dans sa rédaction comme la possibilité de ne pas répéter le sujet ou le sujet et le verbe. Cependant, cela induit la nécessité d’une reconstruction du triplet lors de son exploitation, et empêche la signature triplet par triplet.

La syntaxe Turtle est un sous-ensemble de N3, et donc dispose des mêmes caractéristiques.

La syntaxe du XML est puissante et hiérarchisée. Elle est monobloc et un fichier XML doit être traité intégralement, ce fichier ne peut être découpé facilement. Et enfin XML fait référence à une URL qui définit la façon de traiter le document. Si sa syntaxe de base est universelle, son interprétation ne l’est pas.

De façon générale, tous ces langages héritent du fonctionnement actuel de l’Internet. Ils essaient de coupler des données présentes en des points uniques du réseau. Chaque donnée doit être stockée sur un serveur à un emplacement unique, à l’URL. Les données nécessitent un autre langage pour être retrouvée, le SPARQL, une sorte de langage SQL du web sémantique…
Les URI utilisées sont toujours soit des URL soit des nœuds de concepts (au sens réseau sémantique). Les nœuds de concepts sont définis par un document de référence à une URL donnée au début du fichier.
La génération de la plus grande partie des données de l’Internet se fait sur ses extrémités, c’est à dire chez les consommateurs. Mais ces données sont irrémédiablement vouées à migrer à court terme vers des centres de données en des points plus restreints du réseau, les serveurs. L’URI et l’URL désignent invariablement une localisation bien déterminée du réseau logique, et par extension du réseau physique. Le fait d’utiliser l’URL ou l’URI rétreint donc les possibilités d’échanges hors des serveurs. On est loin d’une autre tendance très à la mode, le Pair à Pair (Peer to Peer – P2P) qui privilégie l’échange directe entre consommateurs. C’est une incohérence.

Comparaisons

Et nebule dans tout ça?
On retrouve dans nebule les bases du RDF. On remplace le sujet par l’objet source, l’objet par l’objet destination, et le prédicat par l’objet meta. Et bien sûr il n’est pas fait usage du XML. On se rapproche plus de Notation3 dans le principe. Il y a quand même une grosse différence, les URI n’intègrent pas la dimension réseau et n’en sont donc pas dépendantes. Les URI sont le reflet direct des données indépendamment de leur localisation. Les URL existent bien mais ne sont pas gérées au niveau des triplets.

Les liens nebules sont l’équivalent des triplets RDF. Certains éléments ont étés ajoutés dans le lien. Le signataire désigne qui a initié le triplet. L’action permet de gérer le triplet indirectement, et donc aussi en mode hors-ligne. La date donne un ordre de traitement des actions. Et enfin la signature verrouille le lien contre toute modification.

Les nÅ“uds anonymes ne sont pas d’une grande utilité pour gérer des données, mais peuvent l’être pour la gestion de personnes. FOAF sait le gérer en tant que tel. A priori RDF/XML aussi. Les nÅ“uds anonymes nécessite de faire abstraction du contenu de ce que l’on traite. Et on doit être capable d’associer un nÅ“ud anonyme à un nÅ“ud connu si une relation permet d’établir une équivalence. Sous nebule, une définition pratique de l’objet correspondant à un nÅ“ud anonyme doit être définit, mais rien ne s’y oppose en théorie. Ensuite, une association d’équivalence peut être faite avec un lien de type E.

Confiance

La centralisation des données pose invariablement la question de la sécurité de ces données, des serveurs qui les hébergent et de qui les gère. Le fonctionnement de nebule permet de se réapproprier ses données tout en permettant d’en déléguer la diffusion.

Dans le schéma de la pile, on voit Trust, Proof et Crypto. Au premier abord, c’est rassurant. Les problèmes de confidentialité, d’identification forte et d’imputation sont intégrés dès le début dans la conception de l’ensemble. Mais en regardant de plus près, la place de ces éléments est un peu curieuse.
La confiance d’un système, qui n’est qu’un concept, ne peut être assurée que si l’on peut prouver la bonne construction de ce système. La preuve est donc partie intégrante de la confiance, et ne peut apparaître en dessous. C’est un des problèmes majeurs actuellement de la sécurité des systèmes d’information, Le web sémantique se pose-t-il ainsi comme solution au problème de confiance?
De son côté, la cryptographie est placée en parallèle de tout le reste. Elle ne peut pas intervenir à tous les niveaux, c’est trop complexe. Cela doit-il être interprété comme étant sous-jacent à la pile, et donc que tout est encapsulé dans un tunnel chiffré? TLS par exemple? Ou cela doit-il être interprété comme étant géré directement par les application, c’est à dire ici juste en dessous de la confiance? Bref c’est trop vague.

On voit dans la documentation de FOAF que WebID est l’encapsulation de celui-ci dans TLS. TLS étant l’orientation poussée par le W3C pour la sécurisation du transport des données. La case cryptographie est donc à priori à interpréter comme étant l’encapsulation de tous les échanges dans un tunnel TLS.

Web sémantique ?

Alors, nebule est-il un autre langage de sémantique web?
En l’état, oui. Mais il fait une grande utilisation des URI, il ne s’appuie pas directement sur les URL. Il est complètement décentralisé et peut être vu comme une nébuleuse de données sur le réseau.
Au contraire, tout ce qui tourne autour de RDF aujourd’hui s’appuie intégralement sur une centralisation des données et du traitement.

Liens :
РWeb s̩mantique, Wikipedia http://fr.wikipedia.org/wiki/Web_s%C3%A9mantique
РR̩seau s̩mantique, Wikipedia http://fr.wikipedia.org/wiki/R%C3%A9seau_s%C3%A9mantique
РPile du web s̩mantique, Wikipedia http://en.wikipedia.org/wiki/Semantic_Web_Stack
– Ontologie (informatique), Wikipedia http://fr.wikipedia.org/wiki/Ontologie_%28informatique%29
– Web 3.0, Wikipedia http://fr.wikipedia.org/wiki/Web_3.0
– Web 2.0, Wikipedia http://fr.wikipedia.org/wiki/Web_2.0
РM̩tadonn̩e, Wikipedia http://fr.wikipedia.org/wiki/M%C3%A9tadonn%C3%A9e
РWeb des donn̩es, Wikipedia http://fr.wikipedia.org/wiki/Web_des_donn%C3%A9es
– L’Internet des objets, Wikipedia http://fr.wikipedia.org/wiki/Internet_des_objets
– RDF, W3C http://www.w3.org/RDF/
– RDF, Wikipedia http://fr.wikipedia.org/wiki/Resource_Description_Framework
– RDF/XML, W3C http://www.w3.org/TR/rdf-syntax-grammar/
– XML, Wikipedia http://fr.wikipedia.org/wiki/XML
– URI, Wikipedia http://fr.wikipedia.org/wiki/URI
- Notation3 (N3), W3F http://www.w3.org/TeamSubmission/n3/
– N3, Wikipedia http://fr.wikipedia.org/wiki/Notation3
– Turtle, Wikipedia http://fr.wikipedia.org/wiki/Turtle_(syntaxe)
– RDFa, Wikipedia http://fr.wikipedia.org/wiki/RDFa
– FOAF (Friend Of A Friend), RDFWeb http://rdfweb.org/foaf/
– FOAF Vocabulary Specification, RDFWeb http://xmlns.com/foaf/spec/
– FOAF, Wikipedia http://fr.wikipedia.org/wiki/FOAF
– SPARQL, Wikipedia http://fr.wikipedia.org/wiki/SPARQL
– SQL, Wikipedia http://fr.wikipedia.org/wiki/SQL
– P2P, Wikipedia http://fr.wikipedia.org/wiki/Peer_2_peer
– TLS, wikipedia http://fr.wikipedia.org/wiki/Transport_Layer_Security
– Noeud anonyme, ressource anonyme, Wikipedia http://fr.wikipedia.org/wiki/N%C5%93ud_anonyme
http://fr.wikipedia.org/
http://www.w3.org/

Une réflexion sur « RDF »

Laisser un commentaire