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