Les petites cases

Et si on sémantisait un peu le Web

Je répète à longueur de billets que structurer un contenu en XML, et a-fortiori en HTML, ne constitue pas une sémantisation, mais permet d'indiquer le rôle joué par la portion d'information dans le contexte d'un document. Les normes du Web sémantique ont à l'inverse vocation à aider à la sémantisation du contenu. Mais, à force de le répéter sans rien montrer de probant, vous allez finir par croire que c'est une chimère. Soyons clairs, nous sommes encore loin du compte, mais nous avons fait des avancés, exemple avec RDFa.

RDFa n'en est qu'à l'état de brouillon d'éditeur au W3C, mais fait déjà énormément parler de lui, comme le prouvera ma prochaine pelote. Kesako ? RDFa est une syntaxe qui vise à inclure des triples RDF dans des pages Web en XHTML. Exemple simple, si dans ma page Web, j'inclus le nom du créateur de la page, au lieu de l'exprimer une fois dans l'en-tête et une fois dans le corps de ma page, j'ajoute cette information simplement dans le corps de ma page à l'endroit prévu :

<span property="dc:creator">Gautier Poupeau</span>

En indiquant la propriété Dublin Core "creator", j'ai bien précisé que la chaîne de caractères "Gautier Poupeau" est le créateur du document. Je peux même raffiner, en indiquant un lien vers ma description dans mon fichier FOAF, qui correspond à l'URI qui me décrit :

<span rel="dc:creator" href="http://www.lespetitescases.net/foaf_got.rdf#GP">
  Gautier Poupeau
</span>

Si vous voulez d'autres exemples et des explications plus complètes, je vous renvoie au très bon article de Bob duCharme sur XML.com. Pour ceux qui connaissent, cela vous rappellera le principe des microformats. Le principe de base est effectivement le même, la syntaxe est un peu différente, mais surtout, là où les microformats proposent de nouveaux vocabulaires, RDFa réutilise les propriétés définies dans des vocabulaires RDF (Dublin Core, SKOS, Geo, OWL et tous les autres...) et même les instances définies dans d'autres fichiers RDF que l'on peut pointer via son URI. RDFa offre donc une puissance supplémentaire, mais par ricochets, présente une compléxité plus grande, d'où l'importance que les deux syntaxes coexistent.

