Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce ContainerElement as abstract class #500

Merged
merged 1 commit into from
Dec 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions documentation/IDTA-01001/modules/ROOT/pages/changelog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ Note: before V3.0, the security metamodel and the predefined data specifications
Major Changes:

* New value "Role" to enumeration AssetKind (https://github.com/admin-shell-io/aas-specs/issues/294[#294])
* New abstract class "ContainerElement" as subtype of "SubmodelElement", subtypes: AnnotatedRelationshipElement, Entity, SubmodelElementCollection, SubmodelElementLis. Includes introducing new enumeration for container elements and extending existing enumerations for submodel elements "AasSubmodelElement" etc. (https://github.com/admin-shell-io/aas-specs/issues/333[#333])
* Data type Identifier: change length from 2000 to 2048 characters (https://github.com/admin-shell-io/aas-specs/issues/306[#306])
* Referable/idShort and Constraint AASd-002: now also allows hyphens to be included in name (https://github.com/admin-shell-io/aas-specs/issues/295[#295])
* Entity/entityType and Constraint AASd-014: entityType now optional (https://github.com/admin-shell-io/aas-specs/issues/287[#287])
Expand Down Expand Up @@ -91,24 +92,33 @@ Minor Changes:
|===
|*Nc* |*V3.1 Change w.r.t. V3.0.1* |*Comment*


| {empty} | xref:spec-metamodel/referencing.adoc#KeyTypes[KeyTypes/ContainerElement] a| Add new value "ContainerElement" to enumeration KeyTypes, because AasSubmodelElements was extended
| {empty} | xref:spec-metamodel/referencing.adoc#AasReferableNonIdentifiables[AasReferableNonIdentifiables/ContainerElement] a| Add new value "ContainerElement" to enumeration AasReferableNonIdentifiables, because AasSubmodelElements was extended
| {empty} | xref:spec-metamodel/referencing.adoc#AasReferables[AasReferables/ContainerElement] a| Add new value "ContainerElement" to enumeration AasReferables, because AasSubmodelElements was extended
| {empty} | xref:spec-metamodel/referencing.adoc#AasSubmodelElements[AasSubmodelElements/ContainerElement] a| Add new value "ContainerElement" to enumeration AasSubmodelElements
| {empty} | xref:spec-metamodel/core.adoc#AssetKind[AssetKind] a| Add new value "Role" to enumeration AssetKind
| {empty} | xref:spec-metamodel/submodel-elements.adoc#Blob[Blob/contentType] a| now optional
| {empty} | xref:spec-metamodel/submodel-elements.adoc#Entity[Entity/entityType] a| now optional
| {empty} | xref:spec-metamodel/submodel-elements.adoc#File[File/contentType] a| now optional
| {empty} | xref:spec-metamodel/referencing.adoc#FragmentKeys[ragmentKeys/ContainerElement] a| Add new value "ContainerElement" to enumeration FragmentKeys, because AasSubmodelElements was extended
| {empty} | xref:spec-metamodel/datatypes.adoc#Identifier[Identifier] a| data type: change length from 2000 to 2024 characters
| {empty} | xref:spec-metamodel/datatypes.adoc#NameType[NameType] a| implicit change due to change of Constraint AASd-002
|{empty} | xref:spec-metamodel/common.adoc#Referable[Referable/idShort] a| implicit change because constraint AASd-002 now also allows hyphen
| {empty} | xref:spec-metamodel/common.adoc#Referable[Referable/idShort] a| implicit change because constraint AASd-002 now also allows hyphen
| {empty} | xref:spec-metamodel/submodel-elements.adoc#RelationshipElement[RelationshipElement/first] a| now optional
| {empty} | xref:spec-metamodel/submodel-elements.adoc#RelationshipElement[RelationshipElement/second] a| now optional


|===

.New Elements in Metamodel
[cols="5%,41%,51%",options="header",]
|===
|{empty} |*New Elements V3.1 vs V3.0.1* |*Comment*

|{empty} | xref:spec-metamodel/referencing.adoc#AasContainerElements[AasContainerSubmodelElements] | New enumeration for container submodel elements
|{empty} | xref:spec-metamodel/core.adoc#AssetKind[AssetKind/Role] | New value in enumeration
|{empty} | xref:spec-metamodel/submodel-elements.adoc#ContainerElement[ContainerElement] | New abstract class
|{empty} | xref:spec-metamodel/referencing.adoc#AasNonContainerElements[AasNonContainerSubmodelElements] | New enumeration for non-container submodel elements
|===

.New, Changed or Removed Constraints
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,16 @@ a|Capability
.2+e|ConceptDescription | `\https://admin-shell.io/aas/3/1/KeyTypes/ConceptDescription`
a|Concept Description


.2+e|ContainerElement | `\https://admin-shell.io/aas/3/1/KeyTypes/ContainerElement`
a|
Container Element


====
Note: container elements are abstract, i.e. if a key uses "ContainerElement", the reference may be a submodel element collection, an entity etc.
====

.2+e|DataElement | `\https://admin-shell.io/aas/3/1/KeyTypes/DataElement`
a|
Data Element
Expand Down Expand Up @@ -294,7 +304,7 @@ Note: not used as type but in constraints.
====


h|Set of: |xref:AasReferableNonIdentifiables[AASReferableNonIdentifiables], xref:GenericFragmentKeys[GenericFragmentKeys]
h|Set of: |xref:AasReferableNonIdentifiables[AasReferableNonIdentifiables], xref:GenericFragmentKeys[GenericFragmentKeys]
h|ID: | `\https://admin-shell.io/aas/3/1/FragmentKeys`


Expand All @@ -316,6 +326,15 @@ a|Blob
a|Capability


.2+e|ContainerElement | `\https://admin-shell.io/aas/3/1/FragmentKeys/ContainerElement`
a|
Container Element


====
Note: container elements are abstract, i.e. if a key uses "ContainerElement", the reference may be a submodel element collection, an entity etc.
====

.2+e|DataElement | `\https://admin-shell.io/aas/3/1/FragmentKeys/DataElement`
a|
Data Element
Expand Down Expand Up @@ -431,6 +450,14 @@ a|Blob
.2+e|Capability | `\https://admin-shell.io/aas/3/1/AasReferableNonIdentifiables/Capability`
a|Capability

.2+e|ContainerElement | `\https://admin-shell.io/aas/3/1/AasReferableNonIdentifiables/ContainerElement`
a|
Container Element


====
Note: container elements are abstract, i.e. if a key uses "ContainerElement", the reference may be a submodel element collection, an entity etc.
====

.2+e|DataElement | `\https://admin-shell.io/aas/3/1/AasReferableNonIdentifiables/DataElement`
a|
Expand Down Expand Up @@ -503,7 +530,7 @@ a|List of submodel elements
|===
h|Enumeration: e|[[AasSubmodelElements]]AasSubmodelElements
h|Explanation: a|Enumeration of submodel element types including abstract submodel element types
h|Set of: |--
h|Set of: | xref:AasContainerSubmodelElements[AasContainerSubmodelElements], xref:AasNonContainerSubmodelElements[AasNonContainerSubmodelElements]
h|ID: | `\https://admin-shell.io/aas/3/1/AasSubmodelElements`

.2+h|Literal h| ID
Expand All @@ -517,12 +544,20 @@ a|Annotated relationship element
.2+e|BasicEventElement | `\https://admin-shell.io/aas/3/1/AasSubmodelElements/BasicEventElement`
a|Basic event element

.2+e|Blob | `\https://admin-shell.io/aas/3/1/AasSubmodelElements[/Blob`
.2+e|Blob | `\https://admin-shell.io/aas/3/1/AasSubmodelElements/Blob`
a|Blob

.2+e|Capability | `\https://admin-shell.io/aas/3/1/AasSubmodelElements/Capability`
a|Capability

.2+e|ContainerElement | `\https://admin-shell.io/aas/3/1/AasSubmodelElements/ContainerElement`
a|
Container Element


====
Note: container elements are abstract, i.e. if a key uses "ContainerElement", the reference may be a submodel element collection, an entity etc.
====

.2+e|DataElement | `\https://admin-shell.io/aas/3/1/AasSubmodelElements/DataElement`
a|
Expand Down Expand Up @@ -590,6 +625,139 @@ a|List of submodel elements
|===


{empty} +



[.table-with-appendix-table]
[cols="30%h,70%"]
|===
h|Enumeration: e|[[AasNonContainerElements]]AasNonContainerSubmodelElements
h|Explanation: a|Enumeration of non-container submodel element types including abstract submodel element types

====
Note: not used as type but may be used in constraints.
====

h|Set of: | --
h|ID: | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements`

.2+h|Literal h| ID
h|Explanation



.2+e|BasicEventElement | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/BasicEventElement`
a|Basic event element

.2+e|Blob | `\https://admin-shell.io/aas/3/1/AasSubmodelElements/Blob`
a|Blob

.2+e|Capability | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/Capability`
a|Capability


.2+e|DataElement | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/DataElement`
a|
Data Element


====
Note: data elements are abstract, i.e. if a key uses "DataElement", the reference may be a property, file, etc.
====


.2+e|EventElement | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/EventElement`
a|
Event


====
Note: event element is abstract.
====


.2+e|File | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/File`
a|File


.2+e|MultiLanguageProperty | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/MultiLanguageProperty`
a|Property with a value that can be provided in multiple languages

.2+e|Operation| `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/Operation`
a|Operation

.2+e|Property | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/Property`
a|Property

.2+e|Range | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/Range`
a|Range with min and max



.2+e|ReferenceElement | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/ReferenceElement`
a|Reference

.2+e|RelationshipElement | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/RelationshipElement`
a|Relationship


.2+e|SubmodelElement | `\https://admin-shell.io/aas/3/1/AasNonContainerSubmodelElements/SubmodelElement`
a|
Submodel element


====
Note: submodel elements are abstract, i.e. if a key uses "SubmodelElement", the reference may be a property, a submodel element list, an operation, etc.
====

|===



{empty} +

[.table-with-appendix-table]
[cols="30%h,70%"]
|===
h|Enumeration: e|[[AasContainerSubmodelElements]]AasContainerSubmodelElements
h|Explanation: a|Enumeration of conainer submodel element types including abstract container submodel element types

====
Note: not used as type but may be used in constraints.
====

h|Set of: | --
h|ID: | `\https://admin-shell.io/aas/3/1/AasContainerSubmodelElements`

.2+h|Literal h| ID
h|Explanation


.2+e|AnnotatedRelationshipElement | `\https://admin-shell.io/aas/3/1/AasContainerSubmodelElements/AnnotatedRelationshipElement`
a|Annotated relationship element

.2+e|ContainerElement | `\https://admin-shell.io/aas/3/1/AasContainerSubmodelElements/ContainerElement`
a|
Container Element


====
Note: container elements are abstract, i.e. if a key uses "ContainerElement", the reference may be a submodel element collection, an entity etc.
====


.2+e|Entity | `\https://admin-shell.io/aas/3/1/AasContainerSubmodelElements/Entity`
a|Entity


.2+e|SubmodelElementCollection | `\https://admin-shell.io/aas/3/1/AasContainerSubmodelElements/SubmodelElementCollection`
a|Struct of submodel elements

.2+e|SubmodelElementList | `\https://admin-shell.io/aas/3/1/AasContainerSubmodelElements/SubmodelElementList`
a|List of submodel elements
|===


{empty} +

Expand All @@ -608,7 +776,7 @@ Note: not used as type but in constraints.
====


h|Set of: |xref:AasReferableNonIdentifiables[AASReferableNonIdentifiables], xref:AasIdentifiables[AasIdentifiables]
h|Set of: |xref:AasReferableNonIdentifiables[AasReferableNonIdentifiables], xref:AasIdentifiables[AasIdentifiables]
h|ID: | `\https://admin-shell.io/aas/3/1/AasReferables`

.2+h|Literal h| ID
Expand All @@ -634,6 +802,16 @@ a|Capability
a|
Concept description

.2+e|ContainerElement | `\https://admin-shell.io/aas/3/1/AasReferables/ContainerElement`
a|
Container Element


====
Note: container elements are abstract, i.e. if a key uses "ContainerElement", the reference may be a submodel element collection, an entity etc.
====


.2+e|DataElement | `\https://admin-shell.io/aas/3/1/AasReferables/DataElement`
a|
Data element
Expand Down Expand Up @@ -713,9 +891,9 @@ a|Struct of submodel elements
a|List of submodel elements
|===

{empty} +


{empty} +



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ If this semantic definition requires additional information not contained in the
|===
h|Class: 3+e|[[AnnotatedRelationshipElement]]AnnotatedRelationshipElement
h|Explanation: 3+a|An annotated relationship element is a relationship element that can be annotated with additional data elements.
h|Inherits from: 3+|xref:RelationshipElement[RelationshipElement]
h|Inherits from: 3+|xref:RelationshipElement[RelationshipElement], xref:ContainerElement[ContainerElement]
h|ID: 3+| `\https://admin-shell.io/aas/3/1/AnnotatedRelationshipElement`

.2+h|Attribute 3+h| ID
Expand Down Expand Up @@ -335,6 +335,36 @@ h|ID: 3+| `\https://admin-shell.io/aas/3/1/Capability`
h|Explanation h|Type h|Card.
|===


[#container-element-and-overview-of-data-element-types]
== Container Element and Overview of Container Element Types

.Metamodel of Container Elements
[[image-container-element-subtypes]]
[plantuml, container-element-subtypes, svg]
....
include::partial$diagrams/container-element-subtypes.puml[]
....


A container element is a submodel element that is composed of other submodel elements.

Container elements include xref:spec-metamodel/submodel-elements.adoc#AnnotatedRelationshipElement[AnnotatedRelationshipElement], xref:spec-metamodel/submodel-elements.adoc#Entity[Entity], xref:spec-metamodel/submodel-elements.adoc#SubmodelElementCollection[SubmodelElementCollection] and xref:spec-metamodel/submodel-elements.adoc#SubmodelElementList[SubmodelElementList], see <<mage-container-element-subtypes>>.

[.table-with-appendix-table]
[cols="25%,40%,25%,10%"]
|===
h|Class: 3+e|[[ContainerElement]]ContainerElement \<<abstract>>
h|Explanation: 3+a|
A data element is a submodel element that is composed of other submodel elements.

h|Inherits from: 3+|xref:spec-metamodel/core.adoc#SubmodelElement[SubmodelElement]
h|ID: 3+| `\https://admin-shell.io/aas/3/1/ContainerElement`

.2+h|Attribute 3+h| ID
h|Explanation h|Type h|Card.
|===

[#data-element-and-overview-of-data-element-types]
== Data Element and Overview of Data Element Types

Expand Down Expand Up @@ -403,7 +433,7 @@ An entity is a submodel element that is used to model entities.
{aasd014}


h|Inherits from: 3+|xref:spec-metamodel/core.adoc#SubmodelElement[SubmodelElement]
h|Inherits from: 3+|xref:ContainerElement[ContainerElement]
h|ID: 3+| `\https://admin-shell.io/aas/3/1/Entity`

.2+h|Attribute 3+h| ID
Expand Down Expand Up @@ -800,7 +830,7 @@ However, it is recommended to adhere to the order defined in the submodel templa
|===
h|Class: 3+e|[[SubmodelElementCollection]]SubmodelElementCollection
h|Explanation: 3+a|A submodel element collection is a kind of struct, i.e. a logical encapsulation of multiple named values.
h|Inherits from: 3+|xref:spec-metamodel/core.adoc#SubmodelElement[SubmodelElement]
h|Inherits from: 3+|xref:ContainerElement[ContainerElement]
h|ID: 3+| `\https://admin-shell.io/aas/3/1/SubmodelElementCollection`

.2+h|Attribute 3+h| ID
Expand Down Expand Up @@ -864,7 +894,7 @@ The numbering starts with Zero (0).
{aasd109}


h|Inherits from: 3+|xref:spec-metamodel/core.adoc#SubmodelElement[SubmodelElement]
h|Inherits from: 3+|xref:ContainerElement[ContainerElement]
h|ID: 3+| `\https://admin-shell.io/aas/3/0/SubmodelElementList`

.2+h|Attribute 3+h| ID
Expand Down
Loading