This is an abstract superclass. Three subclasses are defined: one pertaining to a simple attribute whose domain is one of those listed under the enumeration PrimitiveInstanceType; a second appropriate for an attribute whose domain is a tuple or a type of tuple; and a third whose domain consists of a list or set of objects.
In the child subclasses, the name and domain of an attribute must be provided, as well as whether the attribute is considered as optional (true) or mandatory (false).