COGENT Version 2.3 Help

Knowledge Base/Hierarchical


Hierarchical knowledge bases are used to contain ontologies of classes. Each class consists of a name, a (possibly empty) set of parent classes, a (possibly empty) set of attributes with values, and a (possibly empty) set of instances. Classes may be thought of as being arranged in a hierarchical fashion, by virtue of each class's parent classes. Class inclusion relations and inheritance of attributes operate over this hierarchy.

Hierarchical knowledge bases may be thought of as being a bit like buffers, in that they may be queried (by the usual buffer "match" operation) and "things" may be stored in them (by the usual buffer modification operations: "add", "delete", etc.). They differ in three main respects:

  1. the hierarchical structuring of their contents,
  2. hierarchical knowledge bases don't have the decay properties associated with buffers; and
  3. if properties are appropriately set, hierarhical knolwedge bases may be accessed from any box within the scope defined by the compound containing the hierarchical knowledge base, even if the box attempting to access it does not have appropriate arrows.


The elements of hierarchical knowledge bases are class definitions, which specify an ontology comprising classes and instances, with attribute inheritance between related classes. A simple class definition for aspirin, which is both an anitinflammatory and an analgesic is as follows:

When a hierarchical knowledge base is initialised, the class hierarchy is converted to a series of terms of the following forms:

These terms may be "matched" by (for example) rules in a process that accesses the knolwedge base using the standard buffer match condition. The match condition is sensitive to the relations among classes, instances and attributes, and can infer additional information. Extra elements which are not actually contained in the state will be inferred, e.g. instance(tweety, bird) and attribute(tweety, flies, true). With default settings of properties governing inheritance, objects (subclasses and instances) will inherit attributes from container classes, if no value is specified explicitly for the objects, but if a value is specified explicitly for an object, it will override any inherited value. e.g. we can specify attribute(tweety, flies, false)


The precise behaviour of a hierarchical knowledge base is determined by the values of a number of properties. All hierarchical knowledge bases have the following properties:

The Current Knowledge View

The current knowledge viewer shows a pictorial representation of the contents of the hierarchical knowledge base during processing. Relations between classes are shown, as are attributes and their values and instances of classes.

The Class Editor

Hierarchical knowledge base elements represent classes, and are edited using COGENT's class editor. The editor is analogous to other element editors in COGENT, and allows the specification of a class's name, description, parent classes, attributes and values, and instances. on a class. Note that if a class has multiple parent classes this may be specified by providing a list of class names in the "Parent Classes" field (i.e., a comma separated sequence of classes enclosed in square brackets).

COGENT Version 2.3 Help