Compréhension sans protocole préalable

© 2006-2009 Jean-Marc Vanel e-mail: Envoyer vos commentaires -

Sommaire

00. Introduction

Quand on se parle, on se comprend . Et si c'est suffisamment simple, ou si le contexte est clair, pas besoin de questions. C'est parce qu'on parle la même langue qui sous-tend des concepts. Pourquoi n'en serait-il pas de même en informatique?

C'est ce que j'appelle la compréhension sans protocole (ou compréhension a priori).

0. Exemple: envoi d'un mandat

J'ai envoyé ce matin un mandat par Western Union, à ma fille à Madrid . J'ai écrit sur un formulaire papier des choses qui étaient déjà sur mon ordinateur . Puis (laborieusement) l'employé des Postes a recopié mon formulaire sur son ordinateur . Voilà le genre de choses qui arrivent tout le temps en ce XXIe siècle. Et dire qu'on parle d'Ere de l'Information! En vérité c'est encore le Moyen Age, et pas qu'à la Poste.

C'est l'occasion d'expliciter des réflexions que je mène depuis des années, autour de XML, RDF, des ontologies, et des architectures applicatives. Tout d'abord j'aurais pu transmettre mes notes en format textuel simple, via une clé USB, ou via infrarouge. Le temps de faire ça est équivalent à celui de resaisir, mais mon propos est ailleurs. L'inconvénient d'un format textuel simple, c'est qu'il faut un humain pour le décoder :

Diane Vanel
en casa de
Maria Sanchez , calle de las Robles
esc. izq. , 1°3°
28044 Madrid

Bien sûr, on peut ajouter un marquage des informations , en XML ou tout simplement avec des paires champ-valeur :
name= Diane Vanel
adress= en casa de \n
Maria Sanchez , calle de las Robles \n
esc. izq. , 1°3° \n
28044 Madrid
Ici adress est un champ qui n'a pas besoin d'être décomposé plus avant; on pourrait le faire en XML. On a choisi des noms de champs en Anglais, pour être plus interopérable (mais avec quoi ?). On commence à arriver dans le vif du sujet. Dans la suite je vais traiter ces questions:
  1. comment prendre en compte le fait que name et adress sont , comme la plupart des mots, polysémiques (i.e. ils ont plusieurs sens, dépendant du contexte) ?
  2. comment communiquer le contexte nécessaire à l'application qui envoie les mandats ?
    La contrainte supplémentaire est qu'il n'y a pas de protocole préalable entre une application cliente sur mon ordinateur, qui sait saisir des informations et les exporter dans un format "intelligent", et l'application qui envoie les mandats.
  3. à quoi peut ressembler cette application cliente, qui sait saisir des informations et les exporter ?
  4. à quoi peut ressembler cette application serveur , qui envoie les mandats ?

Une référence à lire:

Use of Upper Ontologies for Interoperation of Information Systems: A Tutorial - Robert M. Colomb

http://www.loa-cnr.it/Papers/ISIB-CNR-TR-20-02.pdf

1. La polysémie et WordNet

La première idée est qu'une Compréhension sans protocole préalable, entre programmes informatiques, ne peut pas faire autrement qu'entre humains. Il faut se baser sur une représentation formalisée des concepts de la vie courante, des métiers, bref de tout. Pour cela, le plus évident est de partir d'un langage humain, en plus formalisé, afin de dégager le sens derrière les mots.

Comment prendre en compte le fait que name et adress sont , comme la plupart des mots, polysémiques ? Il faut prendre en compte le fait que la relation entre mot et sens est de cardinalité 1..* des deux côtés, comme dans ce fragment de UML :
Mot 1..* ------ 1..* Sens
Ceci est le point de vue adopté dans WordNet, le célèbre dictionnaire informatisé . Un "synset" (ensemble de synonymes) est un ensemble de mots qui ont en commun un sens . En se référant à un synset de WordNet, on peut alors définir une sémantique bien précise et universellement adoptée.

Voici par exemple ce qu'on obtient sur le site ( http://wordnet.princeton.edu/perl/webwn ) :
Noun Dans notre cas c'est le premier synset qui correspond .

Noun
S:(n) money order, postal order (a written order for the payment of a sum to a named individual; obtainable and payable at a post office)

Ici il y a un seul synset; l'utilité de WordNet est de fournir un identifiant unique pour ce signifié .

