4.16 Property Sets, Types, Constants, and Definitions
The AADL supports introduction of user-defined properties, property constants, and property types through property sets. 
The PropertySet class has multiplicity containment associations to the PropertyType, PropertyConstant, and PropertyDefinition classes.  The abstract PropertyType class represents property type declarations.  Instances of the concrete PropertyType subclasses, i.e., UnitsType, Aadlreal and Aadlinteger and their common super class NumberType, RangeType, Aadlstring, Aadlboolean, EnumType, ReferenceType, and ClassifierType, represent property type declarations.  Their name attribute records the name of the newly declared property type.  The abstract PropertyValueHolder class represents all classes that can contain property values, i.e., property definitions, property constants, and property associations.
graphic
Figure 33 Property Sets, Types, Constants, and Definitions
The UnitsType class contains instances of the UnitLiteral class.  Unit literals can be defined with conversion factors relative to other unit literals.  This is reflected in the baseunit reference association and the containment association factor to a NumberValue.
The NumberType class has containment associations called lower and upper to the NumberOrPropertyReference class to represent the lower and upper bound on values of this property type.  The NumberType class has a propertyTypeReference reference association and and a propertyType containment association to UnitsType to represent a reference to a declared units type or to represent an unnamed units type declared as part of the Aadlinteger or Aadlreal declaration.  Either the propertyTypeReference association or the propertyType association is set.
graphic
Figure 34 Enumerations in the Property Meta Model
Property constants can be declared for a subset of the property types. This subset is defined by the abstract class PropertyConstantType.  The PropertyConstant class refers to a previously declared property type or contains an unnamed property type declaration, using the propertyTypeReference or propertyType association.  A property constant also contains zero or more PropertyValue objects to represent a single property value or a list of values including an empty list.
Property name declarations are represented by the PropertyDefinition class.  As mentioned in Annex C.4.13, this class has a reference association to a named property type, whose PropertyType object is contained in a PropertySet object, or it has a containment association to a PropertyType object that represents an unnamed property type declared as part of the property definition.  An example of an unnamed property type in a property name declaration is Acceleration: aadlreal units ( mps2 );  A PropertyDefinition class also has a multiplicity containment association to the PropertyValue class to represent the default value, and a containment association to the ClassifierValue class to represent the optional set of classifiers within a specified component category that the property can use – as specified in the applies to portion of the property name declaration.
The PropertyDefinition class has several attributes to record whether certain reserved words are part of the property name declaration. They are access, inherit, and list.  In addition there is the attribute called appliesto that records the categories of AADL model objects for which the property is applicable.  This attribute has a multiplicity of up to the size of the PropertyOwnerCategory enumeration.  This enumeration and others used in the property meta model package are shown in Figure 34.  The hasEmptyList attribute is used to record the difference between no default value and a default value of an empty list for property name declarations that can hold lists of values.