Dans mon application, j'ai un certain nombre d'agents, chacun ayant sa propre base de connaissances.
Mon idée initiale était d'avoir plusieurs instances de moteur, mais le prologue de Swi ne permet qu'une seule instance.
L'autre solution consiste à ajouter un terme supplémentaire représentant l'identifiant de l'agent à chaque fait et règle, mais cela semble très lourd.
Par exemple, au lieu de :
position(10, 20).
do(action(X)):-...
Il faudrait que j'écrive partout :
position(agent0, 10, 20).
do(Agent, action(X)):-...
Parce que je mettrai à jour un agent à la fois, même sauvegarder et restaurer tout à chaque fois pourrait être acceptable, même si je ne sais pas comment le faire. Ou en utilisant des modules ?
Quelle serait une bonne façon de séparer les différentes bases de connaissances ?