IV. Implémentation du traducteur OWL-S vers
opérateurs STRIPS
Ce traducteur fait un composant dans les agents service.
Ainsi, chaque agent service après son initialisation avec la description
OWL-S du service qu'il représente, il exploite ce composant pour la
transformer à un ensemble d'opérateurs correspondants.
Nous avons implémentées ce traducteur par une
fonction Java (traducteur()), prenant en entrée sous
forme d'un texte la description OWL-S et retournant en sortie la liste
d'opérateurs pouvant être extraits de cette description.
Le principe est le suivant : la fonction parcourt le texte de
la description OWL-S. Chaque fois qu'il rencontre un processus atomique (un
bloc entre les deux balises <process:AtomicProcess et
</process:AtomicProcess>), il le traduit à un opérateur
STRIPS : le nom de ce dernier sera le nom du processus. Puis entre ces balises
chaque fois qu'un input (<process:Input), un output (<process:Output),
une précondition (<process:hasPreCondition>) ou un effet
(<process:hasEffect>) est rencontré, il sera transformé
à un paramètre, une précondition ou un effet pour
l'opérateur créé.
//SDD est une structure de données pouvant contenir les
éléments //descriptifs d'un opérateur STRIPS (le nom, les
inputs, les outputs, //les préconditions et les effets)
class SDD{
String nom_operateur;
ArrayList<String> L_parametres=new
ArrayList<String>(); ArrayList<String>
L_preconditions=new ArrayList<String>();
ArrayList<String> L_effets=new
ArrayList<String>();
}
public Vector<SDD> traducteur(String
fichier_owls){
//operateurs est un vecteur qui peut contenir les
éléments // descriptifs des différents opérateurs
extraits de la
// descripton OWL-S
|
while((!(str2.equals("</process:atomicprocess")))
&&(tompon.hasMoreTokens())){
if(str2.equals("<process:input")){
//c-à-d: on a trouvé un input => on // l'ajoute à liste
des parametres de // l'operateur op
}
if(str2.equals("<process:output")){
//c-à-d: on a trouvé un output => on //l'ajoute à liste
des parametres de // l'operateur op
}
if(str2.equals("<process:hasprecondition")){
//c-à-d: on a trouvé une précondition
//=> on l'ajoute à liste des
// préconditions de l'operateur op
}
if(str2.equals("<process:haseffect")){
//c-à-d: on a trouvé un effet => on //l'ajoute à liste
des préconditions //de l'operateur op
}
}
//l'ajout de l'opérateur créé à la
liste des // opérateurs extraits de la description OWL-S
operateurs.add(op);
}
}
//retourner la liste d'opérateurs extraits
return operateurs;
}
|
Figure 5.4 : fonction Java implémentant
le traducteur OWLS vers opérateurs STRIPS
|