Namespaces and Versions

Meta Model Identifiers Definition

Identifiers for elements of the meta model must use the URN syntax [rfc2141] and the following schema:

urn:bamm:io.openmanufacturing:<element-type>:<version>#<element-name>

where the variable parts are interpreted as follows:

  • element-type — a selector describing the kind of thing the URN describes, must be one of:

    • meta-model - For meta model elements

    • characteristic - For Characteristics and Constraints that are defined in the scope of the meta model

    • entity - For Entities that are defined inside the scope of the meta model

    • unit - For the catalog of units and quantity kinds

  • version — The version of the respective namespace, must be given in the form "X.Y.Z", with X, Y and Z being integers.

  • element-name — The name of the model element

Examples for valid meta model URNs:

  • urn:bamm:io.openmanufacturing:meta-model:2.0.0#Aspect — URN of the Aspect concept in Meta Model version 2.0.0

  • urn:bamm:io.openmanufacturing:characteristic:2.0.0#Measurement — URN of the Measurement Characteristic in Meta Model version 2.0.0

  • urn:bamm:io.openmanufacturing:entity:2.0.0#Point3D — URN of the Point 3D entity

  • urn:bamm:io.openmanufacturing:unit:2.0.0#kilogram — URN of the Kilogram unit

Aspect Model Element Identifiers Definition

Identifiers of elements that are defined on the model level — i.e., Aspects, Properties, Entities, Operations, Characteristics, Events, Units — must use the following schema:

urn:bamm:<namespace>:<version>#<element-name>

where the variable parts are interpreted as follows:

  • namespace — Defines the hierarchical namespace in which the element resides. This is given in Reverse Domain Name Notation. To avoid confusion with the BAMM Aspect Meta Model, this should not be equal to org.open-manufacturing.digitaltwin. A namespace shall always be in lowercase. It should also contain at least two ASCII letters and should have at least two parts. So a minimal example of a namespace would be 'io.om'.

  • version — The version of the respective namespace, must be given in the form "X.Y.Z", with X, Y and Z being integers.

  • element-name — The name of the element:

    • For Aspects, Entities and Characteristics, the name must be given in UpperCamelCase

    • For Properties, Operations and Units, the name must be given in lowerCamelCase

Examples for valid URNs:

  • urn:bamm:com.mycompany:1.0.0#MyAspect — URN of an Aspect in the given namespace

  • urn:bamm:com.mycompany:1.0.0#MyEntity — URN of an Entity in the given namespace

  • urn:bamm:com.mycompany:1.0.0#someProperty — URN of a Property in the given namespace

Prefixes

The following rules apply to contexts that allow the use of CURIEs (Compact URI, [curie]), i.e., the shortening of URIs by pre-defining a short name for common parts of URIs in a local context (in particular, XML namespaces [xmlns], @prefix in RDF/Turtle [turtle] and PREFIX in SPARQL [sparql]):

  • The prefix "bamm" shall be used for the URN urn:bamm:io.openmanufacturing:meta-model:2.0.0#

  • The prefix "bamm-c" shall be used for the URN urn:bamm:io.openmanufacturing:characteristic:2.0.0#

  • The prefix "bamm-e" shall be used for the URN urn:bamm:io.openmanufacturing:entity:2.0.0#

  • The prefix "unit" shall be used for the URN urn:bamm:io.openmanufacturing:unit:2.0.0#

  • The empty prefix (":" in RDF/Turtle) shall be used for the URN prefix of the current model scope, i.e. everything up to and including the # of the model elements that are being defined

  • For other elements, use prefixes that do not contain the string bamm.

Example of Aspect Model description in RDF/Turtle, with prefix declarations and usage:

@prefix bamm: <urn:bamm:io.openmanufacturing:meta-model:2.0.0#> .
@prefix : <urn:bamm:com.mycompany.myapplication:1.0.0#> .

:Error a bamm:Aspect ;
  bamm:preferredName "Error Aspect"@en ;
  bamm:properties ( :errors ) ;
  bamm:operations ( ) .

:errors a bamm:Property ;
  bamm:preferredName "Errors"@en ;
# ...