|
From: Frank V. C. <fr...@co...> - 2000-10-04 05:45:35
|
Ok, Now that we can appreciate that a MetaType is a metaclass of a Type, where the intent is to describe the Type class. This is the fundemental information neccessary to build ontologies. So I have stuck my foot in deeper by added a new type : Number! Which, as you would imagine, defines the metatype MetaTypeNumber! (and example one starts to show off the difference between the class types and the metaclass types) Anyway, now comes the fun/hard/fun stuff! If a MetaType is a definition of the Type (class xxx), we need to start adding MetaAttributes which define aspects of the Type so we can really get into reasoning in a big way. For example: Some crazy mathematics guy (Herbrand) stated that the domain of RealNumbers is the set of all real numbers from -infinitity to infinity. This can be called the Herbrand Domain of RealNumbers. (Yes, break out the first predicate logic books!) From this we can then reason (assert) that, say, 5.0 is an instance of the member of the Hebrand Domain of Reals set. Obviously, for software to reason in the blind (say, given a FrameworkEntityPtr) how can it ascertain properties of the type? For example, we now know we can ask the object if it is type of Number via aPtr->getType()->isTypeOf(Number::getTypeDescriptor()) but once we know that, what else must we ask to do useful things? While I will leave the Phds in this group (everyone but me) to fill in the properties of a number (and ones that are specializations like integer, short integer, unsigned long integer, etc.), suffice it to say that the next step is capturing that information somehow. A property captures the information of a types attribute. But be careful, we need two kinds of attributes: Class attributes: this captures information neccessary for marshalling content in and out of a class instance (like a string, or other object instance). MetaType Attribute : these are defining properties that enable reasoning. So the meta-model (MetaTypes and defining MetaAttributes) make up the type ontologies, or type network graphs. Thoughts? I'm kinda rambling here because it is very late, sorry. Please ask questions or make corrections to my high school level understanding of the world. <grin> -- Frank V. Castellucci http://corelinux.sourceforge.net OOA/OOD/C++ Standards and Guidelines for Linux http://PythPat.sourceforge.net Pythons Pattern Package |