Architecture of an Expert System
Typical expert system architecture is shown in Figure 11.1.
The knowledge base contains the specific domain knowledge that is used by an expert to derive conclusions from facts.
In the case of a rule-based expert system, this domain knowledge is expressed in the form of a series of rules.
The explanation system provides information to the user about how the inference engine arrived at its conclusions. This can often be essential, particularly if the advice being given is of a critical nature, such as with a medical diagnosis system.
If the system has used faulty reasoning to arrive at its conclusions, then the user may be able to see this by examining the data given by the explanation system.
The fact database contains the case-specific data that are to be used in a particular case to derive a conclusion.
In the case of a medical expert system, this would contain information that had been obtained about the patientâ€™s condition.
The user of the expert system interfaces with it through a user interface, which provides access to the inference engine, the explanation system, and the knowledge-base editor.
The inference engine is the part of the system that uses the rules and facts to derive conclusions. The inference engine will use forward chaining, backward chaining, or a combination of the two to make inferences from the data that are available to it.
The knowledge-base editor allows the user to edit the information that is contained in the knowledge base.
The knowledge-base editor is not usually made available to the end user of the system but is used by the knowledge engineer or the expert to provide and update the knowledge that is contained within the system.
The Expert System Shell
Note that in Figure 11.1, the parts of the expert system that do not contain domain-specific or case-specific information are contained within the expert system shell.
This shell is a general toolkit that can be used to build a number of different expert systems, depending on which knowledge base is added to the shell.
An example of such a shell is CLIPS (C Language Integrated Production System). Other examples in common use include OPS5, ART, JESS, and Eclipse.