Epistemology for Software Representations

[Next] [Previous] [Top]


2 First Order Representations

Most symbolic representation systems are based on First Order Logic (FOL), and thus have two basic kinds of symbols: predicate symbols and object symbols [Carnap, 1961]. Object symbols denote instances or individuals, and predicate symbols denote properties or attributes of those individuals.

Although actual usage varies, the logical foundation is clear: set membership is a unary predicate, and therefore the name of a set is a predicate symbol [Carnap, 1947] [Quine, 1964]. This point may seem obvious or irrelevant, but the simple fact is that many practitioners ignore it, and it does come into play in the realm of software representations.

2.1 Classes, Instances, and Links

A common representation in FOL is something like the following:

Eagle(E1)
Number(10)
Age(E1,10)
Those accustomed to reading representations will interpret this as, "E1 is an Eagle, 10 is a Number, and E1's age is 10." This is not actually what it says according to the semantics of FOL, but because most representations follow this general scheme, implemented representation systems (such as are provided by object-oriented languages or frame-based languages) present scaled down first order systems which allow for the definition of three special kinds of symbols: classes, instances, and links.

An instance is similar to an object symbol in FOL except that it must be the member of some class, as with E1 and 10. A class is a special unary predicate that denotes a set, as with Eagle and Number. A link is a binary predicate that represents a relationship between two instances, as with age. The interpretation given above would be correct for a system with these constructs.

2.2 Superclass Inheritance

Another common representation in FOL is:

ForAll x Eagle(x) --> Bird(x)
This would be interpreted as "All eagles are birds," which again is not entirely correct according to the semantics of FOL, but is used so frequently to mean precisely this that representation languages almost universally supply a short-hand notation for expressing this taxonomic relationship, called subclass.

Although the subclass relationship is usually expressed as a relationship between two classes, e.g Eagle is a subclass of Bird, it is worthwhile to note that, by definition, relationships between predicate symbols (classes are, as discussed above, predicate symbols) are second order, and it is important computationally to maintain the first order status of a representation system [Gödel, 1931]. The subclass relationship really is no more than a shorthand notation for the inference shown above, with a slightly different interpretation.

Clearly, via modus ponens, the result of making Eagle a subclass of Bird would be that the instance E1 in the previous example would now be inferred to be an instance of Bird. This is known as superclass inheritance.

2.3 Identifying Non-First Order Objects

The previous section mentioned the importance of maintaining a first order representation in a system. There are two common pitfalls of representing a domain that can cause a second order construct.

2.3.1 Instances of Instances

Most representation languages do not permit an instance to have instances. Consider the implications of such a construct in FOL:

Eagle(E1)
E1(E2)
When E1 is used as a predicate symbol, the predicate Eagle becomes second-order because it is the predicate of a predicate. A common pitfall of modeling in FOL is to create a two-place predicate for instance, such as:

instance(E1, Eagle)
instance(E2, E1)
Which, syntactically, is first order. It is not, however, completely first order because, as stated in the beginning of this section, set membership is a unary predicate. This example violates the semantics of a first order system
[Carnap, 1947] [Quine, 1964].

The point here is that, despite syntactic hacks like making a predicate called instance, an instance of an instance is a second-order construct.

2.3.2 Links between Classes

First order representation languages also do not allow links between classes. A link is a two place predicate, and a class is a one place predicate, making the PreysOn link second order:

Pigeon(P1)
Eagle(E1)
PreysOn(Eagle, Pigeon)
PreysOn(Eagle, P1)
A class can not, therefore, be predicated by a link. It is common to speak of the relationship between an instance and its class as a link, but this must be understood to be different than a link between two instances.

2.4 Extensions to First Order Systems

Many representation systems provide small extensions that, while second order, are tightly controlled to avoid the computational problems associated with second order systems.

2.4.1 Smalltalk Meta-Classes

Smalltalk [Goldberg and Robson, 1983] provides the ability for classes to have certain properties of instances. They can, like instances, be sent messages and have their own variables, which are defined as part of the meta-class description of the class. While this is second order, it is not prone to problems because this aspect of the representation is not subject to inference (Smalltalk provides only for superclass inheritance).

Smalltalk classes are also themselves instances of a special class named class, making them instances which can have instances. Again, this second order relationship is controlled because there is no actual inference involved, it is provided more to keep the syntax cleaner, and make the message passing paradigm pervasive in the language.

2.4.2 Classic Meta-Individuals

Classic [Brachman, et al., 1991], a modern descendent of KL-ONE [Brachman and Schmolze, 1985], employs an approach to representing links on classes that has been called the abstraction relationship [Brachman, 1983].

This approach involves creating, as part of the language, a special kind of instance for each class which represents the class as an object. While these instances (called meta-individuals) behave like all other instances (having links and being instances of a concept called concept), they have a special relationship, the abstraction relationship, between themselves and the class they represent. Each class in Classic, then, can have instances and a meta-individual.

Again, as with Smalltalk, this second order relationship can exist because it is not used in any inference.


Epistemology for Software Representations - 01 MAY 95
[Next] [Previous] [Top]

Generated with CERN WebMaker