Cependant WordNet n'est pas une véritable ontologie. Les relations entre concepts y sont limitées à :
Ce n'est donc pas WordNet qui pourra indiquer qu'un Mandat  a un envoyeur, un montant, et un destinataire . Ce n'est pas forcément nécessaire dans toutes les applications. Par contre WordNet, en tant que dictionnaire, contient tous les mots de la langue. Mais si l'on veut avoir toutes les relations entre concepts, il faut utiliser une ontologie. Il existe des nombreuses ontologies spécialisées, et quelques ontologies d'un haut niveau de généralité ( SUMO, MILO, DOLCE ), mais on est encore loin de l'exhaustivité de WordNet. Voir le moteur de recherche sur les ontologies :http://swoogle.umbc.edu . Il y a aussi la base de connaissance (ontologie) Open Cyc , qui contient  presque autant de concepts que WordNet . Mais la technologie Cyc est partiellement propriétaire, et ne semble pas modulaire.

En cherchant sur SWOOGLE avec "money-order" , je trouve cette ontologie (excluant les réponses venant de WordNet pour la raison ci-dessus ) :
http://web.njit.edu/~kh8/project/ecommerce.owl
Cette ontologie propose une vue du monde centrée sur le commerce électronique. Elle est assez différente de la vue proposée au pragraphe suivant.

A SUIVRE ............................

2. RDF, comment connecter des objets métiers avec des concepts universels

Nous avons vu comment on peut se raccrocher à des concepts bien définis. Maintenant il faut assembler ces concepts pour exprimer une demande de mandat. Il s'agit en fait de communiquer l'information contenue dans ce diagramme de classes UML :

            envoyeur
Mandat-----------------------Personne
montant            |
    |      destinataire        |
    |-----------------------------|
On serait tenté de d'utiliser le format d'échange associé à UML, c'est à dire XMI. Il y a deux objections à cela :
C'est là que RDF du W3C (Resource Description Format) entre en scène. RDF fait voir le monde en termes de triplets Resource - Propriété - Valeur . Une Resource est une instance d'objet (donc tout ce qu'on veut), munie d'un identifiant unique URI, typiquement un URL.

RDFS ; OWL : A COMPLETER ??????????????

Voici un document du W3C ( WordNet Task Force) qui fait le point sur les façons de traduire WordNet en OWL , en passant par la version Prolog de WordNet:
RDF/OWL Representation of WordNet
Il ne propose pas de digérer le Prolog de WordNet dans Protégé; ce serait à essayer.

J'ai utilisé Protégé pour saisir les classes de notre exemple de traitement de mandat :

ai/protege-commerce.png

Note: les deux associations entre Person et Postal_Order sont visuellement confondues. De plus ce n'est (hélas) pas une vue UML, les relations d'héritage ne sont pas distinguées des associations (c'est simplement dû aux limitations de la bibliothèque TouchGraph utilisée ici ) .

A SUIVRE ............................

3. Saisie d'informations générique

de fil en aiguille; dirigée par un but, et par des ontologies
complétion, vue en graphe
A SUIVRE ............................

4. Serveurs, messages, et protocoles

J'essaye ici de répondre à cette question: A quoi peut ressembler cette application serveur , qui envoie les mandats ? Le maître mot ici est "règles" . Un moteur à base de règles est capable d'aiguiller le traitement en fonction des données reçues et du contexte. Contrairement à l'aiguillage Orienté Objet, un moteur à base de règles prend en compte une expression logique quelconque, et non pas seulement la classe de l'objet. On peut gérer les règles indépendamment les unes des autres, ce qui est beaucoup plus propre que les suites de clauses if enchaînées .

Il existe plusieurs moteurs de règles dans le monde Java ( Drools, Mandarax, JRules, ... ) et ailleurs (CLIPS, greffons de Protégé : Algernon , Drools, CLIPS,  ... ). Malheureusement, aucun langage ne surnage du lot. Dans notre exemple de traitement de mandat, on n'a pas besoin de tels outils. Avec Protégé, on peut enregistrer un observateur déclenché par un nouvel objet de la classe voulue :
Postal_Order_Class.addClassListener(
  new ClassAdapter() {
    public void instanceAdded( RDFSClass cls,
               RDFResource instance ) {
            System.out.println(
"Instance ajoutée à la classe: "
+ instance.getName() );
    };
  } );

Dans notre exemple de mandat, on appliquera deux types de règles:
A SUIVRE ............................

5. Clients

Une application évidente de la " Compréhension sans protocole préalable" est la transmission entre logiciels d'un élément d'information tel que le mandat ci-dessus par glisser-déposer ou copier-coller . Autres exemples:

Quand il n'y a pas de format "classique", ou quand on veut ajouter de l'information à un format classique annotation), RDF ou N3 sont des formats "naturels".

6. développement logiciel basé sur ontologies

Voir mon projet Déductions .