The DimensionedType concept is crucial to this metamodel:
- it must have a dimension:Dimension:
- DimensionLess (a.k.a. Dimension 1) counts as a Dimension.
- its /system:QuantitySystem is always derived from its Dimension.
It is the abstract base type for three special kinds of types, each with a matching property:
- *Quantity (may type a *QuantityProperty):
- does NOT have a Unit.
- it makes no sense to assign either a defaultValue to a QuantityProperty or a value to a Slot for a QuantityProperty.
- *Unit (may type a *UnitProperty):
- the introduction of an explicit *UnitProperty resolves confusion about typing a ValueProperty by a SysML ValueType named like a unit symbol.
- *ValueType (may type a *ValueProperty):
- has a unit:Unit
- relates system-wide definitions of general quantities with specific units
Image:

