Making object-oriented databases more knowledgeable (from ADAM to ABEL)
Object Oriented Data Bases (OODBs) have been proposed both for coping with the impedance mismatch problem and for increasing the semantic details kept in the Data Base by collecting not only the structural features of the application but the behavioural ones as well. This is achieved by including procedures (called methods) within schema definition. However, methods have sometimes been overused in the sense that the code encapsulated refers not only to how the operation is implemented but also to other kinds of knowledge that is implicit in the code. As a result, not only is it more difficult to update the system, but its ease of use, legibility and inferential power are also diminished. The aim of this work is to provide a set of primitives to represent knowledge explicity in an OOBD. Until now, much of this knowledge was implicit in method code, and so could not be used for other purposes. The focus is on three different kinds of knowledge, namely integrity constraints, user-defined relationships and active behaviour. Integrity constraints are declaratively specified as an additional facet of the attributes. Relationships are seen as 'first-class' objects where novel features such as inferred properties and the operational semantics of the relationship are supported. Finally, active behaviour is provided by introducing active rules. Here the principal contribution lies in representing as an object not only the rules but also the rule manager. Hence, future requirements can be supported by specialising the current rule manager. This has been born out by an implementation in ADAM, an OODB in Prolog. It has to be emphasised that this extension has been made in an object oriented fashion by using metaclasses. The resulting system is called ABEL (ABerdeen Euskadi data modeL) which is intended as a successor of ADAM.