[comp.object] Survey: how do we really use objects?

timm@runxtsa.runx.oz.au (Tim Menzies) (11/28/90)

Are inheritance hierarchies a good way you represent
knowlege?

I  recently presented a paper  (by  proxy, thanx  Alan) to
the 1990 Australian Joint Artificial Intelligence
conference. In that, I  observed  that in the three years
that  I have been using OO  tools for expert systems, I have
**never** shown  an object  hierarchy to a  expert.  My own
hierarchies were so intiricate, I ended up hiding them
behind interfaces that presented some abstarcted/filtered
view of  networks of instances to the experts.

One of  the comments  after the presentation was that
hierachies **MUST BE** a good  way of representing knowlege
because of the all  the real world knowledge represented as
hierarchies. For example, in biology, the classification of
plants and animals  are all presented hierarchically.  (I
don't agree with this argument BTW, see below).

Now, we could debate this issue, or we subject it  to an
emperical test.  Could  anyone  who has actually built  a
non-trivial object system email me (or  the net) and let me
know how  much of the explicit  business/expert knowledge
was clearly defined in an inheritance hierarchy? If there is
enough interest in this,  I'll post a reply.

As to the above argument re plant/animal classification:
Just what are those  hierarchies used for? Actually expert
processing of significant biologically problems?  Or only as
a learning tool for new biologists?  (I suspect  the
latter.)

My own experience has been that in order  to make an
inheritance hierarchy useful (in some non-trivial sense),
then we need to surround/bury the hierarchy in such an
intricate architecture that the significance/usefulness of
the hierarchy reduces  to zero. Hierarchies, I have found
are useful for  storing programmer knowledge, but not non-
programmer expert knowledge.

--
 _--_|\  Tim Menzies (timm@runxtsa.oz)        "Two years ago, I couldn't even
/      \ HiSoft Expert Systems Group,          spell 'knowledge engineer'.
\_.--._/ 2-6 Orion Rd Lane Cove, NSW, 2d066    Now I r 1."
      v  02 9297729(voice),61 2 4280200(fax)                John McDermont

egdorf@zaphod.lanl.gov (Skip Egdorf) (12/03/90)

In article <2586@runxtsa.runx.oz.au> timm@runxtsa.runx.oz.au (Tim Menzies) writes:
>
>   Are inheritance hierarchies a good way you represent
>   knowlege?
>  ...
>   One of  the comments  after the presentation was that
>   hierachies **MUST BE** a good  way of representing knowlege
>   because of the all  the real world knowledge represented as
>   hierarchies.
>  ...
>   My own experience has been that in order  to make an
>   inheritance hierarchy useful (in some non-trivial sense),
>   then we need to surround/bury the hierarchy in such an
>   intricate architecture that the significance/usefulness of
>   the hierarchy reduces  to zero. Hierarchies, I have found
>   are useful for  storing programmer knowledge, but not non-
>   programmer expert knowledge.

Your last sentence goes to the heart of the matter. An object-oriented
system is a design or a programming level abstraction. At this level it
is the (current) finest known engineering paradigm for construction of
software systems available. Its purpose is precisely to store programmer
knowledge. It serves this purpose very well.

An expert system stores knowledge of a different type dealing with a
very different realm. This is true even if the expert system deals with
the realm of programming as would (e.g.) a programmers assistant. The
expert system is a user-level abstraction dealing with user-level
concepts.

While some (as you point out, simple) hierarchies exist that capture some
bits of knowledge, real knowledge-based systems require more complex
representations than are available in object-oriented programming systems.
While object-oriented programming systems can be used to capture such simple
heirarchies, such use in real applications does not allow the capture of
the more complex relationships. The object-oriented programming system
captures the lower-level details of the construction of the higher-level
knowledge-representation system (when properly used as am implementation
tool.)

The expert system deals with knowledge representation at the level of
meeting the user requirements for which the expert system is designed.
The object-oriented system captures knowledge dealing with the implementation
and design of the first.

I expect that your question stems from an inappropriate mixture of the
two unrelated concepts.

						Skip Egdorf
						hwe@lanl.gov

ksand@Apple.COM (Kent Sandvik) (12/03/90)

In article <EGDORF.90Dec2171044@zaphod.lanl.gov> egdorf@zaphod.lanl.gov (Skip Egdorf) writes:
>In article <2586@runxtsa.runx.oz.au> timm@runxtsa.runx.oz.au (Tim Menzies) writes:
>>
>>   Are inheritance hierarchies a good way you represent
>>   knowlege?

>While some (as you point out, simple) hierarchies exist that capture some
>bits of knowledge, real knowledge-based systems require more complex
>representations than are available in object-oriented programming systems.
>While object-oriented programming systems can be used to capture such simple
>heirarchies, such use in real applications does not allow the capture of
>the more complex relationships. The object-oriented programming system
>captures the lower-level details of the construction of the higher-level
>knowledge-representation system (when properly used as am implementation
>tool.)


The objects are quite cabable of knowing knowledge about their internal
data and relationships between. But it is true that the OOPS paradigm
is not very well suitable for cross-knowledge.

If we look at multiple inheritance and knowledge inheritance, we still
have problems with definitions of relationships between objects.

Has anyone looked at providing meta-information in meta-objects that 
have built-in methods for knowledge requisition, for example having
Prolog methods and fields embedded in meta-objects?

regards,
Kent Sandvik 



-- 
Kent Sandvik, Apple Computer Inc, Developer Technical Support
NET:ksand@apple.com, AppleLink: KSAND
Zippy says: "With C++ we now do have the possibilities to inherit
dangling pointer problems"

naren@cs.UAlberta.CA (Narendra Ravi) (12/03/90)

ksand@Apple.COM (Kent Sandvik) writes:

>In article <EGDORF.90Dec2171044@zaphod.lanl.gov> egdorf@zaphod.lanl.gov (Skip Egdorf) writes:
>>In article <2586@runxtsa.runx.oz.au> timm@runxtsa.runx.oz.au (Tim Menzies) writes:
>>>
>>>   Are inheritance hierarchies a good way you represent
>>>   knowlege?

>>While some (as you point out, simple) hierarchies exist that capture some
>>bits of knowledge, real knowledge-based systems require more complex
>>representations than are available in object-oriented programming systems.
>>While object-oriented programming systems can be used to capture such simple
>>heirarchies, such use in real applications does not allow the capture of
>>the more complex relationships. The object-oriented programming system
>>captures the lower-level details of the construction of the higher-level
>>knowledge-representation system (when properly used as am implementation
>>tool.)

Not always true. See below.


>The objects are quite cabable of knowing knowledge about their internal
>data and relationships between. But it is true that the OOPS paradigm
>is not very well suitable for cross-knowledge.

No, Not just the OOPS paradigm, but coupled with deduction
it definitely is a good tool. See below.

>If we look at multiple inheritance and knowledge inheritance, we still
>have problems with definitions of relationships between objects.

Yes, but addition of epistemic knowledge would definitely
help.

>Has anyone looked at providing meta-information in meta-objects that 
>have built-in methods for knowledge requisition, for example having
>Prolog methods and fields embedded in meta-objects?

The people working on the CYC project at MCC should be able
to answer this question. The articles they publish definitely
give an indication that they use inheritance hierarchies. But
what exactly they use to enhance the usability/maintenance
of information (even) at the meta-level is not very clear.

They do talk of special inference procedures to manage large
bodies of (non-programmer) knowledge. Here is a small
quote

   ... it is likely that the new constructs (to CycL,
   the representation language) are going to be
   incrementally added to improve CycL's inferencing.

   ... such special purpose constructs (templates for
   classification, inheritance, special-purpose
   inference mechanisms, and so on) is likely to
   prove bothersome to other programs that use Cyc.

The representation provides (according to the authors) a basis of
epistemological and default reasoning.

The paper I am referring to is the Midterm report on Cyc.

Cyc: A Midterm Report: R. V. Guha, D. B. Lenat
AI Magazine, Fall 1990.

But this is not where actual technology is discussed. One
gets only a flavor for what is happening.

I have said enough. Now other enlightened people can provide
a better analysis of the issue.


>regards,
>Kent Sandvik 

Cheers,

Naren.
-- 
=======================================================================
* Narendra Ravi                  * 615, General Services Building,    *
* Email : naren@cs.ualberta.ca   * Department of Computing Science    *
*       : naren@alberta.UUCP     * University of Alberta              *
* Tel   : (403) 492-3520 (Off)   * Edmonton, Alberta, CANADA T6G 2H1  *
=======================================================================

marick@cs.uiuc.edu (Brian Marick) (12/03/90)

timm@runxtsa.runx.oz.au (Tim Menzies) writes:

>As to the above argument re plant/animal classification:
>Just what are those  hierarchies used for? Actually expert
>processing of significant biologically problems?  Or only as
>a learning tool for new biologists?  (I suspect  the
>latter.)

In my (very limited) understanding, biological taxonomies are not
"single inheritance".  They're closer to multiple inheritance, but I'm
not sure that's a good fit, either.  They are "polythetic", which
means:

1. There are a number of relevant properties.
2. Each property is possessed by large numbers of individuals.
3. No property is possessed by every individual.

This means that there is no abstract archetype.  The search for one
can lead to an explosion of categories, one for each possible (or
noteworthy) combination of properties, with a complicated and
seemingly arbitrary inclusion structure (as you pointed out).

Here's a reference I had lying around:

Rodney Needham.  'Polythetic Classification: Convergence and
Consequences'.  Man, Vol. 10, No. 3, September, 1975, pp. 349-369.

Brian Marick
Motorola @ University of Illinois
marick@cs.uiuc.edu, uiucdcs!marick

eanv20@castle.ed.ac.uk (John Woods) (12/06/90)

There are a number of ways of representing organisms in hierarchies, but
must biologically reasonable organisations reflect the perceived truths
about evolutionary history, the currently most-widely accepted view
still being that all organisms spring from just one ancestral group.

                                   ...John

burdick@mentor.cc.purdue.edu (Bill Burdick) (12/10/90)

If you look at James Allen's book on natural language processing (I
think it's called _Understanding Natural Language_, but I'm not sure),
there is a section on understanding by meaning (I think it's chapters
7 - 10).  In that section, he uses a semantic network to model the
meanings of words.  This network is actually an inheritance graph (a
directed, acyclic graph) which uses multiple inheritance.

Inheritance graphs are also known as generalization hierarchies; as
you go up the graph, you get more general.  Inheritance is useful in
modelling things (or parts of things) which can be expressed in
different levels of generality.

No human has perfectly organized knowledge (Mansky says "the brain is
a kludge").  To get a good expert system going, you'll probably not
only need rules, but a model of system's domain.  The model will
probably end up being OO and the rules will probably end up being a
rule-base (not OO).  The meaning section in Allen's book also follow's
this pattern -- the meanings of words are modeled by a semantic
network where the nodes contain information about which rules to
activate and deactivate (actually the rules form a full {not context
free} grammar).

So you'll probably end up needing inheritance (although you may not
represent it explicitly) for an expert system, but that's not the
whole thing.

	-- Bill Burdick
	burdick@mentor.cc.purdue.edu