aas-core-meta V3.1 🔗
The presented version of the Metamodel is related to the work of aas-core-works, which can be found here: https://github.com/aas-core-works.
The presented content is neither related to the IDTA nor Plattform Industrie 4.0 and does not represent an official publication.
We diverge from the book in the following points.
We did not implement the following constraints as they are too general and can not be formalized as part of the core library, but affects external components such as AAS registry or AAS server:
We did not implement the following constraints since they depend on registry and de-referencing of Reference objects:
Some constraints are not enforceable as they depend on the wider context such as language understanding, so we could not formalize them:
-
AASd-012: This constraint requires that the texts inside
Multi_language_propertyshall have the same meanings in the separate languages. This cannot be tested. -
AASd-116: In the book, AASd-116 imposes a case-insensitive equality against
globalAssetId. This is culturally-dependent, and depends on the system settings. For example, the case-folding for the letters "i" and "I" is different in Turkish from English.We implement the constraint as case-sensitive instead to allow for interoperability across different culture settings.
Furthermore, we diverge from the book in the following points regarding the enumerations. We have to implement subsets of enumerations as sets as common programming languages do not support inheritance of enumerations. The relationship between the properties and the sets is defined through invariants. This causes the following divergences:
-
We decided therefore to remove the enumeration
DataTypeDefRDFand keep only DataTypeDefXsd as enumeration. Otherwise, we would have to write redundant invariants all over the meta-model becauseDataTypeDefRDFis actually never used in any type definition. -
The enumeration AasSubmodelElements is used in two different contexts. One context is the definition of key types in a reference. Another context is the definition of element types in a SubmodelElementList.
To avoid confusion, we introduce two separate enumerations for the separate contexts. Firstly, a set of KeyTypes, AasSubmodelElementsAsKeys to represent the first context (key type in a reference). Secondly, the enumeration AasSubmodelElements is kept as designator for SubmodelElementList.typeValueListElement.
-
The specification introduces several types of
Lang_string_set. These types differ between the allowed length of their text inside the singularLang_stringobjects. Since the native representation ofLang_string_setasListofLang_stringis required by specification, it is impossible to introduce separateLang_string_settypes. Therefore, the distinction is drawn here between theLang_stringtypes.DefinitionTypeIEC61360is represented as aListof LangStringDefinitionTypeIec61360MultiLanguageNameTypeis represented as aListof LangStringNameTypePreferredNameTypeIEC61360is represented as aListof LangStringPreferredNameTypeIec61360ShortNameTypeIEC61360is represented as aListof LangStringShortNameTypeIec61360MultiLanguageTextTypeis represented as aListof LangStringTextTypeFurthermore, since
Lang_stringis not used anywhere, we rename it to AbstractLangString.
Concerning the data specifications, we embed them within HasDataSpecification instead of referencing them via an external reference. The working group decided to change the rules for serialization after the book was published. The data specifications are critical in applications, but there is no possibility to access them through a data channel as they are not part of an environment.