IV.4 Fonctions de l'ontologie et du langage de contenu
dans JADE
Quand un agent A communique avec un agent B, une certaine
quantité d'information I est transférée à partir de
A à B au moyen d'un message ACL (AclMessage). A
l'intérieur du message ACL, I est représentée comme une
expression de contenu conformée à un langage de contenu
approprié ( par exemple SL15) et
codé dans un format approprié (Par exemple String).
A et B ont probablement leurs propres manières
intérieures de représentation de I. Tenant compte que la
manière dont un agent représente intérieurement un morceau
d'information doit permettre une manipulation facile de cette information, Il
est bien évident que la représentation utilisée dans une
expression de contenu d'ACL n'est pas appropriée à la
représentation à l'intérieure d'un agent. Par exemple
l'information concernant une personne dont le nom est Mohamed et qui a 33 ans
dans une expression de contenu d'ACL peut être représentée
comme un String
(Personne: nommée Mohamed, âge : 33 ans).
Stocker cette information à l'intérieur d'un
agent simplement comme un String n'est pas approprié pour
manipuler l'information comme par exemple pour obtenir l'âge de Mohamed
il faudrait analyser le String à chaque fois.
34
15 SL : est un langage de contenu
String-encoded (l 'expression du contenu en SL
est une chaîne de caractères) lisible pour l'homme et est
probablement le langage de contenu le plus diffusé dans la
communauté scientifique traitant les agents intelligents.
Considérons des agents logiciels écrits dans
Java (Comme le sont les agents de Jade), l'information peut être
convenablement représentée à l'intérieur d'un agent
comme des objets Java. Par exemple, représentons l'information ci-dessus
concernant Mohamed comme une instance (un objet Java) d'une classe
spécifique à une application
class Person {
String name;
int age;
public String getName() {
return name;
}
public void setName(String n) {
name = n;
}
public int getAge() {
return age;
}
public void setAge(int a) {
age = a;
}
....
}
Initialisé avec name = "Mohamed ";
age = 33;
permettra de manipuler facilement cette information.
Il est clair cependant que si d'une part l'exploitation de
l'information à l'intérieur d'un agent est soulagée,
d'autre part, chaque fois que l'agent A envoie une information I à
l'agent B alors :
1- L'agent A a besoin de convertir sa représentation
interne de I en représentation d'expression de contenu d'ACL
correspondant et l'agent B doit exécuter la conversion
opposée.
2- D'ailleurs B devrait également exécuter un
certain nombre de contrôles sémantiques pour vérifier que I
est une information significative, c à d qu'elle est conforme aux
règles (par exemple l'âge de Mohamed est réellement une
valeur de nombre Entier) de l'ontologie au moyen de laquelle les
agents A et B attribuent une signification appropriée à
l'information I.
Le support des langages de contenu et des ontologies fourni
par Jade est conçu pour exécuter automatiquement toutes les
conversions et vérifier les opérations comme
représenté sur le schéma ci-dessous.
Propriété de contenu d'un message ACL
L'intérieur de l'Agent
Information représentée sous forme de String ou
séquence de bits (Facile à transférer)
Support Jade pour les langages de contenu
et l'ontologie
Information représentée sous forme d'objets java
(Facile à manipuler)
36
FIG 08 :Le mécanisme de conversion de contenu de message
suivant une ontologie
IV.4.1 Eléments principaux
Les opérations de conversion et de contrôle
décrites dans le schéma précédent sont
effectuées par l'objet gestionnaire de contenu (une instance de la
classe ContentManager incluse dans le package
Jade.content).
Chaque agent jade possède un gestionnaire de contenu
accessible par la méthode getContentManager() de la classe
Agent, la classe ContentManager fournit toutes les méthodes
pour transformer des objets Java en String (ou séquence de
bits) et pour les insérer dans la propriété de contenu
d'un message ACL et vice versa.
Le gestionnaire de contenu fournit les interfaces
appropriées pour accéder à la fonctionnalité de
conversion, mais actuellement délègue les opérations de
conversion et de contrôle à une ontologie (une instance de la
classe ontology inclus dans le package Jade.content.onto) et
un codec16 de langage de contenu (une instance de l'interface
codec inclus dans le package Jade.content.lang). Plus
spécifiquement l'ontologie valide l'information à convertir du
point de vue sémantique tandis que le codec effectue la traduction en
String (ou séquence de bits) selon des règles
syntaxiques du langage de contenu.
16 Codec: Il permet de coder les messages du
format String ou séquence de bits en objets java.
|