Skip to main content

Model Element

A ModelElement is a NamedElement that represents an element of the language's abstract syntax — a class, a relation, a generalization, and so on. It is an abstract grouping that never appears directly in a document (it has no type value of its own); it only contributes the single property below to its many subtypes.

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

ModelElement also carries the identity properties id, created, and modified from OntoumlElement, and the descriptive properties name, alternativeNames, description, editorialNotes, creators, and contributors from NamedElement. Because every property is required, customProperties is always present, written as null when the element carries no custom key-value pairs.

customProperties is the schema's counterpart to UML tagged values: a free-form bag of extra key-value data that a tool or modeler can attach to any model element without extending the metamodel.

Subtypes​

Every model element in the abstract syntax specializes ModelElement. Its direct descendants are:

Shared properties​

Since ModelElement is abstract, it is never serialized on its own. Its customProperties appears inside every model element, alongside the identity and descriptive blocks:

{
"id": "class_1",
"created": "2024-09-03",
"modified": null,
"name": { "en": "Person" },
"alternativeNames": [],
"description": null,
"editorialNotes": [],
"creators": [],
"contributors": [],
"customProperties": null
}

See the Abstract Syntax reference — for example Class — for complete, serializable objects that embed this block.