Skip to main content

Abstract Syntax

The abstract syntax is the model itself: the elements that carry ontological meaning, independent of how they are drawn. This section is the reference for every model element type; each type has its own page.

Every page lists a type's own properties. In addition, every model element also carries:

  • the identity properties id, created, and modified (from OntoumlElement);
  • the descriptive properties name, alternativeNames, description, editorialNotes, creators, and contributors (from NamedElement); and
  • customProperties (from ModelElement, described below).

Remember that every property is required: values that are absent are written as null or [].

The model-element hierarchy​

Concrete model elements specialize a small set of abstract types. The diagram below shows how the element types documented in this section relate to those abstract types.

Common to all model elements​

Every model element specializes the abstract ModelElement type, which contributes a single property.

PropertyTypeDescription
customPropertiesobject or nullCustom key-value pairs attached to the element. In UML these correspond to tagged values.

See ModelElement for the full treatment of this shared root.

Classifiers and properties​

Classes, relations, and their properties share two further abstract types.

Decoratable — a model element that can be decorated with a UFO stereotype. Classes, relations, and properties are all decoratable. See the full Decoratable page.

PropertyTypeDescription
stereotypestring or nullThe element's type according to the Unified Foundational Ontology (UFO), e.g. "kind".
isDerivedboolean or nullWhether the element is derived from another (i.e. some other element is its truthmaker).

Classifier — a decoratable element (a class or a relation) that defines properties exhibited by its instances. See the full Classifier page.

PropertyTypeDescription
isAbstractboolean or nullWhether the classifier can have direct instances. An abstract classifier is instantiated only through its non-abstract specializations.
propertiesid[]The properties contained in the classifier — attributes for classes, relation ends for relations. For relations this array must be ordered.

Packageable elements​

A PackageableElement is any model element that can be grouped into a package — that is, the kind of element allowed in a package's contents. It is an abstract union rather than a type with properties of its own; see the full PackageableElement page. A packageable element is one of:

Note that properties are not packageable: they belong to their owning classifier, not directly to a package.

Element types​

See also the Enumerations chapter — the standard OntoUML stereotype vocabulary for decoratable elements (and how custom stereotypes are supported), along with the restrictedTo and aggregationKind value sets.