Overview of Submodel Element Types Figure 1. Metamodel Overview for Submodel Element Subtypes Submodel elements include data properties as well as operations, events and other elements needed to describe a model for an asset (see Figure 1). General All submodel elements including abstract classes like data elements are specified in alphabetical order. Note: value-related attributes typically are optional to enable definition of Submodel Templates as well, i.e. Submodels with value of Submodel/kind equal to Template. Annotated Relationship Element Attributes Figure 2. Metamodel of Annotated Relationship Elements An annotated relationship is a relationship similar to a ternary association in UML. The semantics of the relationship is defined via the semanticId of the RelationshipElement. If this semantic definition requires additional information not contained in the first or second object referenced via the relationship, this information needs to be stored as annotation. Class: AnnotatedRelationshipElement Explanation: An annotated relationship element is a relationship element that can be annotated with additional data elements. Inherits from: RelationshipElement ID: https://admin-shell.io/aas/3/1/AnnotatedRelationshipElement Attribute ID Explanation Type Card. annotation https://admin-shell.io/aas/3/1/AnnotatedRelationshipElement/annotations A data element that represents an annotation that holds for the relationship between the two elements DataElement 0..* Basic Event Element Attributes Figure 3. Metamodel of Basic Event Element Class: BasicEventElement <<Experimental>> Explanation: A basic event element Inherits from: EventElement ID: https://admin-shell.io/aas/3/1/BasicEventElement Attribute ID Explanation Type Card. observed https://admin-shell.io/aas/3/1/BasicEventElement Reference to a referable, e.g. a data element or a submodel that is being observed ModelReference<Referable> 1 direction https://admin-shell.io/aas/3/1/BasicEventElement/direction Direction of event Can be \{ input, output } Direction 1 state https://admin-shell.io/aas/3/1/BasicEventElement/state State of event Can be { on, off } StateOfEvent 1 messageTopic https://admin-shell.io/aas/3/1/BasicEventElement/messageTopic Information for the outer message infrastructure to schedule the event for the respective communication channel. MessageTopicType 0..1 messageBroker https://admin-shell.io/aas/3/1/BasicEventElement/messageBroker Information about which outer message infrastructure shall handle messages for the EventElement; refers to a Submodel, SubmodelElementList, SubmodelElementCollection or Entity, which contains DataElements describing the proprietary specification for the message broker Note: this proprietary specification could be standardized by using respective submodels for different message infrastructure, e.g. OPC UA, MQTT or AMQP. ModelReference<Referable> 0..1 lastUpdate https://admin-shell.io/aas/3/1/BasicEventElement/lastUpdate Timestamp in UTC, when the last event was received (input direction) or sent (output direction) dateTime 0..1 minInterval https://admin-shell.io/aas/3/1/BasicEventElement/minInterval For input direction reports on the maximum frequency, the software entity behind the respective referable can handle input events. For output events, the maximum frequency of outputting this event to an outer infrastructure is specified. Might be not specified, i.e. if there is no minimum interval. duration 0..1 maxInterval https://admin-shell.io/aas/3/1/BasicEventElement/maxInterval Not applicable for input direction For output direction: maximum interval in time, the respective referable shall send an update of the status of the event, even if no other trigger condition for the event was not met. Might not be specified, i.e. if there is no maximum interval. duration 0..1 Enumeration: Direction <<Experimental>> Explanation: Direction Set of: — ID: https://admin-shell.io/aas/3/0/Direction Literal ID Explanation input https://admin-shell.io/aas/3/0/Direction/input Input direction output https://admin-shell.io/aas/3/0/Direction/output Output direction Enumeration: StateOfEvent <<Experimental>> Explanation: State of an event Set of: — ID: https://admin-shell.io/aas/3/0/StateOfEvent Literal ID Explanation on https://admin-shell.io/aas/3/0/StateOfEvent/on Event is on off https://admin-shell.io/aas/3/0/StateOfEvent/off Event is off Events sent or received by an Asset Administration Shell always comply with a general format. Exception: events exchanged in the course of an Industry 4.0 interaction pattern. The payload of such an event is specified below. Note: the payload is not part of the information model as exchanged via the AASX package format but used in re-active Asset Administration Shells. Figure 4. Metamodel of Event Payload Class: EventPayload <<Experimental>> Explanation: Defines the necessary information of an event instance sent out or received Inherits from: - ID: https://admin-shell.io/aas/3/1/EventPayload Attribute ID Explanation Type Card. source https://admin-shell.io/aas/3/1/EventPayload/source Reference to the source event element ModelReference<EventElement> 1 sourceSemanticId https://admin-shell.io/aas/3/1/EventPayload/sourceSemanticId semanticId of the source event element, if available Note: it is recommended to use an external reference. Reference 0..1 observableReference https://admin-shell.io/aas/3/1/EventPayload/observableReference Reference to the referable, which defines the scope of the event. ModelReference<Referable> 1 observableSemanticId https://admin-shell.io/aas/3/1/EventPayload/observableSemanticId semanticId of the referable, which defines the scope of the event, if available. Note: it is recommended to use an external reference. Reference 0..1 topic https://admin-shell.io/aas/3/1/EventPayload/topic Information for the outer message infrastructure to schedule the event for the respective communication channel MessageTopicType 0..1 subjectId https://admin-shell.io/aas/3/1/EventPayload/subjectId Subject, who/which initiated the creation Note: this is an external reference. Reference 0..1 timestamp https://admin-shell.io/aas/3/1/EventPayload/timestamp Timestamp in UTC, when this event was triggered dateTime 1 payload https://admin-shell.io/aas/3/1/EventPayload/payload Event-specific payload BlobType 0..1 For more information on the concept of subject, see Attribute Based Access Control (ABAC) [49]. The assumption is that every subject has a unique identifier. Blob Attributes Figure 5. Metamodel of Blobs For information on content type, see Clause File Attributes. Class: Blob Explanation: A Blob is a data element representing a file that is contained in the value attribute with its source code. Inherits from: DataElement ID: https://admin-shell.io/aas/3/1/Blob Attribute ID Explanation Type Card. value https://admin-shell.io/aas/3/1/Blob/value The value of the blob instance of a blob data element Note: in contrast to the file property, the file content is stored directly as value in the Blob data element. BlobType 0..1 contentType https://admin-shell.io/aas/3/1/Blob/contentType Content type of the content of the blob. The content type (MIME type) states which file extensions the file can have. Valid values are content types like "application/json", "application/xls", "image/jpg". The allowed values are defined as in RFC2046. ContentType 0..1 Capability Attributes Figure 6. Metamodel of Capabilities Note: the semanticId of a capability is typically an ontology, which enables reasoning on capabilities. For information and examples on how to apply the concept of capability and how to map it to one or more skills implementing the capability, please refer to [27]. The mapping is done via a relationship element with the corresponding semantics. A skill is typically a property or an operation. In more complex cases, the mapping can also be a collection or a complete submodel. Class: Capability Explanation: A capability is the implementation-independent description of the potential of an asset to achieve a certain effect in the physical or virtual world. Inherits from: SubmodelElement ID: https://admin-shell.io/aas/3/1/Capability Attribute ID Explanation Type Card. Data Element and Overview of Data Element Types Figure 7. Metamodel of Data Elements A data element is a submodel element that is not further composed of other submodel elements. A data element is a submodel element that has a value or a predefined number of values like range data elements. The type of value differs for different subtypes of data elements. Data elements include properties, file handling, and reference elements, see Figure 7. Class: DataElement <<abstract>> Explanation: A data element is a submodel element that is not further composed of other submodel elements. A data element is a submodel element that has a value. The type of value differs for different subtypes of data elements. Constraint AASd-090: For data elements, category (inherited by Referable) shall be one of the following values: CONSTANT, PARAMETER or VARIABLE. Default: VARIABLE Note: categories are deprecated and should no longer be used. Inherits from: SubmodelElement ID: https://admin-shell.io/aas/3/1/DataElement Attribute ID Explanation Type Card. Entity Attributes Figure 8. Metamodel of Entities The entity submodel element is designed to be used in submodels defining the relationship between the parts of the composite asset it is composed of (e.g. bill of material). These parts are called entities. Not all entities have a global asset ID. Class: Entity Explanation: An entity is a submodel element that is used to model entities. Constraint AASd-014: Either the attribute globalAssetId or specificAssetId of an Entity must be set if Entity/entityType is set to "SelfManagedEntity". Inherits from: SubmodelElement ID: https://admin-shell.io/aas/3/1/Entity Attribute ID Explanation Type Card. statement https://admin-shell.io/aas/3/1/Entity/statements Describes statements applicable to the entity by a set of submodel elements, typically with a qualified value SubmodelElement 0..* entityType https://admin-shell.io/aas/3/1/Entity/entityType Describes whether the entity is a co-managed entity or a self-managed entity EntityType 0..1 globalAssetId https://admin-shell.io/aas/3/1/Entity/globalAssetId Global identifier of the asset the entity is representing Identifier 0..1 specificAssetId https://admin-shell.io/aas/3/1/Entity/specificAssetIds Reference to a specific asset ID representing a supplementary identifier of the asset represented by the Asset Administration Shell SpecificAssetId 0..* Enumeration: EntityType Explanation: Enumeration for denoting whether an entity is a self-managed entity or a co-managed entity Set of: — ID: https://admin-shell.io/aas/3/0/EntityType Literal ID Explanation CoManagedEntity https://admin-shell.io/aas/3/0/EntityType/CoManagedEntity There is no separate Asset Administration Shell for co-managed entities. Co-managed entities need to be part of a self-managed entity. SelfManagedEntity https://admin-shell.io/aas/3/0/EntityType/SelfManagedEntity Self-managed entities have their own Asset Administration Shell but can be part of another composite self-managed entity. The asset represented by an Asset Administration Shell is a self-managed entity per definition. Event Element Attributes Figure 9. Metamodel of Event Elements Class: EventElement <<abstract>> <<Experimental>> Explanation: An event element Inherits from: SubmodelElement ID: https://admin-shell.io/aas/3/1/EventElement Attribute ID Explanation Type Card. File Attributes Figure 10. Metamodel of File Submodel Element A media type (also MIME type and content type) is a two-part identifier for file formats and format contents transmitted via the Internet. The Internet Assigned Numbers Authority (IANA) is the official authority for the standardization and publication of these classifications. Note: for information on handling supplementary external files in exchanging Asset Administration Shells in AASX package format see also Part 5 of the series "Specification of the Asset Administration Shell". An absolute path is used in case the file exists independently of the Asset Administration Shell. A relative path, relative to the package root, should be used if the file is part of a serialized package of the Asset Administration Shell. Class: File Explanation: A file is a data element that represents an address to a file (a locator). The value is a URI that can represent an absolute or relative path. Inherits from: DataElement ID: https://admin-shell.io/aas/3/1/File Attribute ID Explanation Type Card. value https://admin-shell.io/aas/3/1/File/value Path and name of the file (with file extension) The path can be absolute or relative. PathType 0..1 contentType https://admin-shell.io/aas/3/1/File/contentType Content type of the content of the file ContentType 0..1 Multi Language Property Attributes Figure 11. Metamodel of Multi Language Properties Class: MultiLanguageProperty Explanation: A property is a data element that has a multi-language value. Constraint AASd-012: If both the MultiLanguageProperty/value and the MultiLanguageProperty/valueId are present, the meaning must be the same for each string in a specific language, as specified in MultiLanguageProperty/valueId. Inherits from: DataElement ID: https://admin-shell.io/aas/3/1/MultiLanguageProperty Attribute ID Explanation Type Card. value https://admin-shell.io/aas/3/1/MultiLanguageProperty/value The value of the property instance MultiLanguageTextType 0..1 valueId https://admin-shell.io/aas/3/1/MultiLanguageProperty/valueId Reference to the global unique ID of a coded value. Note: it is recommended to use an external reference, compare to HasSemantics/semanticId Reference 0..1 Operation Attributes Figure 12. Metamodel of Operations Class: Operation Explanation: An operation is a submodel element with input and output variables. Constraint AASd-134: For an Operation, the idShort of all inputVariable/value, outputVariable/value, and inoutputVariable/value shall be unique. Inherits from: SubmodelElement ID: https://admin-shell.io/aas/3/1/Operation Attribute ID Explanation Type Card. inputVariable https://admin-shell.io/aas/3/1/Operation/inputVariables Input parameter of the operation OperationVariable 0..* outputVariable https://admin-shell.io/aas/3/1/Operation/outputVariables Output parameter of the operation OperationVariable 0..* inoutputVariable https://admin-shell.io/aas/3/1/Operation/inoutputVariables Parameter that is input and output of the operation OperationVariable 0..* Class: OperationVariable Explanation: The value of an operation variable is a submodel element that is used as input and/or output variable of an operation. Inherits from: — ID: https://admin-shell.io/aas/3/1/OperationVariable Attribute ID Explanation Type Card. value https://admin-shell.io/aas/3/1/OperationVariable/value Describes an argument or result of an operation via a submodel element SubmodelElement 1 Note 1: operations typically specify the behavior of a component in terms of procedures. Hence, operations enable the specification of services with procedure-based interactions [23]. Note 2: OperationVariable is introduced as separate class to enable future extensions, e.g. for adding a default value or cardinality (option/mandatory). Note 3: even if the submodel element as the value of an input and an output variable have the same idShort, this does not mean that they are identical or mapped to the same variable since OperationVariables are no referables. The same applies to two input variables or an input variable and an inoutputVariable a.s.o. Property Attributes Figure 13. Metamodel of Properties Class: Property Explanation: A property is a data element that has a single value. Constraint AASd-007: If both the Property/value and the Property/valueId are present, the value of Property/value needs to be identical to the value of the referenced coded value in Property/valueId. Inherits from: DataElement ID: https://admin-shell.io/aas/3/1/Property Attribute ID Explanation Type Card. valueType https://admin-shell.io/aas/3/1/Property/valueType Data type of the value attribute DataTypeDefXsd 1 value https://admin-shell.io/aas/3/1/Property/value The value of the property instance ValueDataType 0..1 valueId https://admin-shell.io/aas/3/1/Property/valueId Reference to the global unique ID of a coded value Note: it is recommended to use an external reference, compare to HasSemantics/semanticId Reference 0..1 Range Attributes Figure 14. Metamodel of Ranges Class: Range <<Experimental>> Explanation: A range data element is a data element that defines a range with min and max. Inherits from: DataElement ID: https://admin-shell.io/aas/3/1/Range Attribute ID Explanation Type Card. valueType https://admin-shell.io/aas/3/1/Range/valueType Data type of the min und max attributes DataTypeDefXsd 1 min https://admin-shell.io/aas/3/1/Range/min The minimum value of the range If the min value is missing, the value is assumed to be negative infinite. ValueDataType 0..1 max https://admin-shell.io/aas/3/1/Range/max The maximum value of the range If the max value is missing, the value is assumed to be positive infinite. ValueDataType 0..1 Reference Element Attributes Figure 15. Metamodel of Reference Elements Class: ReferenceElement Explanation: A reference element is a data element that defines a logical reference to another element within the same or another Asset Administration Shell or a reference to an external object or entity. Inherits from: DataElement ID: https://admin-shell.io/aas/3/1/ReferenceElement Attribute ID Explanation Type Card. value https://admin-shell.io/aas/3/1/ReferenceElement/value External reference to an external object or entity or a logical reference to another element within the same or another Asset Administration Shell (i.e. a model reference to a Referable) Reference 0..1 For more information on references, see Clause Referencing in Asset Administration Shells. Relationship Element Attributes The semantics of the relationship is defined via the semanticId of the RelationshipElement. If this semantic definition requires additional information not contained in the first or second object referenced via the relationship, the submodel element type AnnotatedRelationshipElement shall be used instead. Figure 16. Metamodel of Relationship Elements Class: RelationshipElement Explanation: A relationship element is used to define a relationship between two elements being either referable (model reference) or external (external reference). Inherits from: SubmodelElement ID: https://admin-shell.io/aas/3/1/RelationshipElement Attribute ID Explanation Type Card. first https://admin-shell.io/aas/3/1/RelationshipElement/first Reference to the first element in the relationship taking the role of the subject Reference 0..1 second https://admin-shell.io/aas/3/1/RelationshipElement/second Reference to the second element in the relationship taking the role of the object Reference 0..1 Submodel Element Collection Attributes Figure 17. Metamodel of Submodel Element Collections Submodel Element Collections are used for complex elements with a typically fixed set of properties with unique names. This set of properties is typically predefined by the semantic definition (referenced via semanticId) of the submodel element collection. Each property within the collection itself should have clearly defined semantics. Note: the different elements of a submodel element collection do not have to have different semanticIds. However, in these cases the usage of a SubmodelElementList should be considered. Example: a single document has a predefined set of properties like title, version, author, etc. They logically belong to a document. So a single document is represented by a SubmodelElementCollection. An asset usually has many different documents available like operating instructions, safety instructions, etc. The set of all documents is represented by a SubmodelElementList. In this case, we have a SubmodelElementList of SubmodelElementCollections. Note: the elements within a submodel element collection are not ordered. Every element has a unique ID (its "idShort"). However, it is recommended to adhere to the order defined in the submodel template. Class: SubmodelElementCollection Explanation: A submodel element collection is a kind of struct, i.e. a logical encapsulation of multiple named values. Inherits from: SubmodelElement ID: https://admin-shell.io/aas/3/1/SubmodelElementCollection Attribute ID Explanation Type Card. value https://admin-shell.io/aas/3/1/SubmodelElementCollection/values Submodel element contained in the collection SubmodelElement 0..* Submodel Element List Attributes Figure 18. Metamodel of Submodel Element Lists Submodel element lists are used for sets (i.e. unordered collections without duplicates), ordered lists (i.e. ordered collections that may contain duplicates), bags (i.e. unordered collections that may contain duplicates), and ordered sets (i.e. ordered collections without duplicates). Note: there is no idShort for submodel elements in lists (see Constraint AASd-120). Submodel element lists are also used to create multidimensional arrays. A two-dimensional array list[3][5] with Property values would be realized like follows: the first submodel element list would contain three SubmodelElementList elements. Each of these three SubmodelElementLists would contain 5 single Property elements. The semanticId of the contained properties would be the same for all lists in the first list, i.e. semanticIdListElement would be identical for all three lists contained in the first list. The semanticId of the three contained lists would differ depending on the dimension it represents. In case of complex values in the array, a SubmodelElementCollection would be used as values in the leaf lists. Similarly, a table with three columns can be represented. In this case a SubmodelElementCollection with three SubmodelElementLists would be contained and the semanticId as well as the semanticIdListElement for the three columns would differ. Matching strategies for semantic IDs are explained in Clause Matching Strategies for Semantic Identifiers. Class: SubmodelElementList Explanation: A submodel element list is an ordered list of submodel elements. Note: the list is ordered although the ordering might not be relevant (see attribute "orderRelevant".) The numbering starts with Zero (0). Constraint AASd-107: If a first level child element in a SubmodelElementList has a semanticId, it shall be identical to SubmodelElementList/semanticIdListElement. Constraint AASd-114: If two first level child elements in a SubmodelElementList have a semanticId, they shall be identical. Constraint AASd-115: If a first level child element in a SubmodelElementList does not specify a semanticId, the value is assumed to be identical to SubmodelElementList/semanticIdListElement. Constraint AASd-108: All first level child elements in a SubmodelElementList shall have the same submodel element type as specified in SubmodelElementList/typeValueListElement. Constraint AASd-109: If SubmodelElementList/typeValueListElement is equal to Property or Range, SubmodelElementList/valueTypeListElement shall be set and all first level child elements in the SubmodelElementList shall have the value type as specified in SubmodelElementList/typeValueListElement. Inherits from: SubmodelElement ID: https://admin-shell.io/aas/3/0/SubmodelElementList Attribute ID Explanation Type Card. orderRelevant https://admin-shell.io/aas/3/0/SubmodelElementList/orderRelevant Defines whether order in list is relevant. If orderRelevant = false, the list represents a set or a bag. Default: True boolean 0..1 value https://admin-shell.io/aas/3/0/SubmodelElementList/values Submodel element contained in the list SubmodelElement 0..* semanticIdListElement https://admin-shell.io/aas/3/0/SubmodelElementList/semanticIdListElement Semantic ID which the submodel elements contained in the list match Note: it is recommended to use an external reference. Reference 0..1 typeValueListElement https://admin-shell.io/aas/3/0/SubmodelElementList/typeValueListElement/typeValueListElement The submodel element type of the submodel elements contained in the list AasSubmodelElements 1 valueTypeListElement https://admin-shell.io/aas/3/0/SubmodelElementList/valueTypeListElement The value type of the submodel element contained in the list DataTypeDefXsd 0..1