| Guide Utilisateur AROM v2.0 | ||||
|---|---|---|---|---|
| Précédent | Arrière rapide | Chapitre 8. Lecture/Ecriture d'une base de connaissances AROM | Avance rapide | Suivant |
La lecture d'une base de connaissances est l'opération qui permet d'instancier une base de connaissances AROM à partir de sa description textuelle.
La lecture d'une base AROM est réalisée via un objet de la classe KBReader. Cette classe permet, d'une part, de créer une nouvelle base AROM et de lire son contenu depuis un flux d'entrée donné. Mais elle permet également de lire des informations qui viendront compléter une base AROM existante. Ces informations peuvent appartenir au domaine du modèle, c'est à dire de nouvelles classes ou associations, ou au domaine des instances, tuples ou objets. Un court descriptif de chacune des méthodes proposées dans KBReader est donné ci-après :
createKB ( InputStream, TestResult);
: Cette méthode crée une nouvelle KnowledgeBase et lit sa description à partir du flux d'entrée.
readContent ( AMAssociation, InputStream, TestResult);
: Cette méthode permet de lire des informations qui vont venir compléter l'objet AMAssociation spécifié. Cet objet doit obligatoirement existé.
readContent ( AMClass, InputStream, TestResult);
: Cette méthode permet de lire des informations qui vont venir compléter l'objet AMClass spécifié. Cet objet doit obligatoirement existé.
readContent ( KnowledgeBase, InputStream, TestResult);
: Cette méthode peut être utilisée dans plusieurs cas. 1_ Pour créer une nouvelle base de connaissances, dans le cas où la KnowledgeBase passée en paramètre est nulle. Le résultat est alors identique à l'appel de la méthode createKB. 2_ Pour ajouter de nouvelles informations à une base de connaissances existante. Dans ce cas, la KnowledgeBase passée en paramètre est la base existante à laquelle les nouvelles informations, descriptions de structures ou d'instances, vont être ajoutées.
readFacetModifier( Class, InputStream, TestResult);
: Cette méthode permet de créer un nouvel objet FacetModifier, dont la classe d'appartenance précise est spécifiée, à partir des informations qui vont être lues.
Mais avant de lire la description d'une base, ou d'un de ses composants, il est nécessaire de spécifier quel est le format utilisé. Pour cela, l'objet AromSystem offre la possibilité d'obtenir un objet KBReader pour un format donné. Par défaut, les seul formats connu sont le format standard et le format instances. Pour obtenir un KBReader pour ces formats il suffit:
d'appeler la méthode getStandardReader
qui retourne un reader au format standardou d'appeler la méthode getReader, en passant "standard" ou "instances" en paramètre.
C'est également cette seconde méthode qui sera utilisée pour obtenir des KBReader pour des formats autres. L'exemple qui suit est un exemple de creation/lecture d'une base de connaissances au format standard.
Exemple 8-2. Lecture d'une base de connaissances
/**
* Cet exemple montre comment creer une base de connaissances a partir
* de la description de cette base au format AROM. La description de la
* base est lue dans un fichier nomme enseignement.txta fourni avec cet
* exemple.
*
* @author Veronique DUPIERRIS
*/
import arom.kr.model.KnowledgeBase;
import arom.kr.factory.AromSystem;
import arom.AromSetUp;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import arom.kr.parser.KBReader;
import helix.util.TestResult;
public class ReadKb {
/**
* Instancie et retourne la base de connaissances dont le contenu est
* decrit dans le fichier enseignement.txta.
*
* @return un objet KnowledgeBase representant la base AROM 'enseignement'.
*/
public static KnowledgeBase getSampleKB(){
KnowledgeBase enseignant = null;
// recupere une instance de la classe AromSystem qui permet de creer
// ou d'ouvrir des bases de connaissances AROM.
AromSystem factory = AromSetUp.getAromSystem();
try {
// ouvre une connexion sur le fichier contenant la description de la base
// 'enseignement'.
FileInputStream fileEnseignant =
new FileInputStream("enseignement.txta");
KBReader reader = factory.getStandardReader();
// Affiche les erreurs non bloquantes sur la sortie standard
reader.displayWarning(true);
//Utilise un objet TestResult pour tester si l'execution est correcte
TestResult result = new TestResult();
// lit le contenu de la base depuis la connexion et instancie cette
// base en creant les objects Java correspondant aux entites de la base
// de connaissances.
enseignant = reader.createKB(fileEnseignant, result);
if (!result.wasSuccessful())
System.out.println(" Une erreur s'est produite "+result);
} catch(FileNotFoundException fnfe){
System.out.println("Le fichier enseignement.txta Introuvable");
fnfe.printStackTrace();
} catch(IOException ioe) {
System.out.println("Erreur lors de la lecture de la base");
ioe.printStackTrace();
}
return enseignant;
}
public static void main(String[] args){
KnowledgeBase enseignement = ReadKb.getSampleKB();
System.out.println("Nom de la KB : "+enseignement.getName());
//Arrete la base correctement
AromSetUp.getAromSystem().cleanup();
}
}// ReadKb

| Précédent | Sommaire | Niveau supérieur | Suivant |
| Création de bases de connaissances | Ecriture de bases de connaissances | ||