All Manuals > KnowledgeWorks and Prolog User Guide > 1 Introduction

1.1 KnowledgeWorks

KnowledgeWorks® is a LispWorks® toolkit for building knowledge based systems. It is a multi-paradigm programming environment which allows developers to express problems in terms of objects, rules, and procedures. This section provides an historical perspective and an overview of the system.

1.1.1 Background

Broadly speaking, there have been two generations of commercial knowledge based system (KBS) shells. The first generation of KBS shells were built on top of symbolic programming languages such as Lisp. These shells exhibited a high degree of flexibility and functionality as a result, but suffered because of their lack of standardization, poor performance, and inability to communicate with other applications. The second generation of KBS shells were generally written in C to attack the latter two weaknesses of Lisp-based shells. However these C-based shells are inevitably less flexible, and exacerbate the standardization issue. Although written in a C (a standard language), each C-based shell must re-invent a range of features already provided as standard in every Common Lisp implementation, including the object-system and even elementary structures like lists.

KnowledgeWorks addresses all of these issues by providing a high performance rule-based system for LispWorks. The latter is a full and efficient Common Lisp implementation including the Common Lisp Object System (CLOS), and foreign function interfaces to languages such as C, C++, and FORTRAN. Hence KnowledgeWorks constitutes a tightly integrated multi-paradigm programming environment, allowing all the most powerful features of rule-based, object-oriented and procedural approaches to be combined without abandoning accepted standards.

1.1.2 Technical Overview

KnowledgeWorks includes:

The parts of KnowledgeWorks

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 Editor User Guide). You can include KnowledgeWorks in a delivered runtime application if you have LispWorks Enterprise Edition, LispWorks for iOS Runtime or LispWorks for Android Runtime. See the Delivery User Guide for details.


KnowledgeWorks and Prolog User Guide (Unix version) - 01 Dec 2021 19:35:47