This is an abstract superclass. Seven subclasses are recognized. If the attribute is complex, its domain may be restricted. If the attribute is simple, its value may be restricted. Where the attribute comes from the domain String, it may be restricted (in a subclass) to a maximum string length. (For example, in a class definition, an attribute may come from the domain String. In a subclass of that class, the attribute may be further restricted to String (30). If an attribute, either simple or complex, is defined as optional in a parent class, its optionality may be restricted in a user defined subclass. attributePathName may refer to a simple attribute name or it may include the path for that attribute using the dot, bracket, and asterisk notation defined for the restricted clause in the Class Syntax Notation.