[net.ai] Frames Question

SHEBS@UTAH-20.ARPA (06/26/84)

From:  Stan Shebs <SHEBS@UTAH-20.ARPA>

As a relief from the insubstantial debates on insubstantial souls, I
have a question about frames.

>From my studies, I have observed two fundamentally ways of viewing
slots in frames: as heads of predicates, or as instance variables of
objects.

In the first view, if a FIDO frame has an AGE slot with the value 2,
then that is equivalent to making the assertion AGE(FIDO,2).  Thus the
name of the slot becomes the head of a predicate.  The advantages of
this view are twofold: the inheritance mechanism of a frame system
then appears as an inference rule, and slots can be made into frames
themselves, thus making meta-level knowledge easy (for instance, one
could say DATATYPE(AGE,NONNEGATIVE_NUMBER) to assert that AGE could
only hold values of a certain type).  This view of slots as
first-class concepts or frames is exemplified by RLL, and by simple
frame systems built on top of logic languages.

The second view is exemplified by FRL, its descendants, and any of a
number of object-oriented systems.  Here, slots are in some sense
"local" to frames or classes of frames, and an AGE of FIDO may have a
completely different meaning than an AGE of PINOT_NOIR.  Meta-level
knowledge generally resides in facets and other subparts of a slot, so
in a well-developed system, the "value" of a slot is often a rather
complex entity.  Interestingly enough, the facets (such as $VALUE,
$IF-ADDED etc) are usually quite consistent in meaning (which no doubt
simplifies meta-knowledge; one then needs only a few frames named
$VALUE, $IF-ADDED, ... to express the meanings of facets).

Each view can be simulated using the other.  To simulate the "slot as
frame view", the "objects view" can make all slots be defined for a
toplevel frame THING, and then have frames with the same names as the
slots; while the "slot as frame view" can have slots of slot frames
that point to many different ones (so for instance the AGE slot frame
has a slot VERSIONS that points to ANIMAL_AGE and WINE_AGE slots - all
the associated paperwork is handled automatically by the system).  Of
course, such simulations may be extremely inefficient! but I just
mention them to show that neither method is inherently more capable
than the other.

Now for the question: which view is favored by practitioners, and why?
Do any existing KRLs allow the view of slots to be changed according
to the problem, or do the two views require such fundamentally
different implementations that it's just better to stick to one or the
other?  Is it possible to do work using frames without being concerned
about the particular view imposed by the frame system? (my own
experience says no - converting an FRL-based program to an RLL-based
one is not easy!).  Are there problem domains in which one view is
distinctly superior to the other?  If so, what are they, and why is
that view superior?

Any answers or insights will be greatly appreciated...

                                                        stan shebs