| Guide Utilisateur AROM v2.0 | ||||
|---|---|---|---|---|
| Précédent | Arrière rapide | Chapitre 8. Lecture/Ecriture d'une base de connaissances AROM | Avance rapide | Suivant |
L'écriture d'une base de connaissances consiste à traduire les différents objets Java d'une base de connaissances AROM selon un formalisme donné. Cette descripton peut être enregistrée et pourra subir l'opération inverse, voir la section Lecture de bases de connaissances, afin d'instancier de nouveau un objet KnowledgeBase.
L'écriture se fait par l'intermédiaire d'objets KBWriter et, tout comme pour la lecture, il existe des objets acceptant des formats AROM différents. L'obtention du KBWriter pour un format précis se fait en appelant la méthode getWriter d'AromSystem avec l'identificateur du format en paramètre.
Mais quelque soit le format choisi, l'objet KBWriter retourné permet d'écrire sur un flux de donné:
la base de connaissances complète, c'est à dire l'ensemble de ses structures ainsi que l'ensemble de ses instances
une structure donnée, c'est à dire l'ensemble des slots qui sont définis au niveau de cette structure.
une instance donnée, c'est à dire l'ensemble des valeurs définies pour cette instance.
Exemple 8-3. Écriture de base de connaissance
import arom.AromSetUp;
import arom.kr.factory.AromSystem;
import arom.kr.model.KnowledgeBase;
import arom.kr.model.AMClass;
import arom.kr.parser.KBWriter;
import arom.kr.model.EntityCreationException;
import java.io.File;
import java.io.IOException;
import java.io.FileOutputStream;
/**
*
* Cette exemple montre comment ecrire (sauvegarder) la description d'une base de
* connaissances au format AROM.
*
* @author Veronique DUPIERRIS
*/
public class WriteKb {
/**
* Cette methode cree une nouvelle base de connaissances nommee "BaseTest" et
* cree un ensemble de classes dans cette base.
*
* @return l'object KnowledgeBase representant la nouvelle base de
* connaissances.
*/
public static KnowledgeBase createKb(){
String kbName = "BaseTest";
AromSystem kbFactory = AromSetUp.getAromSystem();
KnowledgeBase kb = null;
try{
kb = kbFactory.createKB(kbName, new Object[0]);
AMClass personne = kb.createClass("Personne", null);
AMClass femme = kb.createClass("Femme", personne);
AMClass homme = kb.createClass("Homme", personne);
} catch(EntityCreationException ece){
System.out.println("Une erreur est survenue lors de la creation de la base : ");
System.out.println(ece.getMessage());
//Arrete la base correctement
AromSetUp.getAromSystem().cleanup();
System.exit(1);
}
return kb;
}
/**
* Cette methode enregistre la base de connaissances passee en parametre
* dans le fichier newBase.txta.
*
* @param kb La base de connaissance a ecrire.
*/
public static void writeKB(KnowledgeBase kb){
// recupere une instance de la classe AromSystem qui permet
// d'obtenir un Writer permettant l'ecriture d'une base AROM.
AromSystem aromSystem = AromSetUp.getAromSystem();
KBWriter kbWriter = aromSystem.getStandardWriter();
File kbFile = new File("newBase.txta");
try{
// ouvre une connexion sur ce fichier
FileOutputStream writer = new FileOutputStream(kbFile);
//ecrit la base de connaissances au format AROM.
kbWriter.write(kb, writer);
}catch(IOException ioe){
ioe.printStackTrace();
//Arrete la base correctement
AromSetUp.getAromSystem().cleanup();
System.exit(1);
}
}
public static void main(String[] args){
KnowledgeBase kb = createKb();
writeKB(kb);
System.out.println("Nom de la KB : "+kb.getName());
AMClass classFemme = kb.lookupClass("Femme");
System.out.println("Nom de la Classe : "+classFemme.getName());
//Arrete la base correctement
AromSetUp.getAromSystem().cleanup();
}
}// WriteKb