Path: utzoo!attcan!uunet!lll-winken!ames!haven!aplcen!jhunix!apl_aimh From: apl_aimh@jhunix.HCF.JHU.EDU (Marty Hall) Newsgroups: comp.ai Subject: Re: question on knowledge representation Message-ID: <530@jhunix.HCF.JHU.EDU> Date: 16 Jan 89 22:26:30 GMT References: <252@h.cs.wvu.wvnet.edu> Reply-To: apl_aimh@jhunix.UUCP (Marty Hall) Organization: AAI Corp AI Lab, JHU P/T CS Faculty Lines: 42 In article <252@h.cs.wvu.wvnet.edu> siping@b.cs.wvu.wvnet.edu (Siping Liu) writes: > [Asks re distinguishing inherited from local values, asks if KEE > has this capability] > > P.S. to make my point clearer, here is an example. > > bird: can_fly: "TRUE" > |isa > penguin : can_fly: "FALSE" > >{here "can_fly" should be treated as default value and not inherited in > penguin since it has local value.} All the frame systems that I'm familiar with (ART, KEE, KnowledgeCraft, CLOS/Loops, Flavors, etc) have the capability to have local values override inherited ones. Is that what you were asking? > human: sports: "tennis" "swim" > |isa > man: sports: "boxing" > >{here "sports" describes truth without exception. "man" should inherit > it from human even they have their exclusive sports.} KEE has the ability to specify different inheritance roles for different slots. The default is "Override.values", which would apply in your "Tweety is a bird" example. One of the others is "union", which might apply in your second example: combining values but not repeating any ones they have in common. There are a bunch of other options as well, plus you can specify that inheritance will be controlled by a method that you write yourself. I don't recall ART too well, but I think it would at least allow combining inherited values as well as the default of overriding the inherited with the local. KnowledgeCraft has this type of capability as well and is even more flexible than KEE in allowing user-defined inheritance roles. Hope that was helpful- - Marty Hall