All Manuals > KnowledgeWorks and Prolog User Guide > 2 Tutorial

NextPrevUpTopContentsIndex

2.4 Browsers

There are a number of browsers for examining the state of KnowledgeWorks. They will be introduced here, and again when the Programming Environment is discussed in The Programming Environment.

2.4.1 Rule Browser

Figure 2.3 KnowledgeWorks Rule Browser

This may be obtained by choosing Window > KnowledgeWorks > Rules . The defined forward chaining contexts (or rule groups) are displayed in a drop-down list at the top. There is also a special pseudo-context for all the backward chaining rules, which is shown initially. In this case, the only other context is named DEFAULT-CONTEXT. Below that are listed the rules for the selected context. Choose DEFAULT-CONTEXT from the drop-down list and click on one of the rules, for example PLAY, and edit it by choosing Rule > Find Source from the menu bar. An editor window will appear showing this rule definition.

What this rule says is:

(root ?r node ?node)
(not (current-node ? node ?))
-->
((capi:display-message "  ANIMAL GUESSING GAME - ~
          think of an animal to continue"))
(assert (current-node ? node ?node))

which means:

If the node ?node is the root node of the tree of questions, and there is no current node indicating the question about to be asked, then tell the user to think of an animal and make the root node ?node the current node (so that the top question of the tree will be asked next). This is the rule that starts the game by instructing: "if you haven't got a question you're about to ask, ask the topmost question in the tree of questions". The detailed syntax of forward chaining rule definitions will be explained in Forward chaining.

Select "-- All backward rules --" from the drop-down list and bring up a backward chaining rule definition by clicking on its name in the Rule Browser and choosing Rule > Find Source again. The detailed syntax of backward chaining rules is in Backward Chaining.

2.4.2 Objects Browser

Figure 2.4 KnowledgeWorks Objects Browser

The Objects Browser is for exploring the contents of the KnowledgeWorks object base. Start it by choosing Window > KnowledgeWorks > Objects . The system knows about the CLOS objects that make up the object base. One class of CLOS objects in this example is the node class so choose NODE from the Preset query/pattern drop-down. All the node objects in the object base will be displayed in the pane below. Click on one of these objects and the bottom pane will display the slots and slot values of the object.

To make the display clearer and allow input without explicit package qualifiers, change the package of the Objects Browser. Do this via LispWorks > Preferences... > Objects Browser > Package . Edit the Package pane so that it says KW-USER and press OK .

Now change the Query field to read (node ?object animal ?a) and press Return. The animals associated with each node are displayed. In this game there is a tree of questions with each node object representing a question. Some nodes have a nil value for the animal slot; these are the non-terminal nodes in the question tree. The program learns your new animals by adding new nodes to the tree.

Now type ?a into the Pattern field (and press Return). This displays only the animals. The values displayed in the topmost of the two panes is the Pattern field instantiated with every possible object that matches the Query field. However, if the Pattern field is empty then the value of the Query field is taken to be the pattern.

Change the Query field to read (and (node ?n animal ?a) (test ?a)) and press Return.

Figure 2.5 Objects Browser matching animals

Only the non-nil animals are displayed.

2.4.3 Class Browser

Figure 2.6 KnowledgeWorks Class Browser

The Class Browser is obtained by choosing Window > KnowledgeWorks > Classes . This brings up the LispWorks Class Browser with an initial focus on the class standard-kb-object. Select the Subclasses tab to display the subclasses of standard-kb-object. Double click on NODE in the subclasses pane to examine the node class used in this tutorial. Select the Slots tab to display its slots and click on one of the slots in the middle pane, for example the ANIMAL slot. This displays more information about the slot in the Description pane.

Other useful features of the Class Browser include the Superclasses tab which display a graph of the superclasses; the Hierarchy tab which displays direct superclasses and subclasses; and the Functions tab which displays the generic functions or methods defined on a class either directly or through inheritance. For more information about the Class Browser, see the LispWorks IDE User Guide .

2.4.4 Forward Chaining History

Figure 2.7 KnowledgeWorks Forward Chaining History

This is obtained by choosing Window > KnowledgeWorks > FC History . If you have just run the tutorial a window will appear of which the left column contains the entry DEFAULT-CONTEXT. These are all the contexts (rule groups) the forward chaining engine has executed (in this case only one). On the right is a detailed breakdown of what happened in each cycle within this context. You will see the rule names listed down the left, and the cycle numbers along the top. The boxes indicate which rules fired. In the last cycle, you will see a black box indicating that the rule GAME-FINISHED fired, and a outlined box for the rule PLAY. This means that the rule PLAY could have fired, but that GAME-FINISHED was preferred.

Note: you can remove the package prefixes from displayed symbols by setting the current package of the FC History tool to KW-USER, in the same way as you did for the Objects Browser tool (see Objects Browser).

Look at the definition for GAME-FINISHED (find the source using the Rule Browser) and notice that it contains :priority 15. This means that the GAME-FINISHED rule has higher priority than the PLAY rule (which has the default value of 10), and so was preferred. Other methods of conflict resolution are also available.


KnowledgeWorks and Prolog User Guide (Macintosh version) - 26 Feb 2015

NextPrevUpTopContentsIndex