hamscher@HT.AI.MIT.EDU.UUCP (02/09/87)
Date: 5 Feb 87 03:37:30 GMT From: berleant@sally.utexas.edu (Dan Berleant) Hmm. I just attended a lecture in which frame based representation schemes were touted on the basis of the fact that representation languages should be rich and flexible. Well, it sounds good, it even sounds simple, but I'm sure not sure what it means! In the context of representation languages, what is 'rich', and what is 'flexible'? Good question. Flame on... The term ``representation language'' is redundant. What other kind of language could there be? Just think about languages, period, and the terms make more sense. Languages are symbol structures that have an interpreter. And since the terms are relative, it makes more sense to ask ``what makes language A richer than language B'' and ``what makes language X more flexible than language Y.'' Here's one way to characterize richness: A is richer than B if symbol structures in A can finitely denote facts (i.e., the interpreter can interpret as) that B can't. E.g., 1st order predicate calculus is richer than propositional calculus because it has quantification, which allows you to express infinitely large propositional conjunctions and disjunctions. Frame languages, semantic nets, etc, differ as to whether they correspond to first-, second-, or omega-order logics, and that's probably the best way to characterize its richness in a technical sense. If you replace finiteness with compactness, it becomes more a matter of taste: frame languages print nicely because they supress some redundancies, but does the computer really care about that? Here's one way to characterize flexibility: X is more flexible than Y if a local incremental change to the denotation of a symbol structure in X can be done by changing fewer symbols and relations. This actually turns out to go along with richness sometimes. For example, a frame based language with inheritance and cancellation is more flexible than 1st order predicate calculus because (to beat on a tired example) you can say that birds fly and then later say that penguins, which are birds, don't fly, without having to go back and change the original statement about how birds fly. You make a local addition and you don't have to go around the whole symbol structure fixing a lot of things up. What this goes to show is that a frame language with these features has second order properties; if you go to 2nd order predicate calculus via circumscription, you get this locality property back. Now you get to the real question: what are the properties of the interpreter that come packaged with the language? Does it give you some kind of guarantee about completeness, about variant queries, about constant time complexity for query answering, or what? Does the language come with a basic set of facts about the world that you can build on (like a subroutine library in a programming language)? Or does it just stuff things into a database and let you figure out what to do with them later? The richness and flexibility of the language itself are not very interesting properties, it's the interpreter that matters. What people usually mean when they say ``representation language'' is ``belief language'', since they're talking about a language whose purpose is to denote the beliefs of an agent. But if you expect the interpreter of your belief language to do a lot of automatic inferences that solve a significant part of the software engineering problem for you, then you're probably expecting too much from it: that's the job of a programming language and environment. Flame off... Walter Hamscher