[om-list] Re: Models vs. Meta-Models

luke call lacall at onemodel.org
Fri Nov 17 01:53:52 EST 2000


Mark wrote:
>You write as if the software either needs no such internal structure or that
>such structure is arbitrary.  Neither is the case.  Your meta-model is your
>destiny - once you too far down the path of one meta-model you will not be
>able to change without virtually starting over.

I imagine that thing thing may change as we learn and revise, enough that import/export becomes quite useful for moving data from one version of the model to another for upgrades. Hmm.

Can you help me by describing what such a meta-model or meta-meta-model would look like? Envisioning it as a set of logical statements still isn't easy for me.

However, I've been realizing more that we do need some kind of logical statements for a few reasons. First, they represent a sort of query-cache of knowledge, which in turn might be verifiable by querying against the data in the object storage (observations) area. It would clearly take too long to determine on the fly that humans usually have one head and four limbs, or to determine things like "all ___ are ____". So these statements (whose nouns are really pointing to objects in the model or observations area, verbs may refer to scripts there) are used to speed up computation but are subject to verification. We would have to recognize that not every thing we store in the logical statements area (like Cyc has) is necessarily going to be true all the time. So the engine would have a way to go through those statements and compare them to the observations in the object model of reality and check whether the entire system is self-consistent. And we would still need a way to organize or differentiate between areas of the system which agree vs. disagree with each other, and/or a way to tell which assumptions and rules to use in a given situation or context (euclidean vs. non-euclidean; your vs. my beliefs about the purpose of life, etc.).

If we did it that way, would we still need a separate meta-model for the object model/observations area? Again, what might it look like?

The article Mark sent earlier discusses different knowledge representation systems as each providing their own recommended way of computing with the informa tion in it. A "theory of intelligent reasoning." How would you discuss the theory(ies) of intelligent reasoning of the system(s) described above? 

Do you think the above strategy would allow for the various forms of induction, deduction, inference, and whatever else you would expect of our system?

By the way, maybe the better term for "methods" would be "scripts". Since it is like a play script, telling what various objects/actors do in a simulation or in recorded real life. And some scripting languages may be a fit, for writing them. There are some very good articles in the March 2000 "Communications of the ACM" (starting on around page 73) on "programming by example" where non-programmer users can create software systems by manipulating objects and dialogs (but it's not like VB) and saying what they want those objects to do in their system. They show before & after conditions, and watch the system run then correct its behavior or provide additional flow conditions as needed. A high school class let students choose this interface vs. learning C or Java and the ones using this AI-like GUI tool made better programmers, writing games & such w/o any code. Pretty interesting. My description hardly does it justice, but it was a good idea of a way to imagine users of our system constructing simulations, what-if scenarios, or using it as a programming tool (combining smart interfaces like those in the articles, with a rich dataset like we plan to create). If you can't get to the article but want reprints or copies let me know.

Do you still envision storing primarily logical sentences (so as to use propositional or predicate calculus); vs. storing primarily the literal facts & observations they represent, together with the "original text" somehow attached as source material? I guess if there is a way to use logical rules to compute against a database of logical statements, that would be good. I still don't know enough about it though, to do much more than hope you'll make sure the system we develop has the abilities you need.  Or are you thinking that logical statements are the underpinnings for the object model (observed facts)? If so, and the logical statements are stored in an efficient way (human-language names stored elsewhere in the system, so the logic is compact/dense etc.), then what is the actual rubber-to-the-road difference between  saying "object 123456 has a 543134 with value of 324" as a compact logical statement vs. storing it in a database which is itself a compact logical record of information? I hope that question makes sense.

I wonder if the requirements document, development phases, and phase 1 use cases & success criteria accurately represent what you expect from the system. Or should you add things to them? I think the value of those is as a communication tool to make sure we're moving in the same desired direction. You could review them at these links:
   -requirements:  http://www.onemodel.org/proj/requir.txt
   -possible development phases:  http://www.onemodel.org/devel/strategy.html
   -phase 1 success criteria:  http://www.pairlist.net/pipermail/om-list/2000-September/000020.html
   -phase 1 use cases:  http://www.pairlist.net/pipermail/om-list/2000-September/000026.html

Yesterday I visted the archaeological site of an old Roman port town on the Tiber river about 20 miles west of Rome (I'm wrapping up a trip to Italy for Micron). Parts of many buildings, open areas, monuments, theater, forum, etc. still exist, with little signs and a guidebook providing descriptions and historical information. The weather was perfect. It's pleasant to imagine what it looked like when inhabited. In particular, I was thinking how nice it would be to have all the known information about it (history, physical artifact composition & dimensions, usage patterns, economic ties, etc etc) all stored in a comprehensive object model with links to everything else--it would allow a whole new level of exploration & learning, where you could almost walk through a model of the site without being there. You could even learn that much more when physically at the site, using such a tool. It would especially be nice if this object model were the tool normally used by researchers to record what they learn and know (instead of a cumbersome word processor that limits you to human language expression), alongside all the other existing knowledge that relates to it--like geology, meteorology, or whatever. Maybe sometime we'll get there!!

On the way home I'm going to try to work on fleshing out use cases, working toward a simple domain model and maybe a class interaction diagram for the phase 1 simple personal organizer. Out of that maybe we'll get an API for other non-textual interfaces to use, to access the system, and an abstration layer to the physical data storage. I'm not experienced enough to be fast at that, but I've seen that it can lead to much better-organized and understandable code, and something that then allows multiple people to write code for in an organized way. That's my mental plan--anyone have better suggestions?

Luke




More information about the om-list mailing list