Maintenant que je vous ai brossé à grands traits les RDFa, passons au vif du sujet : "et si on sémantisait un peu le Web". Depuis peu, nous disposons de bases importantes de données structurés en RDF : Wordnet, DBpedia dont je vous ai déjà parlé, Geonames sur les informations géographiques qui intègre les informations de l'INSEE, par exemple, et le mouvement va aller en s'accelerant. Pour sémantiser, il suffit alors d'indiquer qu'une portion d'informations équivaut à un objet défini par une URI dans un fichier RDF, c'est précisément le sens de la propriété OWL "sameAs" (PS perso : Alex, j'attends avec impatience le billet à ce sujet). Si je reprends l'exemple précédent :

<span rel="owl:sameAs" href="http://www.lespetitescases.net/foaf_got.rdf#GP">
  Gautier Poupeau
</span>

Quels utilités ? Il existe de multiples utilisations, mais par exemple, si j'indique une liste de noms dans un document HTML, je pourrais via ce système et le FOAF respectif de chaque personne voir quelle est la relation entre les différentes personnes, si la relation est indiquée dans leur FOAF. On peut aussi imaginer un moteur de recherche renvoyant vers ce blog, si une personne fait une requête en relation avec un intérêt décrit dans mon FOAF...

Mais, restons, si vous le voulez bien sur le moteur de recherche, si à présent, en lieu et place d'un fichier FOAF, j'indique une URI vers DBpedia, par exemple :

<span id="sartre" about="#sartre" rel="owl:sameAs" href="http://dbpedia.org/page/Jean-Paul_Sartre">
  Jean-Paul Sartre
</span>

Le moteur de recherche indexe non seulement ma page Web, mais aussi la notice de Jean-Paul Sartre en RDF dans DBpedia qu'il associe à cette page Web. Je vais alors décupler les possibilités de recherche. Imaginons que je fais la requête : "philosopher french existentialist". Même si ces trois mots n'apparaissent dans ma page Web d'origine, comme ils apparaissent dans la notice en RDF, le moteur doit être capable de me renvoyer cette page. Un autre exemple avec un nom de lieu :

<span id="paris" about="#paris" rel="owl:sameAs" href="http://dbpedia.org/resource/Paris">
  Paris
</span>

La notice de Paris dans DBpedia indique le nom de Paris dans les différentes langues, donc si une personne effectue la requête "Parigi", le moteur sera capable de donner en réponse ma page qui contient, quant à elle, la forme "Paris".

Je pense que vous avez compris le principe et vous serez d'accord avec moi que, dans ce cas-là, le processus de sémantisation est enclenché et cela ne me semble pas bien compliqué à implémenter dans le crawler d'un moteur de recherche. Je laisse mes lecteurs bibliothécaires imaginer les possibilités avec un thésaurus comme Rameau.

Mais, j'entends d'ici les esprits chagrins qui vont voir au moins deux problèmes dans cette proposition.

Premièrement, certains pourraient y voir un moyen de faire augmenter leur page Rank en liant vers des fichiers RDF en relation avec les dernières séries à la mode, avec le sexe et j'en passe... Il existe une parade. Il suffit que les moteurs de recherche n'indexent ces informations que si elles sont liés avec des triple store RDF que les moteurs de recherche reconnaissent et qu'ils savent dignes de confiance. On pourrait aussi imaginer un système qui n'indexe que dans le cas où la chaîne de caractère concernée est présente dans l'objet RDF. Ça limite les possibilités, mais comme "le monde est infame et méchant", il faut bien se prémunir.

Deuxièmement, il est clair qu'avant que tout le monde ajoute ce genre d'information, de l'eau aura coulé sous les ponts et c'est pas demain la veille que Google implémentera ce genre de fonctionnalités. Complètement d'accord avec vous. Mais, de plus en plus de sites Web possèdent un moteur de recherche interne, il est donc tout à fait possible de déployer un tel système pour améliorer la pertinence des résultats de votre moteur interne.

Bref, c'est à vous de jouer avec vos données, surtout qu'ils existent d'autres possibilités avec RDFa, j'y reviendrai. Quant aux éditeurs de moteur de recherche, vu la concurrence acharnée qu'ils se livrent, ils vont pas mettre long feu à implémenter cette fonctionnalité.

Structuration Moteur de recherche RDFa Geekeries — 

Commentaires

On parle souvent des technologies qui permettent de "sémantiser le web", de lui "donner du sens". Pourtant, le web a déjà beaucoup de sens, et c'est ce qui fait que bien avant l'arrivée de ces technos on a pu s'y intéresser et passer des heures à naviguer de site en site.
Le sens est déjà là, et le problème est simplement que nos machines ne sont pas assez puissantes, et nos algorithmes assez bons, pour que la compréhension automatisée des documents textes soit aussi bonne que la nôtre, et c'est pourquoi nous sommes obligés de rajouter des quantités de méta-données un peu partout.

Exemple typique d'élément texte à forte valeur sémantique : une adresse email modifiée pour ne pour ne pas être interprétée par un automate (type nom [dot] prenom [at] domaine [dot] com). Tout le monde comprend qu'il s'agit d'une adresse mail en la voyant, le sens est donc bien présent. Pourtant, les automates qui parcourent les pages à la recherche d'adresses seraient bernés par une si petite protection, c'est dire leur faible capacité à interpréter le texte.

Je pense qu'on devrait garder en tête que ce qui existe sur le web a déjà du sens et que les méta données qu'on y ajoute ne sont que des palliatifs à l'intelligence des automates. Le but de l'informatique est de satisfaire notre paresse et d'éviter les tâches répétitives, mais mettre des tags partout, même sur un bout de texte aussi simple qu'une adresse email ne nous facilite pas beaucoup la vie. J'imagine déjà les méta données spatiales, où pour chaque image publiée on sera obligé de dire "ici, une personne âgée, habillée en rouge.... là, un chien dans son panier..." tout ça pour qu'elle puisse être utilisée par les moteurs de recherche.

Je ne pense pas que l'avalanche de méta données soit l'unique solution.

Petite précision : je n'ai jamais dit que le Web en lui-même n'avait aucun sens, heureusement que, pour nous autres humains, il a du sens. Il est bien question dans mon billet d'ajouter des métadonnées, en vue d'aider les machines dans leur quête de sens. Evidemment, dans cette longue quête, les métadonnées ne constituent pas elles seules le saint-graal ;-)
Un triplet, en français, désigne une ensemble ordonné de trois éléments. Le triple est le produit d'un nombre par 3... Merci pour ce article clair ;-)