Skip to content

Commit 2dffb74

Browse files
Update AASX (Part 5) to v3.1 (#486)
* Update SDK to V3.0.1 of AAS Part 5 (AASX) * Adapt link to specs and adapt link to schema files --------- Co-authored-by: Moritz Sommer <m.sommer@iat.rwth-aachen.de>
1 parent 5824891 commit 2dffb74

3 files changed

Lines changed: 23 additions & 15 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ jobs:
5353
# that you want to use to test the serialization adapter against.
5454
# Currently, we need to update this manually, however I'm afraid this is not possible to automatically infer,
5555
# since it's heavily dependant of the version of the AAS specification we support.
56-
AAS_SPECS_RELEASE_TAG: "IDTA-01001-3-0-1_schemasV3.0.8"
56+
AAS_SPECS_RELEASE_TAG: "IDTA-01001-3-1-2"
5757
services:
5858
couchdb:
5959
image: couchdb:3

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ for Industry 4.0 Systems.
77

88
These are the implemented AAS specifications of the [current SDK release](https://github.com/eclipse-basyx/basyx-python-sdk/releases/latest), which can be also found on [PyPI](https://pypi.org/project/basyx-python-sdk/):
99

10-
| Specification | Version |
11-
|---------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
10+
| Specification | Version |
11+
|---------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
1212
| Part 1: Metamodel | [v3.0.1 (01001-3-0-1)](https://industrialdigitaltwin.org/wp-content/uploads/2024/06/IDTA-01001-3-0-1_SpecificationAssetAdministrationShell_Part1_Metamodel.pdf) |
13-
| Schemata (JSONSchema, XSD) | [v3.0.8 (IDTA-01001-3-0-1_schemasV3.0.8)](https://github.com/admin-shell-io/aas-specs/releases/tag/IDTA-01001-3-0-1_schemasV3.0.8) |
14-
| Part 2: API | [v3.0 (01002-3-0)](https://industrialdigitaltwin.org/en/wp-content/uploads/sites/2/2023/06/IDTA-01002-3-0_SpecificationAssetAdministrationShell_Part2_API_.pdf) |
15-
| Part 3a: Data Specification IEC 61360 | [v3.0 (01003-a-3-0)](https://industrialdigitaltwin.org/wp-content/uploads/2023/04/IDTA-01003-a-3-0_SpecificationAssetAdministrationShell_Part3a_DataSpecification_IEC61360.pdf) |
16-
| Part 5: Package File Format (AASX) | [v3.0 (01005-3-0)](https://industrialdigitaltwin.org/wp-content/uploads/2023/04/IDTA-01005-3-0_SpecificationAssetAdministrationShell_Part5_AASXPackageFileFormat.pdf) |
13+
| Schemata (JSONSchema, XSD) | [v3.0.8 (IDTA-01001-3-0-1_schemasV3.0.8)](https://github.com/admin-shell-io/aas-specs/releases/tag/IDTA-01001-3-0-1_schemasV3.0.8) |
14+
| Part 2: API | [v3.0 (01002-3-0)](https://industrialdigitaltwin.org/en/wp-content/uploads/sites/2/2023/06/IDTA-01002-3-0_SpecificationAssetAdministrationShell_Part2_API_.pdf) |
15+
| Part 3a: Data Specification IEC 61360 | [v3.1.1 (01003-a)](https://industrialdigitaltwin.org/wp-content/uploads/2025/08/IDTA-01003-a-3-1-1_AAS-Specification_Part3a_DataSpecification.pdf) |
16+
| Part 5: Package File Format (AASX) | [v3.1 (01005)](https://industrialdigitaltwin.org/wp-content/uploads/2025/06/IDTA_01005-25-01_AAS-Specification_Part5_AASXPackageFileFormat.pdf) |
1717

1818
If you need support to an older version of the specifications, please refer to our [prior releases](https://github.com/eclipse-basyx/basyx-python-sdk/releases).
1919
Each of them has a similar table at the top of the release notes.

sdk/basyx/aas/adapter/aasx.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,23 +140,31 @@ def read_into(self, object_store: model.AbstractObjectStore,
140140
:return: A set of the :class:`Identifiers <basyx.aas.model.base.Identifier>` of all
141141
:class:`~basyx.aas.model.base.Identifiable` objects parsed from the AASX file
142142
"""
143+
# Format of supported and deprecated AASX relationship URL
144+
AASX_REL_BASE = "http://admin-shell.io/aasx/relationships"
145+
AASX_REL_BASE_DEPRECATED = "http://www.admin-shell.io/aasx/relationships"
146+
RELATIONSHIP_TYPE_AASX_ORIGIN = f"{AASX_REL_BASE}/aasx-origin"
147+
RELATIONSHIP_TYPE_AASX_ORIGIN_DEPRECATED = f"{AASX_REL_BASE_DEPRECATED}/aasx-origin"
148+
143149
# Find AASX-Origin part
144150
core_rels = self.reader.get_related_parts_by_type()
145151
try:
146152
aasx_origin_part = core_rels[RELATIONSHIP_TYPE_AASX_ORIGIN][0]
147153
except IndexError as e:
148-
if core_rels.get("http://www.admin-shell.io/aasx/relationships/aasx-origin"):
154+
if core_rels.get(RELATIONSHIP_TYPE_AASX_ORIGIN_DEPRECATED):
149155
# Since there are many AASX files with this (wrong) relationship URls in the wild, we make an exception
150156
# and try to read it anyway. However, we notify the user that this may lead to data loss, since it is
151157
# highly likely that the other relationship URLs are also wrong in that file.
152158
# See also [#383](https://github.com/eclipse-basyx/basyx-python-sdk/issues/383) for the discussion.
153-
logger.warning("SPECIFICATION VIOLATED: The Relationship-URL in your AASX file "
154-
"('http://www.admin-shell.io/aasx/relationships/aasx-origin') "
155-
"is not valid, it should be 'http://admin-shell.io/aasx/relationships/aasx-origin'. "
156-
"We try to read the AASX file anyway, but this cannot guaranteed in the future,"
157-
"and the file may not be fully readable, so data losses may occur."
158-
"Please fix this and/or notify the source of the AASX.")
159-
aasx_origin_part = core_rels["http://www.admin-shell.io/aasx/relationships/aasx-origin"][0]
159+
logger.warning(
160+
"Deprecated AASX relationship URL format used: '%s'. "
161+
"The supported AASX relationship URL format is: '%s'. "
162+
"Support for the deprecated form is kept for compatibility, but data losses may occur. "
163+
"Please fix the format and notify the author of the given AASX.",
164+
RELATIONSHIP_TYPE_AASX_ORIGIN_DEPRECATED,
165+
RELATIONSHIP_TYPE_AASX_ORIGIN,
166+
)
167+
aasx_origin_part = core_rels[RELATIONSHIP_TYPE_AASX_ORIGIN_DEPRECATED][0]
160168
else:
161169
raise ValueError("Not a valid AASX file: aasx-origin Relationship is missing.") from e
162170

0 commit comments

Comments
 (0)