简体   繁体   中英

how to create Meta-rules and/or meta-interpreter for an Expert System with Swi-Prolog

I wanna create an expert system with meta-interpreter with SWI-Prolog... what is the best and the easier way to make it? which is the procedure to make it?

Many of the meta-interpreters for expert systems are based on the so called vanilla interpreter. This is an interpreter for Prolog without cut and without built-ins. it reads as follows:

solve(true) :- !.
solve((A,B)) :- !, solve(A), solve(B).
solve(H) :- clause(H,B), solve(B).

You can readily use it to solve the following knowledge base and query. In some Prolog systems, the more ISO compatible ones, you need to mark the predicates dynamic, so that clause/2 can find them:

pet(dog):- size(medium), noise(woof).
pet(cat):- size(medium), noise(meow).
pet(mouse):- size(small), noise(squeak).
size(medium).
noise(meow).

?- solve(pet(X)).
X=cat

Starting from the vanilla interpreter you can add various expert system like features:

  • Knowledge Acquisition
  • Explanations
  • Certainty Factors
  • Forward Chaining
  • Frame Representations
  • Etc...

Bye

PS: The following book shows how: http://www.amzi.com/ExpertSystemsInProlog/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM