Sémantique et ontologie, les dessous d’Influence Networks

Si vous avez manqué l’étape précédente, Influence Networks est un outil développé par OWNI.fr dont le rôle est de rassembler les relations entre personnes et organisations dans une seule et même base de données. Ses utilisateurs sont invités à contribuer à son expansion en ajoutant eux même des relations et en évaluant celles répertoriées par d’autres utilisateurs. À terme, le projet vise à offrir dans un format exportable les données mises en exergue par les contributeurs (sous la forme d’API, de diagrammes embedables, etc).

Cet article à pour but de vous présenter les différentes étapes et réflexions qui ponctuent le développement d’Influence Networks. L’exercice est également celui du questionnement car il doit offrir une certaine forme de recul par rapport au travail accompli et, si vous souhaitez y apporter vos remarques, à nous aider à améliorer son fonctionnement. Si j’emploie des mots barbares, pas de panique, je ne tarde jamais a en décrypter le sens profond…

La complexité des données, une solution plus qu’un problème

Sur un modèle comme SQL, il est difficile de concevoir une structure de données logique, sur laquelle un projet comme Influence Networks, (exposé à une multitude de types sémantiques et qui brille par la richesse de ses entités) doit venir se greffer. La méta-stabilité des systèmes complexe, tout un programme…

Un système complexe est un système de saisie où l’utilisateur est face à une très grande variété de choix (comme c’est le cas sur Influence Networks) et où il est difficile d’anticiper quelles interactions vont avoir entre elles ses entités (formulées donc, par des choix). L’exemple inverse peut valoir pour définition : si nous vous demandons dans une liste d’options quel est votre sexe, c’est un système dit expert. La donnée est facile à traiter car binaire et l’erreur est quasi impossible à commettre. À contrario, si nous vous demandons dans un formulaire de saisir le lieu de votre mariage, comment allons nous bien pouvoir anticiper ce que vous allez indiquer : un pays; une ville; une église ou une mairie ? L’éventail des possibilités est tel qu’il est difficile d’obtenir une granularité de typage suffisamment forte pour correspondre à la potentialité des entrées.

On cherche sur ce projet à typer sémantiquement la donnée. On ne veut pas seulement identifier les chaînes, les entiers ou les dates. On veut savoir si l’information saisie est une personne ou une organisation; si l’information est un pays, une ville ou un continent… J’en passe mais vous devez déjà discerner l’étendue des possibilités pour renseigner par exemple, une relation commerciale (et ses détails).

L’équilibre stable d’un système est son aptitude à préserver son bon fonctionnement et son intégrité lorsqu’il subit des variations (engendrées par l’utilisateur ou le système lui même). Lorsque vous consultez un distributeur de billets, ce dernier a atteint l’équilibre car d’un utilisateur à un autre, il délivre un service toujours homogène. Le distributeur connait tous les potentiels de variation et de fait, tous les résultats à retourner. Toutes les potentialités ont été évaluées, le système ne peut plus évoluer, il est stable.

La sémantique nous permet sur Influence Networks d’obtenir un équilibre instable (méta-stable). Nous ne pouvons pas distinguer toutes les saisies possibles (elles sont infinies) néanmoins nous désirons identifier leur typologie singulière. Il est donc nécessaire de ne pas identifier tous les potentiels (ou même essayer) pour assurer au système une capacité d’évolution relative à ce qui y est saisi.

Un modèle invisible, mis en œuvre dans la description des ressources

Passons à la pratique :)

Ressource Description Framework est un modèle de graphes pour décrire formellement des ressources1. Pour stocker les relations dans la base de données en répondant au modèle RDF nous avons choisi la décomposition suivante (fonction du triplet élémentaire sujet, prédicat, objet) :

  • L’entité gauche, c’est le sujet (c’est une ressource)
  • Le type de la relation, c’est le prédicat (c’est un type de propriété qu’on applique au sujet)
  • L’entité droite, c’est l’objet (c’est aussi une ressource, qui correspond à la valeur de la propriété)

Par exemple (attention spoiler), Luke Skywalker (sujet) est le fils (prédicat) de Dark Vador (objet). On peut résumer cette modélisation très simplement par la structure ci-conte (schéma complet de la BDD).

Notez que l’idée d’une entité gauche et droite ici est arbitraire, visuelle même, et n’a sémantiquement pas beaucoup de sens sans prédicat.

Freebase, une formidable source d’informations sémantiques

Freebase est une mine d’or pour la sémantique. En regroupant près de 20 millions d’entités c’est incontestablement la base de données sémantique la plus riche sur le Web.

