Skip to main content

Aggregation Kind

A Property that is a relation end may carry an aggregationKind. On the whole end of a parthood (part-of) relation it records how the parts relate to the whole, mirroring UML's aggregation and composition diamonds. On any other end it is simply NONE — a plain association end.

This is a closed enumeration: aggregationKind must be one of the three tokens below, or null.

  • JSON type: string (enum) or null.
  • Values: COMPOSITE, SHARED, NONE.
  • Constraint: null is interpreted as NONE.

Values​

ValueMeaningExample
COMPOSITEParts are exclusive to a single whole (UML filled diamond).an Engine as composite part of a Car
SHAREDParts may be shared across wholes (UML hollow diamond).a Person as shared member of Teams
NONENot a parthood / whole end — a plain association end.either end of studies in
note

null is interpreted as NONE. A relation end with no aggregation semantics may therefore be serialized as either "aggregationKind": "NONE" or "aggregationKind": null.

Example​

The whole end of a «componenthood» relation, marking Car as the composite whole of its parts:

{
"type": "Property",
"id": "end_car",
"name": { "en": "car" },
"stereotype": null,
"isDerived": false,
"propertyType": "class_car",
"cardinality": "1",
"aggregationKind": "COMPOSITE",
"isOrdered": false,
"isReadOnly": false,
"subsettedProperties": [],
"redefinedProperties": [],
"customProperties": null,
"created": "2024-09-04",
"modified": null,
"alternativeNames": [],
"description": null,
"editorialNotes": [],
"creators": [],
"contributors": []
}
tip

Aggregation kind is most meaningful alongside a parthood relation stereotype such as componenthood, subCollection, subQuantity, or membership.