There are two types of derived class: specialization derived classes (or derived subclasses) and generalization derived classes (or derived superclasses). These constructs have similarities to analogous constructs defined in [Abiteboul & Bonner 91,Rundensteiner 92,Scholl, Laasch & Tresch 91].
<OPM derived class> ::= <specialization derived class>
| <generalization derived class>
;
A derived class can have user specified attributes
and derived attributes
with extended attribute composition:
[
]
[
]
[
],
where
is an underlying non-derived class
for
.
An underlying non-derived class for
is recursively defined as
follows:
is an underlying non-derived class for
;
is an underlying non-derived class
for
.
<derived view attribute> ::= ATTRIBUTE <simple attribute name>
DERIVATION ':' <view simple attribute derivation>
<attribute description>
<domain-specific properties>
;
<view simple attribute derivation> ::= <extended attribute composition>
| userspecified
;
<extended attribute composition> ::= <extended composition path>
| <extended attribute composition> or
<extended composition path>
;
<extended composition path> ::= '[' <class name> ']' <composition element>
| <extended composition path>
'[' <class name> ']' <composition element>
;
<composition element> ::= <attribute name>
| '!' <attribute name>
;