Skip to content

Commit

Permalink
Continue working on issues (#508)
Browse files Browse the repository at this point in the history
* remove zip file, was not added on purpose

* fix #333 recursion depth max 32

* fix #333 recursion depth continues
fix #388 UML Cardinality

* fix #396 continued

* matching strategy references

* fix figure ContainerElement in SubmodelElement Overview

* check to mention all issues closed in v3.1
  • Loading branch information
BirgitBoss authored Dec 15, 2024
1 parent a5e7f8f commit 2dfc645
Show file tree
Hide file tree
Showing 9 changed files with 54 additions and 31 deletions.
Binary file removed documentation - Copy.zip
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,12 @@ The following kinds of _Types_ are distinguished:
** _<Primitive>:_ Type is no object type (class) but a data type; it is just a value, see Clause xref:spec-metamodel/datatypes.adoc#primitive-data-types[Primitive Data Types]
** _<Enumeration>:_ Type is an enumeration, see <<template-for-enumerations>>

_Card._ is the cardinality (or multiplicity) defining the lower and upper bound of the number of instances of the member element. "\*" denotes an arbitrary infinite number of elements of the corresponding Type. "0..1" means optional. "0..*" or "0..3" etc. means that the list may be either not available (optional) or the list is not empty.
_Card._ is the cardinality (or multiplicity) defining the lower and upper bound of the number of instances of the member element.
"\*" denotes an arbitrary infinite number of elements of the corresponding Type.
"0..1" means optional. "0..*" or "0..3" etc. means that the list may be either not available (optional) or the list is not empty.
In the case of "0..3" there are at most 3 elements in the list.
"1" means the attribute is mandatory.
"1..*" or "1..3" means there is at least 1 element in the list. The "*" denotes as maximum an infinite number of elements of the corresponding type whereas "3" means that there are at most 3 elements in the list - analogeous for other numbers.

====
Note 1: attributes having a default value are always considered to be optional; there is always a value for the attribute because the default value is used for initialization in this case.
Expand Down
34 changes: 21 additions & 13 deletions documentation/IDTA-01001/modules/ROOT/pages/changelog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -62,35 +62,43 @@ also abbreviations partly adopted; changes:
** changed: Submodel template
** changed: Submodel template element
** removed: technical functionality
* Update clause on matching algorithm for references
(https://github.com/admin-shell-io/aas-specs/issues/350[#350])
** introduce equivalent matching and rename exact matching to value matching
** added notes
* Update clause on matching algorithm for references, include handling of supplementalSemanticIds, isCaseOf etc.
(https://github.com/admin-shell-io/aas-specs/issues/350[#350],
https://github.com/admin-shell-io/aas-specs/issues/471[#471],
https://github.com/admin-shell-io/aas-specs/issues/473[#473],
https://github.com/admin-shell-io/aas-specs/issues/479[#479],
https://github.com/admin-shell-io/aas-specs/issues/347[#347])
* (Editorial) Adding metamodel element IDs to tables themselves for easier usage (besides grammar defining how to derive them) (https://github.com/admin-shell-io/aas-specs/issues/366[#366])
* Update all metamodel element IDs to V3.1 (https://github.com/admin-shell-io/aas-specs/issues/366[#366])
* Transfer of clauses on formats Metadata, Paths and Value-Only from Part 2 API to Part 1 Metamodel (https://github.com/admin-shell-io/aas-specs/issues/325[#325])
* (Editorial) Update clause on Value-Only Serialization, improve documentation (https://github.com/admin-shell-io/aas-specs/issues/370[#370], https://github.com/admin-shell-io/aas-specs/issues/371[#371])
* (Editorial) Update clause on Value-Only Serialization, improve documentation (https://github.com/admin-shell-io/aas-specs/issues/370[#370], https://github.com/admin-shell-io/aas-specs/issues/371[#371], https://github.com/admin-shell-io/aas-specs/issues/411[#411])
** add table similar to metadata table: which attributes are displayed in Value-Only serialization
** update examples to provide Value-Only serialization for every submodel element (not in the context of a Submodel as before)
** add clause for Submodel Example (with properties from SMT Technical Data, not Families any longer)
* update Schema for JSON-Value Serialization (https://github.com/admin-shell-io/aas-specs/issues/366[#366])

* remove recommendation to use external references for semanticId (https://github.com/admin-shell-io/aas-specs/issues/376[#376]) and related attributes like valueId and isCaseOf (https://github.com/admin-shell-io/aas-specs/issues/396[#396])

* update Schema for JSON-Value Serialization (https://github.com/admin-shell-io/aas-specs/issues/389[#389])
* remove recommendation to use external references for semanticId (https://github.com/admin-shell-io/aas-specs/issues/376[#376]) and related attributes like valueId and isCaseOf (https://github.com/admin-shell-io/aas-specs/issues/396[#396], https://github.com/admin-shell-io/aas-specs/issues/396[#396])
* add note: A maximum recursion depth of 32 for Container-Elements should be supported.
This means for certification a maximum of 32 recursion test cases should be tested. (https://github.com/admin-shell-io/aas-specs/issues/333[#333])
* remove clauses on OPC UA and AutomationML mappings (https://github.com/admin-shell-io/aas-specs/issues/373[#373], https://github.com/admin-shell-io/aas-specs/issues/397[#397])
* update explanatory text and notes in the context of AdministrativeInformation (https://github.com/admin-shell-io/aas-specs/issues/331[#331])
* Transfer from .docx to asciidoc (.adoc) and maintenance in GitHub
* Transfer from .docx to asciidoc (.adoc) and maintenance in GitHub (including (https://github.com/admin-shell-io/aas-specs/issues/318[#318], https://github.com/admin-shell-io/aas-specs/issues/316[#316] )
* Transfer of all UML figures to PlantUML (.puml) and maintenance in GitHub, no XMI presenation part of release any longer (https://github.com/admin-shell-io/aas-specs/issues/439[#439])

Minor Changes:
Editorial Bugfixes:
* Replace xs:dateType with xs:dateTime (https://github.com/admin-shell-io/aas-specs/issues/467[#467])
* Correct Example for Reference (https://github.com/admin-shell-io/aas-specs/issues/481[#481])
* improve UML Template description with respect to cardinality (https://github.com/admin-shell-io/aas-specs/issues/388[#388])

* explanation of ValueOnly-Normal round-trip issues (https://github.com/admin-shell-io/aas-specs/issues/364[#364])
Minor Changes:
* update Constraint AASd-116 (https://github.com/admin-shell-io/aas-specs/issues/298[#298])
* remove information on OPC UA mapping (https://github.com/admin-shell-io/aas-specs/issues/373[#373])
* remove information on AutomationML mapping (https://github.com/admin-shell-io/aas-specs/issues/397[#397])
* update bibliography (newer versions, link update, removal of entries not referenced)
* consistent usage of idShortPath and IRDI-Path (https://github.com/admin-shell-io/aas-specs/issues/385[#385])
* add example for deprecated attribute in class in Annex UML
* editorial changes
* editorial changes (including https://github.com/admin-shell-io/aas-specs/issues/345[#345],
https://github.com/admin-shell-io/aas-specs/issues/361[#361],
https://github.com/admin-shell-io/aas-specs/issues/385[#385])


=== Metamodel Changes V3.1 vs. V3.0.1
Expand Down
31 changes: 18 additions & 13 deletions documentation/IDTA-01001/modules/ROOT/pages/general.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ Sometimes a concept description is derived from another concept description or i
** Example: Property with idShort "ManufacturerName" + semanticId value 0173-1#02-AAO677#002 and Property with idShort "Herstellername" + semanticId value 0173-1#02-AAO677#002 have exactly equal semantics if the key types in both semanticIds are identical plus the other attributes of a Reference like _type_ and _referredSemanticId_ as well. So if the first key type of property "ManufacturerName" is "ExternalReference" and the first key type of the semanticId of property "Herstellername" is "ModelReference" then the two semanticIds are no exact match. Or if the first reference contains a referredSemanticId value and the second does not the two semantic IDs are not exact matches.

====
Note: Typically, a semanticId does not have a _referredSemanticId_
Note 1: Typically, a semanticId does not have a _referredSemanticId_
====

*Value Matching*
Expand All @@ -475,7 +475,7 @@ For example, if semantic versioning is used to version the concept description,
** Example: property with idShort "ManufacturerName" + semanticId 0173-1#02-AAO677#002 and Property with idShort "Herstellername" + semanticId 0173-1#02-AAO677#003 have equal semantics.

====
Note: to compare two semantic IDs, knowledge about versioning needs to be available.
Note 2: to compare two semantic IDs, knowledge about versioning needs to be available.
In the example above, two IRDIs from ECLASS are compared.
ECLASS rules ensure that the semantics is always backward compatible for new versions; a new IRDI would be created for breaking changes.
====
Expand Down Expand Up @@ -516,7 +516,7 @@ Semantic mappings may exist within one and the same dictionary, but also between
** Example: 0112/2///61360_4#AAE530 for nominal capacity of a battery in dictionary IEC CDD and 0173-1#02-AAI048#004 in ECLASS have equal semanticsfootnote:[Semantic mapping files are also used in ECLASS between ECLASS Classic and ECLASS Advanced: https://eclass.eu/support/technical-specification/data-model/basic-advanced-mapping] footnote:[This is the format used for semantic mapping in ECLASS: https://eclass.eu/fileadmin/Redaktion/pdf-Dateien/Wiki/ECLASSXML_3.0/ECLASS_XML/mapping.xsd].

====
Note: this example does not represent an existing semantic mapping; it is only a candidate.
Note 3: this example does not represent an existing semantic mapping; it is only a candidate.
====


Expand All @@ -537,7 +537,7 @@ This clause explains matching strategies based on the reference concept (see Cla
For example, the string serialization of references as defined in Clause xref:mappings/mappings.adoc#reference-serialization[Text Serialization of Values of Type "Reference"] is used for easier understanding.

====
Note: Matching in this context means supporting a discovery query against an existing model.
Note 4: Matching in this context means supporting a discovery query against an existing model.
A typical query would be to find some element with a specific semantic ID.
In this case the data consumer only knows the external ID whereas the provider may have created a duplicate of the concept definition as ConceptDescription and a model reference could be used
Expand Down Expand Up @@ -570,33 +570,34 @@ but a value match.
* An external reference A matches an external reference B if all values of all keys are identical.

====
Note: it is unlikely that a fragment value is identical to a global reference value; it will reference something different.
Note 5: it is unlikely that a fragment value is identical to a global reference value; it will reference something different.
====

* A model reference A matches a model reference B if all values of all keys are identical.

====
Note: the key type can be ignored since the fragment keys are always unique (e.g. all idShorts of submodel elements in a submodel or all submodel elements in a submodel element list or collection).
Note 6: the key type can be ignored since the fragment keys are always unique (e.g. all idShorts of submodel elements in a submodel or all submodel elements in a submodel element list or collection).
====

* An external reference A matches a model reference B and vice versa if all values of all keys are identical.

* The Reference/type and Reference/referredSemanticId are ignored for matching.

====
Note: since identifiables of the Asset Administration Shell are globally unique, model references are special cases of global references.
Note 7: since identifiables of the Asset Administration Shell are globally unique, model references are special cases of global references.
The only difference is the handling of key types that are predefined for Asset Administration Shell elements.
Other key types could be predefined, e.g. for IRDI-Paths etc.
However, so far only generic key types are supported.
====

====
Note: If the values for attribute "referredSemanticId" of the two references compared are not identical then there is a mismatch between the two that should be resolved.
Note 8: if the values for attribute "referredSemanticId" of the two references compared are not identical then there is a mismatch between the two that should be resolved.
However, the two are considered to match in the context of discovery.
====

====
Note: if the key types are not identical although all key values follow the correct order of the key chain, then at least one of the references is buggy and a warning should be issued.
Note 9 for model reference to model reference matching or external to external reference matching: if the key types are not identical although all key values follow the correct order of the key chain, then at least one of the references is buggy and a warning may be issued.
Exception: one of the model references uses an abstract class as value for the key type, the other model reference uses a non-abstract class (e.g. SubmodelElement and Property).
====

The definition of link:https://www.w3.org/TR/xmlschema-2/#terminology[XML Schema] is used for matching
Expand All @@ -609,7 +610,7 @@ The definition of link:https://www.w3.org/TR/xmlschema-2/#terminology[XML Schema

* (Of strings and rules in the grammar:) A string matches a grammatical production if it belongs to the language generated by that production.

"


[.underline]#Examples for matching external referencesfootnote:[The example only contains arbitrary IRDIs and does not represent a real-world example.]:#

Expand All @@ -618,27 +619,31 @@ The definition of link:https://www.w3.org/TR/xmlschema-2/#terminology[XML Schema
(GlobalReference)0173-1#01-ADS698#010, (GlobalReference)0173-1#01-ADS700#010
....

matches
value-matches

[listing]
....
(GlobalReference 0173-1#01-ADS698#010, (FragmentReference)0173-1#01-ADS700#010
....



[.underline]#Examples for non-matching external references:#

[listing]
....
(GlobalReference)https://example.com/aas/1/1/1234859590, (FragmentReference)Specification, (FragmentReference)Bibliography
....

does not match
does not value-match

[listing]
....
(GlobalReference)https://example.com/aas/1/1/1234859590, (FragmentReference)Specification, (FragmentReference)Bibliographie
....

since the values of the last fragment differ.

[.underline]#Examples for matching model references:#

Although these two model references would match according to the matching rules, other rules are violated, i.e. that the ID of the submodel is unique.
Expand Down Expand Up @@ -673,7 +678,7 @@ matches
....

====
Note: this kind of Submodel matching might occur if a SubmodelElement of type ReferenceElement is matched against a query for this element.
Note 10: this kind of Submodel matching might occur if a SubmodelElement of type ReferenceElement is matched against a query for this element.
It is not allowed to substitute the Submodel references within AssetAdministrationShell/submodels with an external reference!
====

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ every entry needs to be in one line, no \
:aasd121: pass:q[[underline]#Constraint AASd-121:# For xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference]s, the value of xref:ROOT:spec-metamodel/referencing.adoc#Key[Key/type] of the first _key_ of _Reference/keys_ shall be one of xref:ROOT:spec-metamodel/referencing.adoc#GloballyIdentifiables[GloballyIdentifiables].]
:aasd122: pass:q[[underline]#Constraint AASd-122:# For external references, i.e. xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference]s with _Reference/type_ = xref:ROOT:spec-metamodel/referencing.adoc#ReferenceTypes[ExternalReference], the value of xref:ROOT:spec-metamodel/referencing.adoc#Key[Key/type] of the first key of _Reference/keys_ shall be one of xref:ROOT:spec-metamodel/referencing.adoc#GenericGloballyIdentifiables[GenericGloballyIdentifiables].]
:aasd123: pass:q[[underline]#Constraint AASd-123:# For model references, i.e. xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference]s with _Reference/type_ = xref:ROOT:spec-metamodel/referencing.adoc#ReferenceTypes[ModelReference], the value of xref:ROOT:spec-metamodel/referencing.adoc#Key[Key/type] of the first _key_ of _Reference/keys_ shall be one of xref:ROOT:spec-metamodel/referencing.adoc#AasIdentifiables[AasIdentifiables].]
:aasd124: pass:q[[underline]#Constraint AASd-124:# For external references, i.e. xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference]s with _Reference/type_ = xref:ROOT:spec-metamodel/referencing.adoc#ReferenceTypes[ExternalReference], the last _key_ of _Reference/keys_ shall be either one of _GenericGloballyIdentifiables_ or one of xref:ROOT:spec-metamodel/referencing.adoc#GenericFragmentKeys[GenericFragmentKeys].]
:aasd124: pass:q[[underline]#Constraint AASd-124:# For external references, i.e. xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference]s with _Reference/type_ = xref:ROOT:spec-metamodel/referencing.adoc#ReferenceTypes[ExternalReference], the last _key_ of _Reference/keys_ shall be either one of xref:ROOT:spec-metamodel/referencing.adoc#GenericGloballyIdentifiables[GenericGloballyIdentifiables] or one of xref:ROOT:spec-metamodel/referencing.adoc#GenericFragmentKeys[GenericFragmentKeys].]
:aasd125: pass:q[[underline]#Constraint AASd-125:# For model references, i.e. xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference]s with xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference/type] = xref:ROOT:spec-metamodel/referencing.adoc#ReferenceTypes[ModelReference] with more than one key in _Reference/keys_, the value of xref:ROOT:spec-metamodel/referencing.adoc#Key[Key/type] of each of the keys following the first key of _Reference/keys_ shall be one of xref:ROOT:spec-metamodel/referencing.adoc#FragmentKeys[FragmentKeys].]
:aasd126: pass:q[[underline]#Constraint AASd-126:# For model references, i.e. xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference]s with _Reference/type_ = xref:ROOT:spec-metamodel/referencing.adoc#ReferenceTypes[ModelReference] with more than one key in _Reference/keys,_ the value of xref:ROOT:spec-metamodel/referencing.adoc#Key[Key/type] of the last xref:ROOT:spec-metamodel/referencing.adoc#Key[Key] in the reference key chain may be one of xref:ROOT:spec-metamodel/referencing.adoc#GenericFragmentKeys[GenericFragmentKeys] or no key at all shall have a value out of xref:ROOT:spec-metamodel/referencing.adoc#GenericFragmentKeys[GenericFragmentKeys].]
:aasd127: pass:q[[underline]#Constraint AASd-127:# For model references, i.e. xref:ROOT:spec-metamodel/referencing.adoc#Reference[Reference]s with _Reference/type_ = xref:ROOT:spec-metamodel/referencing.adoc#ReferenceTypes[ModelReference] with more than one key in _Reference/keys,_ a key with xref:ROOT:spec-metamodel/referencing.adoc#Key[Key/type] _FragmentReference_ shall be preceded by a key with xref:ROOT:spec-metamodel/referencing.adoc#Key[Key/type] _File_ or _Blob_. All other Asset Administration Shell fragments, i.e. xref:ROOT:spec-metamodel/referencing.adoc#Key[Key/type] values out of xref:ROOT:spec-metamodel/referencing.adoc#AasSubmodelElements[AasSubmodelElements] , do not support fragments.]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ SPDX-License-Identifier: CC-BY-4.0


The following JSON-Schema represents the validation schema for the ValueOnly-Serialization of submodel elements.
This holds true for all submodel elements mentioned in the previous clause except for _SubmodelElementCollections_.
This holds true for all submodel elements mentioned in the previous clause except for xref:spec-metamodel/submodel-elements.adoc#SubmodelElementCollection[SubmodelElementCollections].
Since _SubmodelElementCollections_ are treated as objects containing submodel elements of any kind, the integration
into the same validation schema would result in a circular reference or ambiguous results ignoring the actual
validation of submodel elements other than _SubmodelElementCollections_.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Reference to an external definition the concept is compatible to or was derived


====
Note 2: compare with is-case-of relationship in ISO 13584-32 (xref:bibliography.adoc#bib26[[26\]]) & IEC EN 61360 (xref:bibliography.adoc#bib25[[25\]])
Note: compare with is-case-of relationship in ISO 13584-32 (xref:bibliography.adoc#bib26[[26\]]) & IEC EN 61360 (xref:bibliography.adoc#bib25[[25\]])
====


Expand Down
Loading

0 comments on commit 2dfc645

Please sign in to comment.