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:
- 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) ?
- 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.
- à quoi peut ressembler cette application cliente, qui sait saisir des
informations et les exporter ?
- à quoi peut ressembler cette application serveur , qui envoie les mandats
?
- mais qui pourrait aiguiller un message vers d'autres actions;
- qui doit refuser un message non valide et expliquer pourquoi
- comment peut-on développer des applications basées sur ce genre de
présupposés ?
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
- S:(n) name (a language unit by which a person or
thing is known) "his name really is George Washington"; "those are two
names for the same thing"
- S:(n) name (by the sanction or authority of)
"halt in the name of the law"
- S:(n) name (a person's reputation) "he wanted to
protect his good name"
- S:(n) name, figure,
public
figure (a well-known or notable person) "they studied all the
great names in the history of France"; "she is an important figure in
modern music"
- S:(n) name, gens
(family based on male descent) "he had no sons and there was no one to
carry on his name"
- S:(n) name, epithet
(a defamatory or abusive word or phrase)
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 à :
- généralisation - particularisation
- contenant - contenu
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 :
- XMI et UML sont en perpétuelle redéfinition, et ne peuvent pas être
considérés comme de véritables formats d'échange;
- aucun mécanisme syntaxique n'existe pour associer un concept défini
extérieurement (dans WordNet par exemple) avec une classe UML
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 :

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:
- validation
le montant est-il strictement positif ? La devise est-elle indiquée ? Les
noms de l'envoyeur et du destinataire sont-ils définis ? ... etc
- action
le traitement proprement dit, en l'occurence envoi du message au serveur
Western Union, et réception du code pour le destinataire
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:
- un évènement de calendrier, typiquement au format ICS, entre un
calendrier local et un site Web via un navigateur (ou l'inverse)
- des informations d'identité personnelle, de type VCARD, entre un logiciel
détenteur d'informations personnelles (ou n'importe quel éditeur de texte)
et un site Web via un navigateur
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 .