Semantic Identifiers for Metamodel and Data Specifications Rules for creating identifiers are defined to enable the unique identification of concepts as used and defined in the metamodel of the Asset Administration Shell. Grammar Semantic Metamodel Identifiers The following grammar is used to create valid identifiers: <Namespace> ::= <AAS Namespace> | <ID of Data Specification> <Namespace Qualifier> ::= <AAS Namespace Qualifier> | <Data Specification Qualifier> <AAS Namespace> ::= <Shell-Namespace> "/aas/" <Version> <Shell-Namespace> ::= "https://admin-shell.io/" <Version> ::= {<Digit>}+ "/" {<Digit>}+ [ "/" {<Character>}+ ] <Digit> ::= "0"| "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" <Character> ::= characters conformant to regular expression [a..zA..Z-] For AAS a predefined namespace qualifier is defined. For data specifications this is defined within the corresponding specifications for single data specifications. <ID of Data Specification> ::= defined per Data Specification <Data Specification Qualifier> ::= defined per Data Specification <AAS Namespace Qualifier> ::= "AAS:" Note: the Data Specification ID should include versioning information. Data Specifications defined by the IDTA typically start with the <AAS namespace> as well. Additionally, a sub-namespace is defined following the rules of the Identification Scheme of the Asset Administration Shell. A concrete unique identifier is defined as follows: <AAS Unique Concept Identifier> ::= (<Namespace> | <Namespace Qualifier>) "/" <AAS Concept Identifier> <AAS Concept Identifier> ::= <AAS Class Name> [( <AAS Attribute> | <AAS Enumeration>)] <AAS Attribute> ::= "/" <AAS Attribute Name> [{ "/" <AAS Attribute Name>}* ] <AAS Enumeration> ::= [{ "/" <AAS Attribute Name>}*] "/" <AAS Enumeration Value> Examples for Semantic Metamodel Identifiers Examples for valid unique Asset Administration Shell concept identifiers: https://admin-shell.io/aas/2/0/AssetAdministrationShell/administration/version AAS:AssetAdministrationShell/administration/version AAS:AssetInformation/assetKind/Instance The application of the pattern is explained in the following. The concept identifier of a Class follows the pattern <AAS Class name> This also applies to abstract classes and types including enumerations. Valid examples: AAS:Submodel AAS:Qualifier AAS:Reference AAS:ContentType AAS:KeyTypes Attributes of classes are separated by "/". Inherited attributes can also be referenced in this way, if the concrete referable is important in the context. Basic Pattern: <AAS Class name>"/"<AAS Attribute Name> Examples[1]: AAS:Referable/idShort AAS:Property/idShort AAS:Qualifier/semanticId This also applies to attributes of attributes, if the cardinality of the attributes involved is not greater than 1: <AAS Class Name> "/" <AAS Attribute Name> [{ "/" <AAS Attribute Name>}* ] Valid examples: AAS:Identifiable/administration/version This also applies to values of enumerations: <AAS Class Name>[{ "/" <AAS Attribute Name>}*][ "/" <AAS Enumeration Value>] Valid examples: AAS:Key/type/Submodel AAS:AasSubmodelElements/Submodel In case of an attribute with a cardinality greater than 1, no further attributes or enumeration values can be added. Note: although the attribute name in UML is always singular, the attribute name is annotated by the plural "s" if the cardinality is > 1. This also holds if the resulting English is not good or valid English (see example for "isCaseOfs"). Valid examples: AAS:Operation/inputVariables AAS:AssetAdministrationShell/submodels AAS:Submodel/submodelElements AAS:ConceptDescription/isCaseOfs Invalid examples: AAS:AssetAdministrationShell/submodels/administration/version AAS:Submodel/Property/idShort Additional identifiers might be needed for specific serializations and mappings, e.g. for a set of Asset Administration Shells or a set of available concept descriptions. Here, the Asset Administration Shell metamodel and specification does not give any recommendations. Data specification handling is special. Data specification templates do not belong to Part 1 of the Asset Administration Shell. However, serializations only support the predefined data specification templates as stipulated in this specification series, Part 3. Their corresponding name space qualifiers are defined individually. Examples: In xml and JSON, data specifications are embedded into the schema itself using the attribute "embeddedDataSpecification". Here, no concept identifier shall be used. Invalid example: AAS:ConceptDescription/embeddedDataSpecifications Valid example: AAS:DataSpecificationContent 1. For simplicity reasons, most examples use the namespace qualifier and not the full path of the namespace.