Happy API

Non content de proposer un si massif dépôt d’information, Freebase brille également par la puissance de son API. À l’aide d’un langage nommé MQL dont la syntaxe est très inspirée de celle de JSON, son API vous permet de formuler des requêtes complexes sur la base de données.

Sur Influence Networks, c’est grâce à ce procédé que nous arrivons à extraire les informations propres à chaque entité. Par exemple pour dégager quelques données factuelles sur une personne, dans la limite de sa présence sur Freebase, il suffit d’employer ce type de requête :

[{
 "id":   "/m/0gj65t_",
 "type": "/organization/organization",
 "name": null,
 "headquarters": [
    {
       "optional": true,
       "*": {},
       "limit": 1
    }
 ]
}]

Dans cet exemple, on cherche à obtenir le nom d’une organisation en fonction de son ID Freebase, ainsi que le lieu de son siège s’il est disponible. Le résultat est retourné au format JSON et JSONP pour les requêtes cross-domain.

Freebase Suggest

Ce pluggin jQuery vous permet de créer des formulaires de recherches en temps réel sur Freebase. Nous l’utilisons sur Influence Networks pour tous les formulaires qualifiés afin de limiter les erreurs de saisie et préserver un maximum de rigueur sémantique. Le script suivant vous permet de faire une recherche en temps réel sur un lieu :

<link type="text/css" rel="stylesheet" href="http://freebaselibs.com/static/suggest/1.3/suggest.min.css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://freebaselibs.com/static/suggest/1.3/suggest.min.js"></script>
<script type="text/javascript">
 $(function() {
     $("#myinput").suggest({type:'/location/location'});
 });
</script>

Une dépendance forte, trop forte

Le souci lorsque on utilise des outils aussi puissants et faciles à mettre en œuvre, c’est qu’on est vite tenté d’en mettre partout. Ce fut notre cas sur ce projet et si le service délivré est au final assez efficace, cet usage n’est pas sans remettre en cause l’indépendance fonctionnelle du système.

En effet il est bon de se demander ce qu’il adviendrait de notre application si dès demain, Freebase cessait de fonctionner ? La dépendance est trop forte pour ne pas être dangereuse quand on sait que le rachat de Metaweb (la société à l’origine de Freebase) par Google est avant tout motivé par la recherche de compétences plus que d’une infrastructure. C’est un vrai talon d’Achille qu’il faudra probablement corriger rapidement puisque le projet vise à durer.

Visualisez les relations avec Protovis

Parmi les nombreuses librairies de visualisation de données sur le Web, Protovis est très certainement ma préférée. Développée par Mike Bostock et Jeff Heer, chercheurs à l’Université de Stanford en Californie, Protovis est un outil sous licence BSD (retrouvez les source sur Gitorious) permettant de générer très rapidement des graphes depuis un set de données.

Pour explorer les relations répertoriées sur Influence Networks, nous utilisons un type bien précis de graphes, le Force-Directed Layout , qui permet de représenter des liens entre des entités…


Cet exemple représente les relations entre les personnages des Misérables, si si.

Le rendu est perfectible; idéalement nous aimerions proposer un plus haut degré de personnalisation sur ce diagramme, pour notamment régler la distance entre les nodes, le niveau de zoom ou encore, les relations à afficher. Sur ce point, je n’ai que peu de choses à ajouter car c’est somme toute la partie plus minime du code… Son existence n’en demeure pas moins stratégique et importante puisque pour valoriser l’application, il est bon d’offrir aux utilisateurs d’explorer son contenu. Depuis peu l’application propose d’ailleurs des permaliens vers les graphes générés. Cette fonctionnalité ouvre la voie des développements à venir puisque l’outil ayant pour finalité d’agrémenter les travaux journalistiques, il faut permettre à n’importe quel type d’utilisateur (technicien ou non) d’importer facilement ses diagrammes…

~

Pour poursuivre l’aventure, l’article de Nicolas Kayser-Brill vous donnera un angle complémentaire et nettement moins technique sur le fonctionnement d’Influence Networks. Bien évidement, vous êtes invités à participer au projet, son code est intégralement disponible sur Github. Enfin, rappelons qu’elle compte parmi les 10 finalistes de l’Uutisraivaaja Challenge (en Finlande). Cette première nomination étant accompagnée d’une dotation de 10.000€, nous devrions pouvoir développer une partie des fonctionnalités énumérées ci-dessus et pourquoi pas à terme, multiplier la puissance d’Influence Networks vers des objectifs plus ambitieux…

http://influencenetworks.org
  1. Amusez vous bien []

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>