this a question for those who have implemented the AOM. I am currently
finalising the draft model of AOM for ADL 1.5, to accommodate the
various things need to support specialisation and templates properly.
One of the harder parts of the model is to cleanly support attributes
'at a path', which happens when a redefinition is somewhere deep inside
the structure. You will have seen how in the current .oet template XML
format, all 'rules' (which are overrides) are keyed by path.
There are various options for modelling this, which I am exploring by
means of the Eiffel implementation. One would be to have a subtype of
C_ATTRIBUTE that encapsulates the behaviour related to redefined
attributes that occur at a path. Now, as it happens, in our Eiffel
archetype compiler, we have never implemented the two subtypes
C_SINGLE_ATTRBUTE, and C_MULTIPLE_ATTRIBUTE, mainly because they are
substantially the same (this is because even single-valued attributes in
an archetype can have more than one object constraint - i.e. a
C_SINGLE_ATTRBUTE can have multiple children, just like a
C_MULTIPLE_ATTRIBUTE). However, I suspect that these subtypes have been
implemented by others, and that subtyping to represent specialised
redefinition would not be possible in those models.
Can AOM implementers indicate what they have done?
thanks
- thomas beale