Page Numbers: Yes First Page: 1
Heading:
April 28, 1979 11:06 AM[IVY]<KRL>str-basic-primary
--from Matchspecs--
Primary descriptions
There is one last concept needed for defining the basic processes -- the notion of a primary description for a thing being represented in the system. The discussion here is a simplification which avoids a number of special cases and philsophical issues, which are picked up on in section ???. (..up on which are picked in section...????)
Assume that the state of affairs is as described in the original data base given above, with the changes:
# Sally
self: A Person
The bitten from a Bite with biter = A Dog
# Fido
self: A Dog
The biter from a Bite with bitten = A Woman
Assume also that that there was really only one instance of biting. What is the appropriate answer to the question "Who did Fido bite?" Note that the first level answer might be "A woman", if only the information in the Fido unit is used. However, if this were the response, the questioner might rightfully reply "Yes, but who?" (or "Yes, but whom?" if he or she were pedantic).
In KRL-0, there was a simple way of telling whether you had the "real answer" or only a description of the thing which was the real answer. Units (or pointers to LISP entities like numbers and strings) were treated as definite identified objects, and all other descriptions were treated as not fully identifying the object they described. In KRL-1, this association of units with the identification of objects is still the default, but it is not the only way to establish identity.
We have adopted the notion of a primary description for a thing represented by the entities in a concept system. Intuitively, the primary description is a unique place in the data structures where descriptions of that thing are accumulated. Not all the available descriptions of a thing appear in its primary description. In the example of Change 1, the fact that Fido is the biter from a Bite is part of the knowledge base, but not part of the primary description which appears in the self slot of the unit associated with Fido.
There are three fundamental things to remember about primary descriptions:
1). Many of the operations for finding and comparing entities operate by looking for the primary description for the thing represented by the entities, and do reasoning based only on the meaning found in that description. Thus, the primary description provides a way of gathering the the beliefs which are "immediately known" about a thing.
2). It is normally assumed that two entities which are both associated with primary descriptions can not be coreferent. This corresponds to the KRL-0 assumption that units normally represent distinct individuals in the world. The assumption is violated only when the violation is explicitly marked in the structure (in a syntax to be described later), usually in cases involving unidentified manifestations (as in Minsky’s "murderer" example).
3) There are three basic ways in which descriptions are indicated as primary:
a) The descriptions appearing in the slots of units (including the self slot) are assumed to be primary unless otherwise indicated.
b) For every primitive pointer (to a number, string, LISP atom or expression) there is a corresponding virtual primary description which does not actually appear in the permanent structure, but can be created whenever needed by a function which takes the pointer as its argument.
c) Any description anywhere in the structure can be marked as a primary description using the footnote mechanism. For example, we might have:
Change 5: just like change 3, except that the unit for Fido is:
# Fido
self: A Dog
The biter from a Bite with bitten = A↑1 Woman
1: A PrimaryDescription
This represents a knowledge base in which it is believed that the woman bitten is not a thing otherwise known to the system -- i.e., a case in which the answer to our hypothetical questioner who asked who Fido bit would be "I don’t know, just some woman". Of course, this belief (like any belief in a KRL-1 sytem) might turn out to be mistaken. The victim might turn out to be Sally, and the description would have to be corrected. However this kind of mis-information correction would invoke a much more elaborate set of operations than the simple linking of Sally and E2 described in the previous section.
At first it might seem that explicit footnotes are unnecessary, since we could simply create a unit for the the victim, with the self slot of that unit containing simply the description A Woman. Or, if we wanted to carefully control the chunking into units to reflect memory structure (i.e. that woman can only be thought of in the context of thinking about Fido), then we could create a slot in the Fido unit, and have the description A Woman as the description for that slot. In fact, for most of the uses we have in mind, this is not only adequate but preferred. However, it is impossible for the recursive use of KRL-1 in describing its own structures (see the discussion of bootstrapping in section ???). In this recursion, each piece of the KRL syntactic structures is a thing, to be modelled by an entity with a primary description. If this demanded a full fledged unit structure, there would be an infinite regress of units defining units defining units....
By separating the semantic notion of primary description from the structural notions of unit and slot, we make it possible to treat cases b and c more directly, and to have a way of talking about those units and slots which aren’t primary descriptions. Many of the operations of the processes described below will be couched in terms of finding and manipulating primary descriptions.
--from Brian--
C.1.c. Primary Anchors
There is one last concept needed for defining the basic processes -- the notion of a primary description for a thing being represented in the system. The discussion here is a simplification which avoids a number of special cases and philsophical issues, which are picked up on in section ???. (..up on which are picked in section...????)
Assume that the state of affairs is as described in the original data base given above, with the changes:
# Sally
self: A Person
The bitten from a Bite with biter = A Dog
# Fido
self: A Dog
The biter from a Bite with bitten = A Woman
Assume also that that there was really only one instance of biting. What is the appropriate answer to the question "Who did Fido bite?" Note that the first level answer might be "A woman", if only the information in the Fido unit is used. However, if this were the response, the questioner might rightfully reply "Yes, but who?" (or "Yes, but whom?" if he or she were pedantic).
In KRL-0, there was a simple way of telling whether you had the "real answer" or only a description of the thing which was the real answer. Units (or pointers to LISP entities like numbers and strings) were treated as definite identified objects, and all other descriptions were treated as not fully identifying the object they described. In KRL-1, this association of units with the identification of objects is still the default, but it is not the only way to establish identity.
We have adopted the notion of a primary description for a thing represented by the entities in a concept system. Intuitively, the primary description is a unique place in the data structures where descriptions of that thing are accumulated. Not all the available descriptions of a thing appear in its primary description. In the example of Change 1, the fact that Fido is the biter from a Bite is part of the knowledge base, but not part of the primary description which appears in the self slot of the unit associated with Fido.
There are three fundamental things to remember about primary descriptions:
1). Many of the operations for finding and comparing entities operate by looking for the primary description for the thing represented by the entities, and do reasoning based only on the meaning found in that description. Thus, the primary description provides a way of gathering the the beliefs which are "immediately known" about a thing.
2). It is normally assumed that two entities which are both associated with primary descriptions can not be coreferent. This corresponds to the KRL-0 assumption that units normally represent distinct individuals in the world. The assumption is violated only when the violation is explicitly marked in the structure (in a syntax to be described later), usually in cases involving unidentified manifestations (as in Minsky’s "murderer" example).
3) There are three basic ways in which descriptions are indicated as primary:
a) The descriptions appearing in the slots of units (including the self slot) are assumed to be primary unless otherwise indicated.
b) For every primitive pointer (to a number, string, LISP atom or expression) there is a corresponding virtual primary description which does not actually appear in the permanent structure, but can be created whenever needed by a function which takes the pointer as its argument.
c) Any description anywhere in the structure can be marked as a primary description using the footnote mechanism. For example, we might have:
Change 5: just like change 3, except that the unit for Fido is:
# Fido
self: A Dog
The biter from a Bite with bitten = A↑1 Woman
1: A PrimaryDescription
This represents a knowledge base in which it is believed that the woman bitten is not a thing otherwise known to the system -- i.e., a case in which the answer to our hypothetical questioner who asked who Fido bit would be "I don’t know, just some woman". Of course, this belief (like any belief in a KRL-1 sytem) might turn out to be mistaken. The victim might turn out to be Sally, and the description would have to be corrected. However this kind of mis-information correction would invoke a much more elaborate set of operations than the simple linking of Sally and E2 described in the previous section.
At first it might seem that explicit footnotes are unnecessary, since we could simply create a unit for the the victim, with the self slot of that unit containing simply the description A Woman. Or, if we wanted to carefully control the chunking into units to reflect memory structure (i.e. that woman can only be thought of in the context of thinking about Fido), then we could create a slot in the Fido unit, and have the description A Woman as the description for that slot. In fact, for most of the uses we have in mind, this is not only adequate but preferred. However, it is impossible for the recursive use of KRL-1 in describing its own structures (see the discussion of bootstrapping in section ???). In this recursion, each piece of the KRL syntactic structures is a thing, to be modelled by an entity with a primary description. If this demanded a full fledged unit structure, there would be an infinite regress of units defining units defining units....
By separating the semantic notion of primary description from the structural notions of unit and slot, we make it possible to treat cases b and c more directly, and to have a way of talking about those units and slots which aren’t primary descriptions. Many of the operations of the processes described below will be couched in terms of finding and manipulating primary descriptions.
Unit and slot anchors are defaulted to be primary unless marked otherwise using the standard functional whichIs NotPrimary in the metaDescription on the appropriate slot. An obvious case in which you don’t want a slot to be primary is in a prototypical unit where you have created a slot to share a complex descriptor which you didn’t want to repeat; for example:
# Injury13
self: a Pain with painfulPart = the surface from
a BodyPart thatIs my location
an Infection with site = my location
finger:↑1 a Finger1: whichIs NotPrimary
Un-labelled anchors (i.e. anchors other than units and slots) are defaulted to be not primary unless marked as primary with the standard functional whichIs Primary. Although this functional belongs in a metaDescription on the un-labelled anchor, there is no syntax in KRL-1 for attaching a metaDescription to an un-labelled anchor, so by standard convention this particular metaDescription can be attached to the (a) description attached to the anchor, and the interpreter will assume that the property of being primary in fact belongs to the anchor itself.