eclipse-esmf / esmf-sdk

Load Aspect Models and their artifacts as Java code; share components to realize SAMM as code
https://eclipse-esmf.github.io/esmf-developer-guide/index.html
Mozilla Public License 2.0
25 stars 12 forks source link

[Task] Implement Asset Administration Shell Generator for BAMM CLI #113

Closed bs-jokri closed 2 years ago

bs-jokri commented 2 years ago

Is your task related to a problem? Please describe. The Asset Administration Shell (AAS) and its information model [1] is a widely recognized standard developed by the Industrial Digital Twin Association (IDTA) [2] to express and handle Digital Twins. Central element of the AAS is the concept of Submodels, which describe certain aspects of a Digital Twin.

The BAMM Aspect Meta Model allows to specify aspects of a digital twin and its semantics. It would be beneficial to derive AAS Submodels from BAMM Aspect models as this would allow to on the one hand integrate BAMM models in AAS environments and on the other hand allow AAS Submodels to be described with rich semantics, as it is allowed by BAMM.

[1] https://www.plattform-i40.de/IP/Redaktion/EN/Standardartikel/specification-administrationshell.html [2] https://industrialdigitaltwin.org

Describe the solution you'd like The BAMM CLI should have a new command to generate AAS description files for a given BAMM Aspect model. The command could look similar to the other generator features for example

java -jar bamm-cli.jar -i org.idtwin/1.0.0/Nameplate.ttl -aas-xml

Describe alternatives you've considered An alternative could be to implement a separate tool, which does the translation. This however, would introduce a tool break for the user and would require a partial re-implementation of the BAMM CLI as most of the functionality seems to be the same (command handling, file handling, BAMM interpretation etc.) So I would not go this way.

Additional context Additional context is given by the material provided by the IDTA, especially useful might be the reading guide [3] as it helps to get familiar with the AAS and its concepts.

[3] https://industrialdigitaltwin.org/wp-content/uploads/2022/02/AAS-ReadingGuide_202201.pdf

bs-jokri commented 2 years ago

The following mapping is suggested for the implementation. WDYT?

BAMM AAS Comment
bamm:Aspect Submodel template Empty Asset and AssetAdministrationShell entries are added to the output file
bamm:name aas:Submodel.idShort
bamm:preferedName aas:Submodel.displayName
bamm:description aas:Submodel.description
bamm:property see bamm:Property
bamm:operation seebamm:Operation
bamm:Aspect.urn aas:Submodel.semanticId
Property SubmodelElement
SubmodelElementCollection
The AAS type is derived from the type of the BAMM Characteristic specifying the BAMM property. Depending on the type it is decided what the resulting AAS element will be. In case of an Entity it will result in a SubmodelElementCollection. It will also be a SubmodelElementCollection if the BAMM Characteristic is of a Collection type (see the Characteristics taxonomy [5])
bamm:name aas:Property.idShort
bamm:preferedName aas:Property.displayName
bamm:description aas:Property.description
bamm:exampleValue aas:Property.value
bamm:Characteristic.dataType aas:Property.valueType
Operation Operation in/out parameters are not used in BAMM so the mapping only generates input variables and output variables in AAS
Characteristic ConceptDescription Characteristics in BAMM define the semantics of a property, which includes there types as well as links to further definitions (standards, dictionaries, etc) and a natural language description and name in different languages. Type and description are separated in AAS, which is why there is not a one-to-one mapping of a Characteristic to one element in AAS but rather Characteristics are used in the mapping of Properties to get additional information, which guides the generation process. The remaining semantics are then mapped as good as possible to a ConceptDescription.
Collection aas:SubmodelElementCollection the general remarks to Characteristics apply also for Collection type Characteristics. However, properties referencing Collections are mapped to SubmodelElementCollections. Specific properties of collections are mapped. bamm:Set is unique, bamm:SortedSet is unique and sorted, bamm:List is sorted.
bamm:MultiLanguageProperty aas:LangString if a multilanguage property is used in BAMM it is mapped to the lang string concept in AAS.
atextor commented 2 years ago

@bs-jokri When you write bamm:MultiLanguageProperty in the mapping table, do you refer to bamm-c:MultiLanguageText?