Les petites cases

Dbpedia ou la puissance du RDF au profit du savoir

Si vous avez besoin de vous convaincre de l'utilité des technologies du Web sémantique pour partager, interroger et réutiliser des données structurées, organisées et décrites dans une syntaxe normalisée, je vous engage à aller visiter le site Dbpedia. Ce site, dont Marlène et d'autres ont parlé récemment, est un bon exemple du potentiel de RDF et de Sparql.

Mais, avant de vous proposer quelques tests concrets, de quoi s'agit-il ? Dbpedia est un projet mené par des chercheurs de deux universités allemandes (Berlin et Leipzig). Leur but est d'extraire les informations de Wikipedia et de les rendre disponibles dans un format permettant des requêtes complexes sur des entrepôts de données constitués. La démarche est donc différente de Semantic mediawiki, dont j'ai déjà parlé, puisqu'il s'agit ici de récupérer l'information déjà disponible dans Wikipedia. De ce point de vue, il se rapproche plus du projet de la société System One. Mais, à la différence de cette dernière qui reprend toutes les informations, les chercheurs de Dbpedia ne récupèrent « que » les informations présentes dans les « infobox ». Les infobox rassemblent, sur le côté droit de l'article, un certain nombre d'informations de manière à peu près normalisée. Les chercheurs ont extrait ces informations, les ont transformées en RDF et les ont intégrées à un entrepôt RDF.

Donc, pour répondre à la question de Marlène : les données de wikipedia sont stockées dans une base de données relationnelles, mais, dans cette base, elles sont assez peu structurées, l'essentiel de la structuration étant assuré par le HTML. Un script aspire les pages de Wikipedia, les analyse automatiquement, dès qu'il trouve une « infobox », il transforme les informations de l'infobox en RDF/XML suivant une ontologie mis au point pour chaque type d'objet. Ces données en RDF/XML sont ensuite stockées dans un entrepôt spécialisé pour pouvoir les interroger en Sparql, le langage de requêtes de RDF.

L'intérêt est double :

  1. Disposer d'informations très structurées de manière normalisée ;

  2. Utiliser RDF pour permettre des interrogations en Sparql.

Concrètement, que peut-on faire à partir de cela ? Plein de choses, il n'y a que votre imagination et vos connaissances en programmation qui vous arrêteront (et le temps aussi...). Vous pouvez faire appel très facilement aux données de wikipedia depuis un autre site : un peu d'ajax, un peu de sparql, un peu de Web services et au passage de la souris sur un nom de personne, vous pouvez faire apparaître dans une info-bulle la date de naissance, la date de mort... de cette personne. Vous pouvez aussi interroger le dépôt en agrégeant les déclarations, c'est à dire les phrases simples sous la forme Sujet Prédicat Objet à la base de RDF. C'est le cas dans l'exemple que j'ai construit qui est très simple, mais pourrait être facilement amélioré : vous choisissez le prédicat et l'objet et vous disposez des résultats. C'est un peu la même idée développée par Leipzig pour son constructeur de requêtes de Wikipedia. On peut aussi imaginer la construction de frise chronologique automatique à partir des données de Wikipedia grâce à Timeline, script mis au point par le Simile project. C'est ce que j'ai fait dans ce deuxième exemple, à partir de la requête des personnes nées à Paris. Dans le même ordre d'idée, les chercheurs de Berlin ont utilisé le script exhibit, toujours du simile project, pour construire ce site autour des personnes nées à Londres. Ces quelques exemples très simples prouvent que le schéma et la démarche sont intéressants et ouvrent la voie à des mashups absolument géniaux (et avec le nouveau Yahoo Pipes, ça semble plus facile) et cela grâce aux technologies du Web sémantique. En plus, ce projet est une bonne occasion de découvrir Sparql grâce à l'explorateur Sparql en AJAX mis à disposition sur Dbpedia. Amusez-vous bien !!

RDF Sparql Outils Wikipedia Geekeries Linked Data — 

Commentaires

Merci pour l'info de DBPedia, je me suis amusé avec leur base et j'ai fait une appli java permettant d'afficher la vie des scientifiques célèbres. http://www.urbigene.com/wikistory/
Très intéressant, mais quelqun pourrait-il me dire l'avantage de ce système par rapport à un système similaire qui stockeraient les triples dans une base de données relationnelles avec une interface SQL (l'ontologie correspondant au schéma de la BD et le SPARQL au SQL). Merci d'avance pour vos réponses.
@Henri : J'ai traité de cette question dans le billet "Stocker les triples". Je pense que vous trouverez dans ce billet la réponse à votre question. Pour faire vite, le principal argument qui plaide en faveur d'un triple store est la performance et la scalabilité. D'ailleurs, les concepteurs de Dbpedia ont été confrontés à ce problème puisqu'à la base, ils utilisaient un système équivalent à celui que vous décrivez et qu'ils développent (DR2 server) pour DBpedia et qu'ils ont dû basculer dans un autre système.
Bonjour, Merci pour ce petit billet plein de liens. Je suis en train de surfer sur toutes ces notions de web sémantique pour me mettre à la page et j'ai une question dont je ne parviens pas à trouver la réponse. Je la soumets ici au cas où quelqu'un aurait la réponse. RDF permet de décrire des 'choses' à un instant donné, mais je ne vois pas bien comment on peut décrire une propriété d'un objet qui évoluerait au fil du temps, par exemple la population d'une ville. En gros j'ai bien vu qu'on pouvait poser des questions du style: "Quelles sont les villes de plus de deux millions d'habitant ?" Mais je voudrais savoir si RDF permet de stocker de l'information de manière à pouvoir répondre à la question: "Quelles étaient les villes de plus de deux millions d'habitant en 1920 ?" A priori, le formalisme Open Cyc (non RDF, c.f. http://www.cyc.com/opencyc ) permet d'associer des dates de validité à l'équivalent de leur triplets, ce qui semble la méthode la plus naturelle pour répondre à la problématique. Qu'en est-il de RDF ? Merci pour toute réponse, commentaire, redirection vers un forum, etc. JC

De rien, je suis toujours heureux de voir que mes billets peuvent servir.

Effectivement, la contextualisation d'un triple n'est pas forcément évidente en RDF (Topic maps proposait aussi sur ce point une méthode native pour traiter ce point). Il existe malgré tout un moyen nommé "réification" qui consiste à écrire un triple sur un triple. Concrètement, le triple initial devient sujet du second sur lequel on peut faire porter un prédicat, dans le cas que tu exposes, une propriété date et un objet, dans ton cas, une date proprement dite. Néanmoins, il existe pas mal de débats sur la question de la réification en RDF, essentiellement pour des questions de traitement, si j'ai bien compris. Pour en savoir plus, sur la question, cf. http://www.w3.org/TR/rdf-primer/#reification.

Alex, si tu passes dans le coin, n'hésite pas à donner des précisions sur la question, je suis preneur aussi ;-)