forward chaining (OPS compatible)
backward chaining (Prolog compatible)
KnowledgeWorks rules perform pattern-matching directly over the object base (KnowledgeWorks CLOS objects and KnowledgeWorks structures). Forward chaining rules use this pattern-matching to perform actions, while backward chaining rules use it to deduce goals. The actions of forward chaining rules can call backward chaining rules, and the backward chaining inference engine may also invoke the forward chainer. Forward chaining rules may be grouped to increase the modularity of the rulebase and to introduce a mechanism for procedural control by explicit invocation of rule groups.
KnowledgeWorks CLOS objects are conventional CLOS objects with the simple addition of a mixin class providing KnowledgeWorks functionality, and they can be used outside the rulebase as ordinary CLOS objects. Any existing CLOS code may simply be reused and augmented with rules by adding the mixin to chosen classes.
LispWorks CLOS includes an implementation of the Meta Object Protocol (MOP) which allows the object system to be extended and customized in a standard way. In the same spirit of self-reflection, KnowledgeWorks rule-based system can be extended and customized using a Meta Rule Protocol (MRP) which allows meta-interpreters to be defined for rules. Together these protocols mean that KnowledgeWorks defines a region rather than a point in space of KBS shells, and ensure that developers are not constrained by the default behavior of the system.
KnowledgeWorks has a comprehensive programming environment that enables rapid development and debugging of rulebases. Tools are provided that enable the interactive examination of classes and objects. Graphical debugging windows allow forward and backward chaining rules to be single-stepped and monitored. The full LispWorks programming environment and tools are also available, for example, the editor which allows rules to be defined and redefined incrementally and dynamically (see the LispWorks Editor User Guide ).