Searching an Active Ontology

An active structure isn't really an ontology, but we will describe searching something which in its simplest form looks like an ontology. The ways it differs from a static ontology are many:

The operators are logically and existentially controllable
Inheritance can be controlled from below
Relations among objects can be all of those in English

The structure is formed of objects and relations :

The objects can be people or physical things or computational objects like percent
The relations can be membership or attributes or invocations or groupings or cause or commence or....

The objects and the links between them carry states, so objects can exist, may exist, do not exist. Relations can be active or passive, and may not exist (the structure is there of course, just marked to be ignored, and this marking propagates through the structure based on the properties of the relations).

A diagram of the structure

memberatt.bmp (912054 bytes)

Searching is carried out by moving through the structure while observing the states - a relation that is turned off is not used, an object that currently does not exist is not included. Calculation is performed by joining and intersecting sets of objects and relations.

Some examples:

IF( recurse members a, FND( (members node), = 0))!   

finds the leaf nodes (the nodes that have no members) from the object a

Let's say we found "three percent" in the text we were reading (automatically). We created a new constant, which has address 12345. We looked at the percent object, saw it had a virtual attribute of Value, so we linked the Value attribute of the "three" CardinalNumber object as an attribute of node 12345, and also linked the Value object to the virtual attribute, so it acquired the properties of the numeric attribute of percent - RealNumber, etc., then raised an Attributor job

Variable 12345 CONSISTENT (recurse children Percent and recurse elements CurrentContext)

CurrentContext is the context in the knowledge model that refers to what is currently being read - it may be highly detailed, or it may be very sparse.

This will find all children of Percent - that is, search down through Member, Alternative, Meaning and Invocation relations and virtual invocations (how Children is defined) by recursion, intersect those nodes with all elements that are in the CurrentContext  (Elements is defined to include Attribute, Member, Invocation, Components, Contains, etc.), together with parameters of relations. The resulting set is compared for consistency with Variable 12345 - consistency is checked on the basis of   identical objects, parentage, attributes, numerical consistency.

If it happened we had two percentages in the CurrentContext

DelayPercent , with its numeric value set to a range 0.5<->5.0 (a real range)

MaximumPercent, with its value set to a range of 5..30 (an integer range - we do not expect real numbers).

The returned set would include only DelayPercent - it has the same parent, Percent, it is in the context and it has attributes consistent with the attributes of the search object. So now we make the search object an invocation of the object in the model, which tells us a lot about what it is connected to. The new object immediately becomes part of the CurrentContext, and will be seen next time we look for a match to something else in the text. So now we are not searching back in the text for anaphora, but in the structure we built from the text, where "back" doesn't have the same meaning.

We do the same where we find a relation on an object in the text

"the completed products"

We create a ToComplete relation and attach its second parameter to products (the system looked up the definition of ToComplete, used this to orient the relation), then looked in the model for something consistent with this. There are synonyms everywhere - ToFinish as a synonym for ToComplete, goods as a synonym for products.

Many relations can operate at many levels on an object -

The injured footballer was carried from the field.

His injured knee required surgery.

These are consistent - ToInjure distributes over the components of an object, something consistency matching must use. The "injured" in the second sentence is not necessary, as surgery operates on injury or disease.

There are specialised operations, such as NOCHILD, within the hierarchy - something can be a portion of something else - only certain properties can be inherited across the operator, but nothing that is a property of the integral whole, like its name (a portion of a cake has many of the properties of cake, but is not a cake).


Active Search

Searching the Internet

Hierarchy Specific Operators


Finding Parents