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
|