Skip to content

Commit

Permalink
#333 ContainerElement introduced as abstract class (#500)
Browse files Browse the repository at this point in the history
+ key enums adapted
  • Loading branch information
BirgitBoss authored Dec 13, 2024
1 parent e098147 commit 36697b0
Show file tree
Hide file tree
Showing 7 changed files with 245 additions and 22 deletions.
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 @@ -796,7 +826,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 @@ -860,7 +890,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

0 comments on commit 36697b0

Please sign in to comment.