I cannot find in the specs (Figure 11. constraint_model Package) where a second_order derived class is an attribute of a constraint-derived class with single multiplicity.
Maybe I am just not looking good.
Please help if that is the case, otherwise, maybe I am not looking well in the grammar, and if that is not the case, it seems a omission in the grammar
Hi Bert, not entirely sure what you are looking for. You can see two descendants of C_SECOND_ORDER. C_ATTRIBUTE_TUPLE can be part of C_COMPLEX_OBJECT via attribute_tuples, and C_ATTRIBUTE_TUPLE can then contain (via tuples) attribute C_PRIMITIVE_TUPLE, the other descendant of C_SECOND_ORDER. Does this help? I'm not sure what you mean by 'constraint-derived class with single multiplicity'...
In the class archetype_constraint is a public attribute soc_parent, this has multiplicity 0..1
In the schema (figure 11) ( http://www.openehr.org/releases/AM/latest/docs/AOM2/AOM2.html#_constraint_model_package ) there is nothing I see that can fill in this optional requirement, because all connections from a c_second_order derived class have a * multiplicity to a archetype_constraint derived (c_complex_object has a c_second_order derived attribute with * multiplicity) class.
This is also confirmed in the grammar, where there is nothing defined to make soc_parent work (as far as I can see)
So I don't know how to handle this in the classes in code.
Suddenly I understand, I think it is because of the c_primitive_tuples that a c_primitive_object can have a soc_parent, same story with c_attribute_tupler.
You can close this call.
I have improved (slightly) the UML diagram and text explanation to make it clearer that ARCHETYPE_CONSTRAINT.soc_parent is the inverse of C_SECOND_ORDER.members.