Interroger le Web Sémantique

En supposant que vous ayez suivi l’article de Got sur RDF, ou tout autre tutoriel du même genre, vous voyez sans doute - j’espère ;) - l’intérêt de disposer de données RDF pour représenter des resources sur le Web[1] .

Et apres ? Parcequ’on a beau avoir des données, encore faut-il les exploiter, l’interrogation étant un moyen d’en tirer profilt.

Première étape que j’évoquerai dans ce billet: SPARQL. Ce langage - et protocole - de requête pour RDF est supporté par le W3C et s’impose comme le langage de référence pour exprimer des requêtes sur des données RDF, malgré certaines limites (par exemple, pas de support de fonctions d’agrégation: MAX, COUNT …), mais avec une grande facilité puisqu’on retrouve dans une clause WHERE la notion de graphe et de triplets.

Par exemple, à partir de mon profil FOAF, pour connaitre l’ensemble des personnes que je connais, je peux utiliser la requête suivante:

  PREFIX foaf: <http://xmlns.com/foaf/0.1/>  SELECT ?who  WHERE {    ?x foaf:primaryTopic ?me    ?me foaf:knows ?who  }

qui retournera les connaissances (URIs) définies dans mon profil de façon à ce qu’un lien foaf:knows existe entre moi (i.e. le noeud identifié comme foaf:primaryTopic) et ces URIs.

Une API comme redland permet de charger plusieurs graphes en mémoire et d’effectuer une requête unique, cependant, si l’on souhaite interroger un grand nombre de document, la pratique commune est de centraliser ceux-cis dans un triple store.

Pour faire simple, il s’agit d’un système stockant les données sous forme de triplets, et proposant une API pour ajouter / supprimer ceux-cis et différents moyens de les requêter (par ex. avec SPARQL). La plupart reposent sur une base de donnée relationnelle[2] et il existe donc de nombreux systèmes, avec des spécificités (contexte, inférence …) et langages différents. J’utilise personnelement Joseki pour stocker des triplets sans contextualisation et 3store, qui gère le contexte, dans le cas contraire.

Problème(s): il est nécessaire de connaitre à l’avance les données à interroger, et en cas de modification de documents sources, il faut mettre à jour l’entrepôt (en utilisant par exemple Ping The Semantic Web).

Toutes ces explications pour en arriver à la librairie que j’évoquais dans le billet précédent: Semantic Web Client Library. A partir d’un document source et en utilisant les liens qui peuvent exister entre les différents documents présents sur le Web via l’utilisation de rdfs:seeAlso, la librairie va en fonction de la requête - toujours en SPARQL - récupérer d’autres documents qui pourraient la satisfaire - moyennant quelques précautions dans la définition de celle-ci - , à la manière du Tabulator.

Donc, d’une part, plus besoin de disposer d’entrepôt pour des requêtes sur plusieurs documents, mais surtout le fait que les document requêtés n’ont pas besoin d’être connus à l’avance, puisqu’ils seront recupérés au fur et à mesure du parcours des liens si l’algorithme juge nécessaire de les utiliser, pour ensuite lancer la requête sur le graphe “global”. On peut ainsi en pointant un seul graphe effectuer une requête comme “Quels sont les amis de mes amis”. Le temps de traitement est nettement plus long qu’une requête sur un entrepôt, puisque chaque graphe doit être récupérer puis chargé en mémoire, cependant, c’est un excellement moyen de parcourir un Web Sémantique “ouvert”, à quelques détails près qui évoluront sans doute en fonction des besoins utilisateurs.

Plus d’informations sur la page du projet.

Notes

[1] J’avait évoqué des posts en français sur le Web Sémantique lors de la création de la planète, voila le premier :) J’essayerai donc d’écrire des posts de “vulgarisation” sur le sujet régulièrement en fonction du temps.

[2] C’est d’ailleurs assez marrant de voir les transformations SPARQL / SQL et de retrouver des bonnes requêtes de 15 lignes avec moults jointures :)

Comments

One Response to “Interroger le Web Sémantique”

  1. Alexandre Passant » Blog Archive » Quelques outils pour découvrir le Web Sémantique on September 2nd, 2007 11:43 pm

    […] également très simple. Puisqu’on parle de SPARQL, c’est le langage inévitable pour interroger des données RDF, mais aussi les reformater en utilisant […]

Leave a Reply

You must be logged in to post a comment.