Conventional object-oriented data models are "closed". Although they allow users to define
application-specific classes, they usually come with a fixed set of modeling primitives. This
constitutes a major problem as different application domains have different requirements on
a data model. For example, database integration requires the possibility to overcome
different representations of the same data. Or, multimedia applications need special support
in handling different sources of data and in organizing inter- and intra-multimedia document
references.
At a first glance there are two common solutions to the problem: (1) Use different special
data models for different application domains. (2) Use a common data model covering all
specific application needs to more or less extent. The first solution leads to disintegrated and
isolated applications, each using a different data model. The second solution has to cope with
two opposite goals of the common data model, simplicity and specific application support. If
the model is kept simple providing only general modeling concepts, it will be easy to handle
and to understand, but it will not fully meet the requirements of each specific application. If
the model is overloaded with too many specialized concepts, it is hard to manage and hard to
understand, as for each application only a subset of the concepts the model provides is
actually needed.
The solution to this problem is to provide an "open" object-oriented data model, which is
simple but which can be extended in itself by additional modeling concepts for specific
application needs. Such models have recently been termed "RISC models" in anology to
reduced instruction set computers [MH93] and found very relevant in providing meta object
protocols for object system interoperability [MAN93, MH93]. The approach towards an
"open" object-oriented data model also goes beyond the approaches of static, closed models
as, e.g., taken in the international ODMG [CAT93] standardization effort.
In this book, we present a solution to develop a RISC model using an extended metaclass
concept. Whereas metaclasses usually determine only the structure and behavior of classes,
our metaclasses also determine the structure and behavior of individual objects, i.e.,
instances of classes which are instances of metaclasses. We show, using VODAK, how the
extended metaclass concept can be integrated homogeneously into object-oriented data
models. For this purpose we introduce the basic concepts of the VODAK model (types,
properties, methods, inheritance, classes, and objects) as far as they are relevant for the
definition of the metaclass concept.