Currently the invariant on CONSTRAINT_REF is as follows:
reference_valid: reference /= Void and then not reference.is_empty
and then archetype.ontology.has_constraint(reference)
Firstly the function has_constraint() does not exist on ARCHEYPE_ONTOLOGY,
secondly this would not be easy to check from within an instance of this
class. It should be relaxed, and the validity checking done from within
an is_valid function defined on ARCHETYPE, or a similar approach.