From eb86c83138ba6a3c3ce57c08044887853caf11ea Mon Sep 17 00:00:00 2001 From: s-heppner Date: Mon, 4 Mar 2024 13:14:36 +0100 Subject: [PATCH 1/4] Extract compliance tool to be its own package We extract the compliance_tool into its own package, since the functionality is not needed in the general SDK anymore. The new aas-compliance-tool can be found [here](https://github.com/rwth-iat/aas-compliance-tool). --- README.md | 18 +- basyx/aas/adapter/json/__init__.py | 3 - basyx/aas/adapter/json/aasJSONSchema.json | 1528 -------- basyx/aas/adapter/xml/AAS.xsd | 1344 ------- basyx/aas/adapter/xml/__init__.py | 3 - basyx/aas/compliance_tool/__init__.py | 0 basyx/aas/compliance_tool/cli.py | 196 - .../compliance_tool/compliance_check_aasx.py | 321 -- .../compliance_tool/compliance_check_json.py | 225 -- .../compliance_tool/compliance_check_xml.py | 225 -- basyx/aas/compliance_tool/state_manager.py | 217 -- setup.py | 2 - test/compliance_tool/__init__.py | 28 - .../files/test_demo_full_example.json | 3210 ---------------- .../files/test_demo_full_example.xml | 2991 --------------- .../TestFile.pdf | Bin 8178 -> 0 bytes .../[Content_Types].xml | 2 - .../_rels/.rels | 2 - .../aasx/_rels/aasx-origin.rels | 2 - .../aasx/_rels/data.json.rels | 2 - .../aasx/aasx-origin | 0 .../aasx/data.json | 3218 ----------------- .../docProps/core.xml | 1 - ...est_demo_full_example_wrong_attribute.json | 3210 ---------------- ...test_demo_full_example_wrong_attribute.xml | 2991 --------------- .../TestFile.pdf | Bin 8178 -> 0 bytes .../[Content_Types].xml | 2 - .../_rels/.rels | 2 - .../aasx/_rels/aasx-origin.rels | 2 - .../aasx/_rels/data.xml.rels | 2 - .../aasx/aasx-origin | 0 .../aasx/data.xml | 2999 --------------- .../docProps/core.xml | 1 - .../TestFile.pdf | Bin 8178 -> 0 bytes .../[Content_Types].xml | 2 - .../_rels/.rels | 2 - .../aasx/_rels/aasx-origin.rels | 2 - .../aasx/_rels/data.xml.rels | 2 - .../aasx/aasx-origin | 0 .../aasx/data.xml | 2999 --------------- .../docProps/core.xml | 1 - .../test_deserializable_aas_warning.json | 16 - .../files/test_deserializable_aas_warning.xml | 16 - test/compliance_tool/files/test_empty.json | 1 - test/compliance_tool/files/test_empty.xml | 3 - .../files/test_empty_aasx/[Content_Types].xml | 1 - .../files/test_empty_aasx/_rels/.rels | 1 - .../aasx/_rels/aasx-origin.rels | 1 - .../files/test_empty_aasx/aasx/aasx-origin | 0 .../files/test_empty_aasx/docProps/core.xml | 1 - .../files/test_not_deserializable.json | 5 - .../files/test_not_deserializable_aas.json | 15 - .../files/test_not_deserializable_aas.xml | 13 - .../test_aas_compliance_tool.py | 325 -- .../test_compliance_check_aasx.py | 171 - .../test_compliance_check_json.py | 195 - .../test_compliance_check_xml.py | 187 - test/compliance_tool/test_state_manager.py | 47 - 58 files changed, 1 insertion(+), 26752 deletions(-) delete mode 100644 basyx/aas/adapter/json/aasJSONSchema.json delete mode 100644 basyx/aas/adapter/xml/AAS.xsd delete mode 100644 basyx/aas/compliance_tool/__init__.py delete mode 100644 basyx/aas/compliance_tool/cli.py delete mode 100644 basyx/aas/compliance_tool/compliance_check_aasx.py delete mode 100644 basyx/aas/compliance_tool/compliance_check_json.py delete mode 100644 basyx/aas/compliance_tool/compliance_check_xml.py delete mode 100644 basyx/aas/compliance_tool/state_manager.py delete mode 100644 test/compliance_tool/__init__.py delete mode 100644 test/compliance_tool/files/test_demo_full_example.json delete mode 100644 test/compliance_tool/files/test_demo_full_example.xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_json_aasx/TestFile.pdf delete mode 100644 test/compliance_tool/files/test_demo_full_example_json_aasx/[Content_Types].xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_json_aasx/_rels/.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/_rels/aasx-origin.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/_rels/data.json.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/aasx-origin delete mode 100644 test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/data.json delete mode 100644 test/compliance_tool/files/test_demo_full_example_json_aasx/docProps/core.xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_wrong_attribute.json delete mode 100644 test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_aasx/TestFile.pdf delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_aasx/[Content_Types].xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_aasx/_rels/.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/_rels/aasx-origin.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/_rels/data.xml.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/aasx-origin delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/data.xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_aasx/docProps/core.xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/TestFile.pdf delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/[Content_Types].xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/_rels/.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/_rels/aasx-origin.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/_rels/data.xml.rels delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/aasx-origin delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/data.xml delete mode 100644 test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/docProps/core.xml delete mode 100644 test/compliance_tool/files/test_deserializable_aas_warning.json delete mode 100644 test/compliance_tool/files/test_deserializable_aas_warning.xml delete mode 100644 test/compliance_tool/files/test_empty.json delete mode 100644 test/compliance_tool/files/test_empty.xml delete mode 100644 test/compliance_tool/files/test_empty_aasx/[Content_Types].xml delete mode 100644 test/compliance_tool/files/test_empty_aasx/_rels/.rels delete mode 100644 test/compliance_tool/files/test_empty_aasx/aasx/_rels/aasx-origin.rels delete mode 100644 test/compliance_tool/files/test_empty_aasx/aasx/aasx-origin delete mode 100644 test/compliance_tool/files/test_empty_aasx/docProps/core.xml delete mode 100644 test/compliance_tool/files/test_not_deserializable.json delete mode 100644 test/compliance_tool/files/test_not_deserializable_aas.json delete mode 100644 test/compliance_tool/files/test_not_deserializable_aas.xml delete mode 100644 test/compliance_tool/test_aas_compliance_tool.py delete mode 100644 test/compliance_tool/test_compliance_check_aasx.py delete mode 100644 test/compliance_tool/test_compliance_check_json.py delete mode 100644 test/compliance_tool/test_compliance_check_xml.py delete mode 100644 test/compliance_tool/test_state_manager.py diff --git a/README.md b/README.md index 63b5de26b..f6161fd00 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,6 @@ The BaSyx Python SDK project provides the `basax.aas` Python package with 6 subm * `basyx.aas.model`: The AAS metamodel implemented in python * `basyx.aas.adapter`: Adapters for various file formats * `basyx.aas.backend`: Backend infrastructure for storing and retrieving AAS objects -* `basyx.aas.compliance_tool`: Compliance checker for AAS files * `basyx.aas.util`: Provides utilities * `basyx.aas.examples`: Example data and tutorials @@ -152,22 +151,7 @@ A detailed, complete API documentation is available on Read the Docs: https://ba ### Compliance Tool -The Eclipse BaSyx Python SDK project contains a compliance tool for testing xml and json files is provided in the -`basyx.aas.compliance_tool`-package. Following functionalities are supported: - -* create an xml or json file compliant to the official schema containing example Asset Administration Shell elements -* create an aasx file with xml or json files compliant to the official schema containing example Asset Administration -Shell elements -* check if a given xml or json file is compliant to the official schema -* check if a given xml, json or aasx file is readable even if it is not compliant to the offical schema -* check if the data in a given xml, json or aasx file is the same as the example data -* check if two given xml, json or aasx files contain the same Asset Administration Shell elements in any order - -Invoking should work with either `python -m basyx.aas.compliance_tool.cli` or (when installed correctly and PATH is set -correctly) with `aas-compliance-check` on the command line. - -For further usage information consider the `basyx.aas.compliance_tool`-package or invoke with -`python -m basyx.aas.compliance_tool.cli --help` respectively `aas-compliance-check --help`. +The compliance tool functionality moved to [github.com/rwth-iat/aas-compliance-tool](https://github.com/rwth-iat/aas-compliance-tool). ## Contributing diff --git a/basyx/aas/adapter/json/__init__.py b/basyx/aas/adapter/json/__init__.py index 740b0fbf4..04b780566 100644 --- a/basyx/aas/adapter/json/__init__.py +++ b/basyx/aas/adapter/json/__init__.py @@ -16,10 +16,7 @@ AAS objects within a JSON file and return them as BaSyx Python SDK :class:`ObjectStore `. """ -import os.path from .json_serialization import AASToJsonEncoder, StrippedAASToJsonEncoder, write_aas_json_file, object_store_to_json from .json_deserialization import AASFromJsonDecoder, StrictAASFromJsonDecoder, StrippedAASFromJsonDecoder, \ StrictStrippedAASFromJsonDecoder, read_aas_json_file, read_aas_json_file_into - -JSON_SCHEMA_FILE = os.path.join(os.path.dirname(__file__), 'aasJSONSchema.json') diff --git a/basyx/aas/adapter/json/aasJSONSchema.json b/basyx/aas/adapter/json/aasJSONSchema.json deleted file mode 100644 index f48db4d17..000000000 --- a/basyx/aas/adapter/json/aasJSONSchema.json +++ /dev/null @@ -1,1528 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "title": "AssetAdministrationShellEnvironment", - "type": "object", - "allOf": [ - { - "$ref": "#/definitions/Environment" - } - ], - "$id": "https://admin-shell.io/aas/3/0", - "definitions": { - "AasSubmodelElements": { - "type": "string", - "enum": [ - "AnnotatedRelationshipElement", - "BasicEventElement", - "Blob", - "Capability", - "DataElement", - "Entity", - "EventElement", - "File", - "MultiLanguageProperty", - "Operation", - "Property", - "Range", - "ReferenceElement", - "RelationshipElement", - "SubmodelElement", - "SubmodelElementCollection", - "SubmodelElementList" - ] - }, - "AbstractLangString": { - "type": "object", - "properties": { - "language": { - "type": "string", - "pattern": "^(([a-zA-Z]{2,3}(-[a-zA-Z]{3}(-[a-zA-Z]{3}){2})?|[a-zA-Z]{4}|[a-zA-Z]{5,8})(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-(([a-zA-Z0-9]){5,8}|[0-9]([a-zA-Z0-9]){3}))*(-[0-9A-WY-Za-wy-z](-([a-zA-Z0-9]){2,8})+)*(-[xX](-([a-zA-Z0-9]){1,8})+)?|[xX](-([a-zA-Z0-9]){1,8})+|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$" - }, - "text": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - } - }, - "required": [ - "language", - "text" - ] - }, - "AdministrativeInformation": { - "allOf": [ - { - "$ref": "#/definitions/HasDataSpecification" - }, - { - "properties": { - "version": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 4 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^(0|[1-9][0-9]*)$" - } - ] - }, - "revision": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 4 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^(0|[1-9][0-9]*)$" - } - ] - }, - "creator": { - "$ref": "#/definitions/Reference" - }, - "templateId": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - } - } - } - ] - }, - "AnnotatedRelationshipElement": { - "allOf": [ - { - "$ref": "#/definitions/RelationshipElement_abstract" - }, - { - "properties": { - "annotations": { - "type": "array", - "items": { - "$ref": "#/definitions/DataElement_choice" - }, - "minItems": 1 - }, - "modelType": { - "const": "AnnotatedRelationshipElement" - } - } - } - ] - }, - "AssetAdministrationShell": { - "allOf": [ - { - "$ref": "#/definitions/Identifiable" - }, - { - "$ref": "#/definitions/HasDataSpecification" - }, - { - "properties": { - "derivedFrom": { - "$ref": "#/definitions/Reference" - }, - "assetInformation": { - "$ref": "#/definitions/AssetInformation" - }, - "submodels": { - "type": "array", - "items": { - "$ref": "#/definitions/Reference" - }, - "minItems": 1 - }, - "modelType": { - "const": "AssetAdministrationShell" - } - }, - "required": [ - "assetInformation" - ] - } - ] - }, - "AssetInformation": { - "type": "object", - "properties": { - "assetKind": { - "$ref": "#/definitions/AssetKind" - }, - "globalAssetId": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "specificAssetIds": { - "type": "array", - "items": { - "$ref": "#/definitions/SpecificAssetId" - }, - "minItems": 1 - }, - "assetType": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "defaultThumbnail": { - "$ref": "#/definitions/Resource" - } - }, - "required": [ - "assetKind" - ] - }, - "AssetKind": { - "type": "string", - "enum": [ - "Instance", - "NotApplicable", - "Type" - ] - }, - "BasicEventElement": { - "allOf": [ - { - "$ref": "#/definitions/EventElement" - }, - { - "properties": { - "observed": { - "$ref": "#/definitions/Reference" - }, - "direction": { - "$ref": "#/definitions/Direction" - }, - "state": { - "$ref": "#/definitions/StateOfEvent" - }, - "messageTopic": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "messageBroker": { - "$ref": "#/definitions/Reference" - }, - "lastUpdate": { - "type": "string", - "pattern": "^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\\.[0-9]+)?)|24:00:00(\\.0+)?)(Z|\\+00:00|-00:00)$" - }, - "minInterval": { - "type": "string", - "pattern": "^-?P((([0-9]+Y([0-9]+M)?([0-9]+D)?|([0-9]+M)([0-9]+D)?|([0-9]+D))(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S)))?)|(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S))))$" - }, - "maxInterval": { - "type": "string", - "pattern": "^-?P((([0-9]+Y([0-9]+M)?([0-9]+D)?|([0-9]+M)([0-9]+D)?|([0-9]+D))(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S)))?)|(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S))))$" - }, - "modelType": { - "const": "BasicEventElement" - } - }, - "required": [ - "observed", - "direction", - "state" - ] - } - ] - }, - "Blob": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "value": { - "type": "string", - "contentEncoding": "base64" - }, - "contentType": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 100 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" - } - ] - }, - "modelType": { - "const": "Blob" - } - }, - "required": [ - "contentType" - ] - } - ] - }, - "Capability": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "modelType": { - "const": "Capability" - } - } - } - ] - }, - "ConceptDescription": { - "allOf": [ - { - "$ref": "#/definitions/Identifiable" - }, - { - "$ref": "#/definitions/HasDataSpecification" - }, - { - "properties": { - "isCaseOf": { - "type": "array", - "items": { - "$ref": "#/definitions/Reference" - }, - "minItems": 1 - }, - "modelType": { - "const": "ConceptDescription" - } - } - } - ] - }, - "DataElement": { - "$ref": "#/definitions/SubmodelElement" - }, - "DataElement_choice": { - "oneOf": [ - { - "$ref": "#/definitions/Blob" - }, - { - "$ref": "#/definitions/File" - }, - { - "$ref": "#/definitions/MultiLanguageProperty" - }, - { - "$ref": "#/definitions/Property" - }, - { - "$ref": "#/definitions/Range" - }, - { - "$ref": "#/definitions/ReferenceElement" - } - ] - }, - "DataSpecificationContent": { - "type": "object", - "properties": { - "modelType": { - "$ref": "#/definitions/ModelType" - } - }, - "required": [ - "modelType" - ] - }, - "DataSpecificationContent_choice": { - "oneOf": [ - { - "$ref": "#/definitions/DataSpecificationIec61360" - } - ] - }, - "DataSpecificationIec61360": { - "allOf": [ - { - "$ref": "#/definitions/DataSpecificationContent" - }, - { - "properties": { - "preferredName": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringPreferredNameTypeIec61360" - }, - "minItems": 1 - }, - "shortName": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringShortNameTypeIec61360" - }, - "minItems": 1 - }, - "unit": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "unitId": { - "$ref": "#/definitions/Reference" - }, - "sourceOfDefinition": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "symbol": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "dataType": { - "$ref": "#/definitions/DataTypeIec61360" - }, - "definition": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringDefinitionTypeIec61360" - }, - "minItems": 1 - }, - "valueFormat": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "valueList": { - "$ref": "#/definitions/ValueList" - }, - "value": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "levelType": { - "$ref": "#/definitions/LevelType" - }, - "modelType": { - "const": "DataSpecificationIec61360" - } - }, - "required": [ - "preferredName" - ] - } - ] - }, - "DataTypeDefXsd": { - "type": "string", - "enum": [ - "xs:anyURI", - "xs:base64Binary", - "xs:boolean", - "xs:byte", - "xs:date", - "xs:dateTime", - "xs:decimal", - "xs:double", - "xs:duration", - "xs:float", - "xs:gDay", - "xs:gMonth", - "xs:gMonthDay", - "xs:gYear", - "xs:gYearMonth", - "xs:hexBinary", - "xs:int", - "xs:integer", - "xs:long", - "xs:negativeInteger", - "xs:nonNegativeInteger", - "xs:nonPositiveInteger", - "xs:positiveInteger", - "xs:short", - "xs:string", - "xs:time", - "xs:unsignedByte", - "xs:unsignedInt", - "xs:unsignedLong", - "xs:unsignedShort" - ] - }, - "DataTypeIec61360": { - "type": "string", - "enum": [ - "BLOB", - "BOOLEAN", - "DATE", - "FILE", - "HTML", - "INTEGER_COUNT", - "INTEGER_CURRENCY", - "INTEGER_MEASURE", - "IRDI", - "IRI", - "RATIONAL", - "RATIONAL_MEASURE", - "REAL_COUNT", - "REAL_CURRENCY", - "REAL_MEASURE", - "STRING", - "STRING_TRANSLATABLE", - "TIME", - "TIMESTAMP" - ] - }, - "Direction": { - "type": "string", - "enum": [ - "input", - "output" - ] - }, - "EmbeddedDataSpecification": { - "type": "object", - "properties": { - "dataSpecification": { - "$ref": "#/definitions/Reference" - }, - "dataSpecificationContent": { - "$ref": "#/definitions/DataSpecificationContent_choice" - } - }, - "required": [ - "dataSpecification", - "dataSpecificationContent" - ] - }, - "Entity": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "statements": { - "type": "array", - "items": { - "$ref": "#/definitions/SubmodelElement_choice" - }, - "minItems": 1 - }, - "entityType": { - "$ref": "#/definitions/EntityType" - }, - "globalAssetId": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "specificAssetIds": { - "type": "array", - "items": { - "$ref": "#/definitions/SpecificAssetId" - }, - "minItems": 1 - }, - "modelType": { - "const": "Entity" - } - }, - "required": [ - "entityType" - ] - } - ] - }, - "EntityType": { - "type": "string", - "enum": [ - "CoManagedEntity", - "SelfManagedEntity" - ] - }, - "Environment": { - "type": "object", - "properties": { - "assetAdministrationShells": { - "type": "array", - "items": { - "$ref": "#/definitions/AssetAdministrationShell" - }, - "minItems": 1 - }, - "submodels": { - "type": "array", - "items": { - "$ref": "#/definitions/Submodel" - }, - "minItems": 1 - }, - "conceptDescriptions": { - "type": "array", - "items": { - "$ref": "#/definitions/ConceptDescription" - }, - "minItems": 1 - } - } - }, - "EventElement": { - "$ref": "#/definitions/SubmodelElement" - }, - "EventPayload": { - "type": "object", - "properties": { - "source": { - "$ref": "#/definitions/Reference" - }, - "sourceSemanticId": { - "$ref": "#/definitions/Reference" - }, - "observableReference": { - "$ref": "#/definitions/Reference" - }, - "observableSemanticId": { - "$ref": "#/definitions/Reference" - }, - "topic": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "subjectId": { - "$ref": "#/definitions/Reference" - }, - "timeStamp": { - "type": "string", - "pattern": "^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\\.[0-9]+)?)|24:00:00(\\.0+)?)(Z|\\+00:00|-00:00)$" - }, - "payload": { - "type": "string", - "contentEncoding": "base64" - } - }, - "required": [ - "source", - "observableReference", - "timeStamp" - ] - }, - "Extension": { - "allOf": [ - { - "$ref": "#/definitions/HasSemantics" - }, - { - "properties": { - "name": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "valueType": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "value": { - "type": "string" - }, - "refersTo": { - "type": "array", - "items": { - "$ref": "#/definitions/Reference" - }, - "minItems": 1 - } - }, - "required": [ - "name" - ] - } - ] - }, - "File": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "value": { - "type": "string" - }, - "contentType": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 100 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" - } - ] - }, - "modelType": { - "const": "File" - } - }, - "required": [ - "contentType" - ] - } - ] - }, - "HasDataSpecification": { - "type": "object", - "properties": { - "embeddedDataSpecifications": { - "type": "array", - "items": { - "$ref": "#/definitions/EmbeddedDataSpecification" - }, - "minItems": 1 - } - } - }, - "HasExtensions": { - "type": "object", - "properties": { - "extensions": { - "type": "array", - "items": { - "$ref": "#/definitions/Extension" - }, - "minItems": 1 - } - } - }, - "HasKind": { - "type": "object", - "properties": { - "kind": { - "$ref": "#/definitions/ModellingKind" - } - } - }, - "HasSemantics": { - "type": "object", - "properties": { - "semanticId": { - "$ref": "#/definitions/Reference" - }, - "supplementalSemanticIds": { - "type": "array", - "items": { - "$ref": "#/definitions/Reference" - }, - "minItems": 1 - } - } - }, - "Identifiable": { - "allOf": [ - { - "$ref": "#/definitions/Referable" - }, - { - "properties": { - "administration": { - "$ref": "#/definitions/AdministrativeInformation" - }, - "id": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - } - }, - "required": [ - "id" - ] - } - ] - }, - "Key": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/KeyTypes" - }, - "value": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - } - }, - "required": [ - "type", - "value" - ] - }, - "KeyTypes": { - "type": "string", - "enum": [ - "AnnotatedRelationshipElement", - "AssetAdministrationShell", - "BasicEventElement", - "Blob", - "Capability", - "ConceptDescription", - "DataElement", - "Entity", - "EventElement", - "File", - "FragmentReference", - "GlobalReference", - "Identifiable", - "MultiLanguageProperty", - "Operation", - "Property", - "Range", - "Referable", - "ReferenceElement", - "RelationshipElement", - "Submodel", - "SubmodelElement", - "SubmodelElementCollection", - "SubmodelElementList" - ] - }, - "LangStringDefinitionTypeIec61360": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 1023 - } - } - } - ] - }, - "LangStringNameType": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 128 - } - } - } - ] - }, - "LangStringPreferredNameTypeIec61360": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 255 - } - } - } - ] - }, - "LangStringShortNameTypeIec61360": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 18 - } - } - } - ] - }, - "LangStringTextType": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 1023 - } - } - } - ] - }, - "LevelType": { - "type": "object", - "properties": { - "min": { - "type": "boolean" - }, - "nom": { - "type": "boolean" - }, - "typ": { - "type": "boolean" - }, - "max": { - "type": "boolean" - } - }, - "required": [ - "min", - "nom", - "typ", - "max" - ] - }, - "ModelType": { - "type": "string", - "enum": [ - "AnnotatedRelationshipElement", - "AssetAdministrationShell", - "BasicEventElement", - "Blob", - "Capability", - "ConceptDescription", - "DataSpecificationIec61360", - "Entity", - "File", - "MultiLanguageProperty", - "Operation", - "Property", - "Range", - "ReferenceElement", - "RelationshipElement", - "Submodel", - "SubmodelElementCollection", - "SubmodelElementList" - ] - }, - "ModellingKind": { - "type": "string", - "enum": [ - "Instance", - "Template" - ] - }, - "MultiLanguageProperty": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringTextType" - }, - "minItems": 1 - }, - "valueId": { - "$ref": "#/definitions/Reference" - }, - "modelType": { - "const": "MultiLanguageProperty" - } - } - } - ] - }, - "Operation": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "inputVariables": { - "type": "array", - "items": { - "$ref": "#/definitions/OperationVariable" - }, - "minItems": 1 - }, - "outputVariables": { - "type": "array", - "items": { - "$ref": "#/definitions/OperationVariable" - }, - "minItems": 1 - }, - "inoutputVariables": { - "type": "array", - "items": { - "$ref": "#/definitions/OperationVariable" - }, - "minItems": 1 - }, - "modelType": { - "const": "Operation" - } - } - } - ] - }, - "OperationVariable": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/SubmodelElement_choice" - } - }, - "required": [ - "value" - ] - }, - "Property": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "valueType": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "value": { - "type": "string" - }, - "valueId": { - "$ref": "#/definitions/Reference" - }, - "modelType": { - "const": "Property" - } - }, - "required": [ - "valueType" - ] - } - ] - }, - "Qualifiable": { - "type": "object", - "properties": { - "qualifiers": { - "type": "array", - "items": { - "$ref": "#/definitions/Qualifier" - }, - "minItems": 1 - }, - "modelType": { - "$ref": "#/definitions/ModelType" - } - }, - "required": [ - "modelType" - ] - }, - "Qualifier": { - "allOf": [ - { - "$ref": "#/definitions/HasSemantics" - }, - { - "properties": { - "kind": { - "$ref": "#/definitions/QualifierKind" - }, - "type": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "valueType": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "value": { - "type": "string" - }, - "valueId": { - "$ref": "#/definitions/Reference" - } - }, - "required": [ - "type", - "valueType" - ] - } - ] - }, - "QualifierKind": { - "type": "string", - "enum": [ - "ConceptQualifier", - "TemplateQualifier", - "ValueQualifier" - ] - }, - "Range": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "valueType": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "min": { - "type": "string" - }, - "max": { - "type": "string" - }, - "modelType": { - "const": "Range" - } - }, - "required": [ - "valueType" - ] - } - ] - }, - "Referable": { - "allOf": [ - { - "$ref": "#/definitions/HasExtensions" - }, - { - "properties": { - "category": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "idShort": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 128 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$" - } - ] - }, - "displayName": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringNameType" - }, - "minItems": 1 - }, - "description": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringTextType" - }, - "minItems": 1 - }, - "modelType": { - "$ref": "#/definitions/ModelType" - } - }, - "required": [ - "modelType" - ] - } - ] - }, - "Reference": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/ReferenceTypes" - }, - "referredSemanticId": { - "$ref": "#/definitions/Reference" - }, - "keys": { - "type": "array", - "items": { - "$ref": "#/definitions/Key" - }, - "minItems": 1 - } - }, - "required": [ - "type", - "keys" - ] - }, - "ReferenceElement": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "value": { - "$ref": "#/definitions/Reference" - }, - "modelType": { - "const": "ReferenceElement" - } - } - } - ] - }, - "ReferenceTypes": { - "type": "string", - "enum": [ - "ExternalReference", - "ModelReference" - ] - }, - "RelationshipElement": { - "allOf": [ - { - "$ref": "#/definitions/RelationshipElement_abstract" - }, - { - "properties": { - "modelType": { - "const": "RelationshipElement" - } - } - } - ] - }, - "RelationshipElement_abstract": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "first": { - "$ref": "#/definitions/Reference" - }, - "second": { - "$ref": "#/definitions/Reference" - } - }, - "required": [ - "first", - "second" - ] - } - ] - }, - "RelationshipElement_choice": { - "oneOf": [ - { - "$ref": "#/definitions/RelationshipElement" - }, - { - "$ref": "#/definitions/AnnotatedRelationshipElement" - } - ] - }, - "Resource": { - "type": "object", - "properties": { - "path": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 2000 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^file:(//((localhost|(\\[((([0-9A-Fa-f]{1,4}:){6}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|::([0-9A-Fa-f]{1,4}:){5}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|([0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){4}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){3}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){2}[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){2}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){4}[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(([0-9A-Fa-f]{1,4}:){6}[0-9A-Fa-f]{1,4})?::)|[vV][0-9A-Fa-f]+\\.([a-zA-Z0-9\\-._~]|[!$&'()*+,;=]|:)+)\\]|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=])*)))?/((([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))+(/(([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))*)*)?|/((([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))+(/(([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))*)*)?)$" - } - ] - }, - "contentType": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 100 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" - } - ] - } - }, - "required": [ - "path" - ] - }, - "SpecificAssetId": { - "allOf": [ - { - "$ref": "#/definitions/HasSemantics" - }, - { - "properties": { - "name": { - "type": "string", - "minLength": 1, - "maxLength": 64, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "value": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "externalSubjectId": { - "$ref": "#/definitions/Reference" - } - }, - "required": [ - "name", - "value" - ] - } - ] - }, - "StateOfEvent": { - "type": "string", - "enum": [ - "off", - "on" - ] - }, - "Submodel": { - "allOf": [ - { - "$ref": "#/definitions/Identifiable" - }, - { - "$ref": "#/definitions/HasKind" - }, - { - "$ref": "#/definitions/HasSemantics" - }, - { - "$ref": "#/definitions/Qualifiable" - }, - { - "$ref": "#/definitions/HasDataSpecification" - }, - { - "properties": { - "submodelElements": { - "type": "array", - "items": { - "$ref": "#/definitions/SubmodelElement_choice" - }, - "minItems": 1 - }, - "modelType": { - "const": "Submodel" - } - } - } - ] - }, - "SubmodelElement": { - "allOf": [ - { - "$ref": "#/definitions/Referable" - }, - { - "$ref": "#/definitions/HasSemantics" - }, - { - "$ref": "#/definitions/Qualifiable" - }, - { - "$ref": "#/definitions/HasDataSpecification" - } - ] - }, - "SubmodelElementCollection": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/definitions/SubmodelElement_choice" - }, - "minItems": 1 - }, - "modelType": { - "const": "SubmodelElementCollection" - } - } - } - ] - }, - "SubmodelElementList": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "orderRelevant": { - "type": "boolean" - }, - "semanticIdListElement": { - "$ref": "#/definitions/Reference" - }, - "typeValueListElement": { - "$ref": "#/definitions/AasSubmodelElements" - }, - "valueTypeListElement": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "value": { - "type": "array", - "items": { - "$ref": "#/definitions/SubmodelElement_choice" - }, - "minItems": 1 - }, - "modelType": { - "const": "SubmodelElementList" - } - }, - "required": [ - "typeValueListElement" - ] - } - ] - }, - "SubmodelElement_choice": { - "oneOf": [ - { - "$ref": "#/definitions/RelationshipElement" - }, - { - "$ref": "#/definitions/AnnotatedRelationshipElement" - }, - { - "$ref": "#/definitions/BasicEventElement" - }, - { - "$ref": "#/definitions/Blob" - }, - { - "$ref": "#/definitions/Capability" - }, - { - "$ref": "#/definitions/Entity" - }, - { - "$ref": "#/definitions/File" - }, - { - "$ref": "#/definitions/MultiLanguageProperty" - }, - { - "$ref": "#/definitions/Operation" - }, - { - "$ref": "#/definitions/Property" - }, - { - "$ref": "#/definitions/Range" - }, - { - "$ref": "#/definitions/ReferenceElement" - }, - { - "$ref": "#/definitions/SubmodelElementCollection" - }, - { - "$ref": "#/definitions/SubmodelElementList" - } - ] - }, - "ValueList": { - "type": "object", - "properties": { - "valueReferencePairs": { - "type": "array", - "items": { - "$ref": "#/definitions/ValueReferencePair" - }, - "minItems": 1 - } - }, - "required": [ - "valueReferencePairs" - ] - }, - "ValueReferencePair": { - "type": "object", - "properties": { - "value": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "valueId": { - "$ref": "#/definitions/Reference" - } - }, - "required": [ - "value", - "valueId" - ] - } - } -} \ No newline at end of file diff --git a/basyx/aas/adapter/xml/AAS.xsd b/basyx/aas/adapter/xml/AAS.xsd deleted file mode 100644 index 25d7a52b9..000000000 --- a/basyx/aas/adapter/xml/AAS.xsd +++ /dev/null @@ -1,1344 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/basyx/aas/adapter/xml/__init__.py b/basyx/aas/adapter/xml/__init__.py index 714c80663..617c1565b 100644 --- a/basyx/aas/adapter/xml/__init__.py +++ b/basyx/aas/adapter/xml/__init__.py @@ -9,10 +9,7 @@ :ref:`xml_deserialization `: The module offers a function to create an :class:`ObjectStore ` from a given xml document. """ -import os.path from .xml_serialization import write_aas_xml_file from .xml_deserialization import AASFromXmlDecoder, StrictAASFromXmlDecoder, StrippedAASFromXmlDecoder, \ StrictStrippedAASFromXmlDecoder, XMLConstructables, read_aas_xml_file, read_aas_xml_file_into, read_aas_xml_element - -XML_SCHEMA_FILE = os.path.join(os.path.dirname(__file__), 'AAS.xsd') diff --git a/basyx/aas/compliance_tool/__init__.py b/basyx/aas/compliance_tool/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/basyx/aas/compliance_tool/cli.py b/basyx/aas/compliance_tool/cli.py deleted file mode 100644 index 19f0bfbc8..000000000 --- a/basyx/aas/compliance_tool/cli.py +++ /dev/null @@ -1,196 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT - -""" -Command line script which is a compliance tool for creating and checking json and xml files in compliance with -"Details of the Asset Administration Shell" specification of Plattform Industrie 4.0. It uses the create_example() from -examples.data.__init__.py -""" -import argparse -import datetime - -import logging - -import pyecma376_2 - -from basyx.aas import model -from basyx.aas.adapter import aasx -from basyx.aas.adapter.xml import write_aas_xml_file -from basyx.aas.compliance_tool import compliance_check_xml as compliance_tool_xml, \ - compliance_check_json as compliance_tool_json, compliance_check_aasx as compliance_tool_aasx -from basyx.aas.adapter.json import write_aas_json_file -from basyx.aas.examples.data import create_example, create_example_aas_binding, TEST_PDF_FILE -from basyx.aas.compliance_tool.state_manager import ComplianceToolStateManager, Status - - -def parse_cli_arguments() -> argparse.ArgumentParser: - """ - This function returns the argument-parser for the cli - """ - parser = argparse.ArgumentParser( - prog='compliance_tool', - description='Compliance tool for creating and checking json and xml files in compliance with "Details of the ' - 'Asset Administration Shell" specification of Plattform Industrie 4.0. \n\n' - 'This tool has five features: \n' - '1. create a xml or json file or an AASX file using xml or json files with example aas elements\n' - '2. check if a given xml or json file is compliant with the official json or xml aas schema and ' - 'is deserializable\n' - '3. check if the data in a given xml, json or aasx file is the same as the example data\n' - '4. check if two given xml, json or aasx files contain the same aas elements in any order\n\n' - 'As a first argument, the feature must be specified (create, schema, deserialization, example, ' - 'files) or in short (c, s, d, e or f).\n' - 'Depending the chosen feature, different additional arguments must be specified:\n' - 'create or c: path to the file which shall be created (file_1)\n' - 'deseriable or d: file to be checked (file_1)\n' - 'example or e: file to be checked (file_1)\n' - 'file_compare or f: files to compare (file_1, file_2)\n,' - 'In any case, it must be specified whether the (given or created) files are json (--json) or ' - 'xml (--xml).\n' - 'All features except "schema" support reading/writing AASX packages instead of plain XML or JSON ' - 'files via the --aasx option.\n\n' - 'Additionally, the tool offers some extra features for more convenient usage:\n\n' - 'a. Different levels of verbosity:\n' - ' Default output is just the status for each step performed. With -v or --verbose, additional ' - 'information in case of status = FAILED will be provided. With one more -v or --verbose, additional' - ' information even in case of status = SUCCESS or WARNINGS will be provided.\n' - 'b. Suppressing output on success:\n' - ' With -q or --quite no output will be generated if the status = SUCCESS.\n' - 'c. Save log additionally in a logfile:\n' - ' With -l or --logfile, a path to the file where the logfiles shall be created can be specified.', - formatter_class=argparse.RawTextHelpFormatter) - - parser.add_argument('action', choices=['create', 'c', 'schema', 's', 'deserialization', 'd', 'example', 'e', - 'files', 'f'], - help='c or create: creates a file with example data\n' - 'd or deserialization: checks if a given file is compliance with the official schema and ' - 'is deserializable\n' - 'e or example: checks if a given file contains the example aas elements\n' - 'f or file_compare: checks if two given files contain the same aas elements in any order') - parser.add_argument('file_1', help="path to file 1") - parser.add_argument('file_2', nargs='?', default=None, help="path to file 2: is required if action f or files is " - "choosen") - parser.add_argument('-v', '--verbose', help="Print detailed information for each check. Multiple -v options " - "increase the verbosity. 1: Detailed error information, 2: Additional " - "detailed success information", action='count', default=0) - parser.add_argument('-q', '--quite', help="no information output if successful", action='store_true') - group = parser.add_mutually_exclusive_group(required=True) - group.add_argument('--json', help="Use AAS json format when checking or creating files", action='store_true') - group.add_argument('--xml', help="Use AAS xml format when checking or creating files", action='store_true') - parser.add_argument('-l', '--logfile', help="Log file to be created in addition to output to stdout", default=None) - parser.add_argument('--aasx', help="Create or read AASX files", action='store_true') - parser.add_argument('--dont-check-extensions', help="Don't compare Extensions", action='store_false') - return parser - - -def main(): - parser = parse_cli_arguments() - args = parser.parse_args() - - # Todo try to find out in which format the file is if not --json or --xml - - manager = ComplianceToolStateManager() - logger = logging.getLogger(__name__) - logger.propagate = False - logger.addHandler(manager) - - data_checker_kwargs = { - 'check_extensions': args.dont_check_extensions - } - - if args.action == 'create' or args.action == 'c': - manager.add_step('Create example data') - if args.aasx: - data = create_example_aas_binding() - else: - data = create_example() - manager.set_step_status(Status.SUCCESS) - try: - manager.add_step('Open file') - if args.aasx: - with aasx.AASXWriter(args.file_1) as writer: - manager.set_step_status(Status.SUCCESS) - manager.add_step('Write data to file') - - files = aasx.DictSupplementaryFileContainer() - with open(TEST_PDF_FILE, 'rb') as f: - files.add_file("/TestFile.pdf", f, "application/pdf") - - # Create OPC/AASX core properties - cp = pyecma376_2.OPCCoreProperties() - cp.created = datetime.datetime(2020, 1, 1, 0, 0, 0) - cp.creator = "Eclipse BaSyx Python Testing Framework" - cp.description = "Test_Description" - cp.lastModifiedBy = "Eclipse BaSyx Python Testing Framework Compliance Tool" - cp.modified = datetime.datetime(2020, 1, 1, 0, 0, 1) - cp.revision = "1.0" - cp.version = "2.0.1" - cp.title = "Test Title" - - writer.write_aas_objects("/aasx/data.json" if args.json else "/aasx/data.xml", - [obj.id for obj in data], data, files, - write_json=args.json) - writer.write_core_properties(cp) - manager.set_step_status(Status.SUCCESS) - elif args.json: - with open(args.file_1, 'w', encoding='utf-8-sig') as file: - manager.set_step_status(Status.SUCCESS) - manager.add_step('Write data to file') - write_aas_json_file(file=file, data=data, indent=4) - manager.set_step_status(Status.SUCCESS) - elif args.xml: - with open(args.file_1, 'wb') as file: - manager.set_step_status(Status.SUCCESS) - manager.add_step('Write data to file') - write_aas_xml_file(file=file, data=data, pretty_print=True) - manager.set_step_status(Status.SUCCESS) - except IOError as error: - logger.error(error) - manager.set_step_status(Status.FAILED) - elif args.action == 'deserialization' or args.action == 'd': - if args.aasx: - compliance_tool_aasx.check_deserialization(args.file_1, manager) - elif args.json: - compliance_tool_json.check_deserialization(args.file_1, manager) - elif args.xml: - compliance_tool_xml.check_deserialization(args.file_1, manager) - elif args.action == 'example' or args.action == 'e': - if args.aasx: - compliance_tool_aasx.check_aas_example(args.file_1, manager, **data_checker_kwargs) - elif args.json: - compliance_tool_json.check_aas_example(args.file_1, manager, **data_checker_kwargs) - elif args.xml: - compliance_tool_xml.check_aas_example(args.file_1, manager, **data_checker_kwargs) - elif args.action == 'files' or args.action == 'f': - if args.file_2: - if args.aasx: - compliance_tool_aasx.check_aasx_files_equivalence(args.file_1, args.file_2, manager, - **data_checker_kwargs) - elif args.json: - compliance_tool_json.check_json_files_equivalence(args.file_1, args.file_2, manager, - **data_checker_kwargs) - elif args.xml: - compliance_tool_xml.check_xml_files_equivalence(args.file_1, args.file_2, manager, - **data_checker_kwargs) - else: - parser.error("f or files requires two file path.") - exit() - - if manager.status is Status.SUCCESS and args.quite: - exit() - - print(manager.format_state_manager(args.verbose)) - - if args.logfile: - try: - with open(args.logfile, 'w', encoding='utf-8-sig') as file: - file.write(manager.format_state_manager(args.verbose)) - except IOError as error: - print('Could not open logfile: \n{}'.format(error)) - - -if __name__ == "__main__": - main() diff --git a/basyx/aas/compliance_tool/compliance_check_aasx.py b/basyx/aas/compliance_tool/compliance_check_aasx.py deleted file mode 100644 index 9b9501abb..000000000 --- a/basyx/aas/compliance_tool/compliance_check_aasx.py +++ /dev/null @@ -1,321 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -""" -Module which offers functions to use in a confirmation tool related to AASX files - -All functions reports any issues using the given -:class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` by adding new steps and associated -:class:`LogRecords ` -""" -import datetime -import logging -from typing import Optional, Tuple -import io -from lxml import etree # type: ignore - -import pyecma376_2 - -from . import compliance_check_json, compliance_check_xml -from .. import model -from ..adapter import aasx -from ..adapter.xml import xml_deserialization -from ..adapter.json import json_deserialization -from ..examples.data import example_aas, create_example_aas_binding -from ..examples.data._helper import AASDataChecker, DataChecker -from .state_manager import ComplianceToolStateManager, Status - - -def check_deserialization(file_path: str, state_manager: ComplianceToolStateManager, - file_info: Optional[str] = None) \ - -> Tuple[model.DictObjectStore, aasx.DictSupplementaryFileContainer, pyecma376_2.OPCCoreProperties]: - """ - Read a AASX file and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Add the steps: `Open {} file' and 'Read {} file` - - :param file_path: Given file which should be deserialized - :param state_manager: Manager to log the steps - :param file_info: Additional information about the file for name of the steps - :return: The read object store - """ - logger_names = [ - 'compliance_check', - aasx.__name__, - xml_deserialization.__name__, - json_deserialization.__name__, - ] - for name in logger_names: - logger = logging.getLogger(name) - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - if file_info: - state_manager.add_step('Open {} file'.format(file_info)) - else: - state_manager.add_step('Open file') - try: - # open given file - reader = aasx.AASXReader(file_path) - state_manager.set_step_status_from_log() - except (FileNotFoundError, ValueError) as error: - logger.error(error) - state_manager.set_step_status_from_log() - state_manager.add_step('Read file') - state_manager.set_step_status(Status.NOT_EXECUTED) - return model.DictObjectStore(), aasx.DictSupplementaryFileContainer(), pyecma376_2.OPCCoreProperties() - - try: - # read given file - state_manager.add_step('Read file') - obj_store: model.DictObjectStore[model.Identifiable] = model.DictObjectStore() - files = aasx.DictSupplementaryFileContainer() - reader.read_into(obj_store, files) - new_cp = reader.get_core_properties() - state_manager.set_step_status(Status.SUCCESS) - except (ValueError, KeyError) as error: - logger.error(error) - state_manager.set_step_status(Status.FAILED) - return model.DictObjectStore(), aasx.DictSupplementaryFileContainer(), pyecma376_2.OPCCoreProperties() - finally: - reader.close() - - return obj_store, files, new_cp - - -def check_schema(file_path: str, state_manager: ComplianceToolStateManager) -> None: - """ - Checks a given file against the official json schema and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Opens the file and checks if the data inside is stored in XML or JSON. Then calls the respective compliance tool - schema check - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - # create handler to get logger info - logger_deserialization = logging.getLogger(aasx.__name__) - logger_deserialization.addHandler(state_manager) - logger_deserialization.propagate = False - logger_deserialization.setLevel(logging.INFO) - - state_manager.add_step('Open file') - try: - # open given file - reader = aasx.AASXReader(file_path) - state_manager.set_step_status_from_log() - except ValueError as error: - logger.error(error) - state_manager.set_step_status_from_log() - state_manager.add_step('Read file') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - try: - # read given file (Find XML and JSON parts) - state_manager.add_step('Read file') - core_rels = reader.reader.get_related_parts_by_type() - try: - aasx_origin_part = core_rels[aasx.RELATIONSHIP_TYPE_AASX_ORIGIN][0] - except IndexError as e: - raise ValueError("Not a valid AASX file: aasx-origin Relationship is missing.") from e - state_manager.set_step_status(Status.SUCCESS) - for aas_part in reader.reader.get_related_parts_by_type(aasx_origin_part)[ - aasx.RELATIONSHIP_TYPE_AAS_SPEC]: - content_type = reader.reader.get_content_type(aas_part) - extension = aas_part.split("/")[-1].split(".")[-1] - with reader.reader.open_part(aas_part) as p: - if content_type.split(";")[0] in ( - "text/xml", "application/xml") or content_type == "" and extension == "xml": - logger.debug("Parsing AAS objects from XML stream in OPC part {} ...".format(aas_part)) - compliance_check_xml._check_schema(p, state_manager) - elif content_type.split(";")[0] == "application/json" \ - or content_type == "" and extension == "json": - logger.debug("Parsing AAS objects from JSON stream in OPC part {} ...".format(aas_part)) - compliance_check_json._check_schema(io.TextIOWrapper(p, encoding='utf-8-sig'), state_manager) - else: - raise ValueError("Could not determine part format of AASX part {} (Content Type: {}, extension: {}" - .format(aas_part, content_type, extension)) - except ValueError as error: - logger.error(error) - state_manager.set_step_status(Status.FAILED) - finally: - reader.close() - - -def check_aas_example(file_path: str, state_manager: ComplianceToolStateManager, **kwargs) -> None: - """ - Checks if a file contains all elements of the aas example and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Calls the :meth:`~basyx.aas.compliance_tool.compliance_check_aasx.check_deserialization` and add the steps: - `Check if data is equal to example data` - - :param file_path: Given file which should be checked - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - :param kwargs: Additional arguments to pass to :class:`~basyx.aas.examples.data._helper.AASDataChecker` - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - # create handler to get logger info - logger_example = logging.getLogger(example_aas.__name__) - logger_example.addHandler(state_manager) - logger_example.propagate = False - logger_example.setLevel(logging.INFO) - - obj_store, files, cp_new = check_deserialization(file_path, state_manager) - - if state_manager.status in (Status.FAILED, Status.NOT_EXECUTED): - state_manager.add_step('Check if data is equal to example data') - state_manager.set_step_status(Status.NOT_EXECUTED) - state_manager.add_step('Check if core properties are equal') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - checker = AASDataChecker(raise_immediately=False, **kwargs) - - state_manager.add_step('Check if data is equal to example data') - example_data = create_example_aas_binding() - checker.check_object_store(obj_store, example_data) - state_manager.add_log_records_from_data_checker(checker) - - if state_manager.status in (Status.FAILED, Status.NOT_EXECUTED): - state_manager.add_step('Check if core properties are equal') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - state_manager.add_step('Check if core properties are equal') - # Create OPC/AASX core properties - cp = pyecma376_2.OPCCoreProperties() - cp.created = datetime.datetime(2020, 1, 1, 0, 0, 0) - cp.creator = "Eclipse BaSyx Python Testing Framework" - cp.description = "Test_Description" - cp.lastModifiedBy = "Eclipse BaSyx Python Testing Framework Compliance Tool" - cp.modified = datetime.datetime(2020, 1, 1, 0, 0, 1) - cp.revision = "1.0" - cp.version = "2.0.1" - cp.title = "Test Title" - - checker2 = DataChecker(raise_immediately=False) - try: - assert isinstance(cp_new.created, datetime.datetime) - checker2.check(isinstance(cp_new.created, datetime.datetime), "core property created must be of type datetime", - created=type(cp_new.created)) - duration = cp_new.created - cp.created - checker2.check(duration.microseconds < 20, "created must be {}".format(cp.created), created=cp_new.created) - except AssertionError: - checker2.check(isinstance(cp_new.created, datetime.datetime), "core property created must be of type datetime", - created=type(cp_new.created)) - - checker2.check(cp_new.creator == cp.creator, "creator must be {}".format(cp.creator), creator=cp_new.creator) - checker2.check(cp_new.description == cp.description, "description must be {}".format(cp.description), - description=cp_new.description) - checker2.check(cp_new.lastModifiedBy == cp.lastModifiedBy, "lastModifiedBy must be {}".format(cp.lastModifiedBy), - lastModifiedBy=cp_new.lastModifiedBy) - try: - assert isinstance(cp_new.modified, datetime.datetime) - checker2.check(isinstance(cp_new.modified, datetime.datetime), "modified bust be of type datetime", - modified=type(cp_new.modified)) - duration = cp_new.modified - cp.modified - checker2.check(duration.microseconds < 20, "modified must be {}".format(cp.modified), modified=cp_new.modified) - except AssertionError: - checker2.check(isinstance(cp_new.modified, datetime.datetime), "modified bust be of type datetime", - modified=type(cp_new.modified)) - checker2.check(cp_new.revision == cp.revision, "revision must be {}".format(cp.revision), revision=cp_new.revision) - checker2.check(cp_new.version == cp.version, "version must be {}".format(cp.version), version=cp_new.version) - checker2.check(cp_new.title == cp.title, "title must be {}".format(cp.title), title=cp_new.title) - - # Check if file in file object is the same - list_of_id_shorts = ["ExampleSubmodelCollection", "ExampleFile"] - obj = example_data.get_identifiable("https://acplt.org/Test_Submodel") - for id_short in list_of_id_shorts: - obj = obj.get_referable(id_short) - obj2 = obj_store.get_identifiable("https://acplt.org/Test_Submodel") - for id_short in list_of_id_shorts: - obj2 = obj2.get_referable(id_short) - try: - sha_file = files.get_sha256(obj.value) - except KeyError as error: - state_manager.add_log_records_from_data_checker(checker2) - logger.error(error) - state_manager.set_step_status(Status.FAILED) - return - - checker2.check(sha_file == files.get_sha256(obj2.value), "File of {} must be {}.".format(obj.value, obj2.value), - value=obj2.value) - state_manager.add_log_records_from_data_checker(checker2) - if state_manager.status in (Status.FAILED, Status.NOT_EXECUTED): - state_manager.set_step_status(Status.FAILED) - else: - state_manager.set_step_status(Status.SUCCESS) - - -def check_aasx_files_equivalence(file_path_1: str, file_path_2: str, state_manager: ComplianceToolStateManager, - **kwargs) -> None: - """ - Checks if two aasx files contain the same elements in any order and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - calls the :meth:`~basyx.aas.compliance_tool.compliance_check_aasx.check_deserialization` for each file and add the - steps: `Check if data in files are equal` - - :param file_path_1: Given first file which should be checked - :param file_path_2: Given second file which should be checked - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - :param kwargs: Additional arguments to pass to :class:`~basyx.aas.examples.data._helper.AASDataChecker` - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - obj_store_1, files_1, cp_1 = check_deserialization(file_path_1, state_manager, 'first') - - obj_store_2, files_2, cp_2 = check_deserialization(file_path_2, state_manager, 'second') - - if state_manager.status is Status.FAILED: - state_manager.add_step('Check if data in files are equal') - state_manager.set_step_status(Status.NOT_EXECUTED) - state_manager.add_step('Check if core properties are equal') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - checker = AASDataChecker(raise_immediately=False, **kwargs) - try: - state_manager.add_step('Check if data in files are equal') - checker.check_object_store(obj_store_1, obj_store_2) - except (KeyError, AssertionError) as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - state_manager.add_step('Check if core properties are equal') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - state_manager.add_log_records_from_data_checker(checker) - - if state_manager.status is Status.FAILED: - state_manager.add_step('Check if core properties are equal') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - state_manager.add_step('Check if core properties are equal') - checker2 = DataChecker(raise_immediately=False) - assert (isinstance(cp_1.created, datetime.datetime)) - assert (isinstance(cp_2.created, datetime.datetime)) - duration = cp_1.created - cp_2.created - checker2.check(duration.microseconds < 20, "created must be {}".format(cp_1.created), value=cp_2.created) - checker2.check(cp_1.creator == cp_2.creator, "creator must be {}".format(cp_1.creator), value=cp_2.creator) - checker2.check(cp_1.lastModifiedBy == cp_2.lastModifiedBy, "lastModifiedBy must be {}".format(cp_1.lastModifiedBy), - value=cp_2.lastModifiedBy) - state_manager.add_log_records_from_data_checker(checker2) diff --git a/basyx/aas/compliance_tool/compliance_check_json.py b/basyx/aas/compliance_tool/compliance_check_json.py deleted file mode 100644 index d6b7a1ef2..000000000 --- a/basyx/aas/compliance_tool/compliance_check_json.py +++ /dev/null @@ -1,225 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -""" -Module which offers functions to use in a confirmation tool related to json files - -All functions reports any issues using the given -:class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` by adding new steps and associated -:class:`LogRecords ` -""" -import json -import logging -from typing import Optional, IO - -from .. import model -from ..adapter.json import json_deserialization, JSON_SCHEMA_FILE -from ..examples.data import example_aas, create_example -from ..examples.data._helper import AASDataChecker -from .state_manager import ComplianceToolStateManager, Status - - -def check_schema(file_path: str, state_manager: ComplianceToolStateManager) -> None: - """ - Checks a given file against the official json schema and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Add the steps: `Open file`, `Read file and check if it is conform to the json syntax` and `Validate file against - official json schema` - - :param file_path: Path to the file which should be checked - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - state_manager.add_step('Open file') - try: - # open given file - file_to_be_checked = open(file_path, 'r', encoding='utf-8-sig') - except IOError as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - state_manager.add_step('Read file and check if it is conform to the json syntax') - state_manager.set_step_status(Status.NOT_EXECUTED) - state_manager.add_step('Validate file against official json schema') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - return _check_schema(file_to_be_checked, state_manager) - - -def _check_schema(file_to_be_checked: IO[str], state_manager: ComplianceToolStateManager): - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - try: - with file_to_be_checked: - state_manager.set_step_status(Status.SUCCESS) - # read given file and check if it is conform to the json syntax - state_manager.add_step('Read file and check if it is conform to the json syntax') - json_to_be_checked = json.load(file_to_be_checked) - state_manager.set_step_status(Status.SUCCESS) - except json.decoder.JSONDecodeError as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - state_manager.add_step('Validate file against official json schema') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - # load json schema - with open(JSON_SCHEMA_FILE, 'r', encoding='utf-8-sig') as json_file: - aas_json_schema = json.load(json_file) - state_manager.add_step('Validate file against official json schema') - - # validate given file against schema - try: - import jsonschema # type: ignore - except ImportError as error: - state_manager.set_step_status(Status.NOT_EXECUTED) - logger.error("Python package 'jsonschema' is required for validating the JSON file.", error) - return - - try: - jsonschema.validate(instance=json_to_be_checked, schema=aas_json_schema) - except jsonschema.exceptions.ValidationError as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - return - - state_manager.set_step_status(Status.SUCCESS) - return - - -def check_deserialization(file_path: str, state_manager: ComplianceToolStateManager, - file_info: Optional[str] = None) -> model.DictObjectStore: - """ - Deserializes a JSON AAS file and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Add the steps: `Open {} file` and `Read {} file` and `check if it is conform to the json schema` - - :param file_path: Given file which should be deserialized - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - :param file_info: Additional information about the file for name of the steps - :return: The deserialized :class:`~basyx.aas.model.provider.DictObjectStore` - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - # create handler to get logger info - logger_deserialization = logging.getLogger(json_deserialization.__name__) - logger_deserialization.addHandler(state_manager) - logger_deserialization.propagate = False - logger_deserialization.setLevel(logging.INFO) - - if file_info: - state_manager.add_step('Open {} file'.format(file_info)) - else: - state_manager.add_step('Open file') - try: - # open given file - file_to_be_checked = open(file_path, 'r', encoding='utf-8-sig') - except IOError as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - if file_info: - state_manager.add_step('Read file {} and check if it is deserializable'.format(file_info)) - else: - state_manager.add_step('Read file and check if it is deserializable') - state_manager.set_step_status(Status.NOT_EXECUTED) - return model.DictObjectStore() - - with file_to_be_checked: - state_manager.set_step_status(Status.SUCCESS) - # read given file and check if it is conform to the official json schema - if file_info: - state_manager.add_step('Read file {} and check if it is deserializable'.format(file_info)) - else: - state_manager.add_step('Read file and check if it is deserializable') - obj_store = json_deserialization.read_aas_json_file(file_to_be_checked, failsafe=True) - - state_manager.set_step_status_from_log() - - return obj_store - - -def check_aas_example(file_path: str, state_manager: ComplianceToolStateManager, **kwargs) -> None: - """ - Checks if a file contains all elements of the aas example and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Calls the :meth:`~basyx.aas.compliance_tool.compliance_check_json.check_deserialization` and add the steps: - `Check if data is equal to example data` - - :param file_path: Given file which should be checked - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - :param kwargs: Additional arguments to pass to :class:`~basyx.aas.examples.data._helper.AASDataChecker` - """ - # create handler to get logger info - logger_example = logging.getLogger(example_aas.__name__) - logger_example.addHandler(state_manager) - logger_example.propagate = False - logger_example.setLevel(logging.INFO) - - obj_store = check_deserialization(file_path, state_manager) - - if state_manager.status in (Status.FAILED, Status.NOT_EXECUTED): - state_manager.add_step('Check if data is equal to example data') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - checker = AASDataChecker(raise_immediately=False, **kwargs) - - state_manager.add_step('Check if data is equal to example data') - checker.check_object_store(obj_store, create_example()) - - state_manager.add_log_records_from_data_checker(checker) - - -def check_json_files_equivalence(file_path_1: str, file_path_2: str, state_manager: ComplianceToolStateManager, - **kwargs) -> None: - """ - Checks if two json files contain the same elements in any order and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Calls the :meth:`~basyx.aas.compliance_tool.compliance_check_json.check_deserialization` for ech file and add the - steps: `Check if data in files are equal` - - :param file_path_1: Given first file which should be checked - :param file_path_2: Given second file which should be checked - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - :param kwargs: Additional arguments to pass to :class:`~basyx.aas.examples.data._helper.AASDataChecker` - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - obj_store_1 = check_deserialization(file_path_1, state_manager, 'first') - - obj_store_2 = check_deserialization(file_path_2, state_manager, 'second') - - if state_manager.status is Status.FAILED: - state_manager.add_step('Check if data in files are equal') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - checker = AASDataChecker(raise_immediately=False, **kwargs) - try: - state_manager.add_step('Check if data in files are equal') - checker.check_object_store(obj_store_1, obj_store_2) - except (KeyError, AssertionError) as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - return - - state_manager.add_log_records_from_data_checker(checker) diff --git a/basyx/aas/compliance_tool/compliance_check_xml.py b/basyx/aas/compliance_tool/compliance_check_xml.py deleted file mode 100644 index 9791011af..000000000 --- a/basyx/aas/compliance_tool/compliance_check_xml.py +++ /dev/null @@ -1,225 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -""" -Module which offers functions to use in a confirmation tool related to xml files - -All functions reports any issues using the given -:class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` by adding new steps and associated -:class:`LogRecords ` -""" - -from lxml import etree # type: ignore -import logging -from typing import Optional - -from .. import model -from ..adapter.xml import xml_deserialization, XML_SCHEMA_FILE -from ..examples.data import example_aas, create_example -from ..examples.data._helper import AASDataChecker -from .state_manager import ComplianceToolStateManager, Status - - -def check_schema(file_path: str, state_manager: ComplianceToolStateManager) -> None: - """ - Checks a given file against the official xml schema and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Add the steps: `Open file`, `Read file`, `Check if it is conform to the xml syntax` and `Validate file against - official xml schema` - - :param file_path: Path to the file which should be checked - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - state_manager.add_step('Open file') - try: - # open given file - file_to_be_checked = open(file_path, 'rb') - state_manager.set_step_status(Status.SUCCESS) - except IOError as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - state_manager.add_step('Read file and check if it is conform to the xml syntax') - state_manager.set_step_status(Status.NOT_EXECUTED) - state_manager.add_step('Validate file against official xml schema') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - return _check_schema(file_to_be_checked, state_manager) - - -def _check_schema(file_to_be_checked, state_manager): - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - state_manager.add_step('Read file and check if it is conform to the xml syntax') - try: - # read given file and check if it is conform to the xml syntax - parser = etree.XMLParser(remove_blank_text=True, remove_comments=True) - etree.parse(file_to_be_checked, parser) - state_manager.set_step_status(Status.SUCCESS) - except etree.XMLSyntaxError as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - state_manager.add_step('Validate file against official xml schema') - state_manager.set_step_status(Status.NOT_EXECUTED) - file_to_be_checked.close() - return - except Exception: - file_to_be_checked.close() - raise - - # load aas xml schema - aas_xml_schema = etree.XMLSchema(file=XML_SCHEMA_FILE) - parser = etree.XMLParser(schema=aas_xml_schema) - - state_manager.add_step('Validate file against official xml schema') - # validate given file against schema - try: - file_to_be_checked.seek(0) # Reset reading file offset (cursor) to the beginning of the file - with file_to_be_checked: - etree.parse(file_to_be_checked, parser=parser) - except etree.ParseError as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - return - - state_manager.set_step_status(Status.SUCCESS) - return - - -def check_deserialization(file_path: str, state_manager: ComplianceToolStateManager, - file_info: Optional[str] = None) -> model.DictObjectStore: - """ - Deserializes a XML AAS file and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Add the steps: `Open {} file` and `Read {} file` and `Check if it is conform to the xml schema` - - :param file_path: Given file which should be deserialized - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - :param file_info: Additional information about the file for name of the steps - :return: The deserialized object store - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - # create handler to get logger info - logger_deserialization = logging.getLogger(xml_deserialization.__name__) - logger_deserialization.addHandler(state_manager) - logger_deserialization.propagate = False - logger_deserialization.setLevel(logging.INFO) - - if file_info: - state_manager.add_step('Open {} file'.format(file_info)) - else: - state_manager.add_step('Open file') - try: - # open given file - file_to_be_checked = open(file_path, 'rb') - except IOError as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - if file_info: - state_manager.add_step('Read file {} and check if it is deserializable'.format(file_info)) - else: - state_manager.add_step('Read file and check if it is deserializable') - state_manager.set_step_status(Status.NOT_EXECUTED) - return model.DictObjectStore() - - with file_to_be_checked: - state_manager.set_step_status(Status.SUCCESS) - # read given file and check if it is conform to the official xml schema - if file_info: - state_manager.add_step('Read file {} and check if it is deserializable'.format(file_info)) - else: - state_manager.add_step('Read file and check if it is deserializable') - obj_store = xml_deserialization.read_aas_xml_file(file_to_be_checked, failsafe=True) - - state_manager.set_step_status_from_log() - - return obj_store - - -def check_aas_example(file_path: str, state_manager: ComplianceToolStateManager, **kwargs) -> None: - """ - Checks if a file contains all elements of the aas example and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Calls the :meth:`~basyx.aas.compliance_tool.compliance_check_xml.check_deserialization` and add the steps: - `Check if data is equal to example data` - - :param file_path: Given file which should be checked - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - :param kwargs: Additional arguments to pass to :class:`~basyx.aas.examples.data._helper.AASDataChecker` - """ - # create handler to get logger info - logger_example = logging.getLogger(example_aas.__name__) - logger_example.addHandler(state_manager) - logger_example.propagate = False - logger_example.setLevel(logging.INFO) - - obj_store = check_deserialization(file_path, state_manager) - - if state_manager.status in (Status.FAILED, Status.NOT_EXECUTED): - state_manager.add_step('Check if data is equal to example data') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - checker = AASDataChecker(raise_immediately=False, **kwargs) - - state_manager.add_step('Check if data is equal to example data') - checker.check_object_store(obj_store, create_example()) - - state_manager.add_log_records_from_data_checker(checker) - - -def check_xml_files_equivalence(file_path_1: str, file_path_2: str, state_manager: ComplianceToolStateManager, - **kwargs) -> None: - """ - Checks if two xml files contain the same elements in any order and reports any issues using the given - :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` - - Calls the :meth:`~basyx.aas.compliance_tool.compliance_check_xml.check_deserialization` for each file and add the - steps: `Check if data in files are equal` - - :param file_path_1: Given first file which should be checked - :param file_path_2: Given second file which should be checked - :param state_manager: :class:`~basyx.aas.compliance_tool.state_manager.ComplianceToolStateManager` to log the steps - :param kwargs: Additional arguments to pass to :class:`~basyx.aas.examples.data._helper.AASDataChecker` - """ - logger = logging.getLogger('compliance_check') - logger.addHandler(state_manager) - logger.propagate = False - logger.setLevel(logging.INFO) - - obj_store_1 = check_deserialization(file_path_1, state_manager, 'first') - - obj_store_2 = check_deserialization(file_path_2, state_manager, 'second') - - if state_manager.status is Status.FAILED: - state_manager.add_step('Check if data in files are equal') - state_manager.set_step_status(Status.NOT_EXECUTED) - return - - checker = AASDataChecker(raise_immediately=False, **kwargs) - try: - state_manager.add_step('Check if data in files are equal') - checker.check_object_store(obj_store_1, obj_store_2) - except (KeyError, AssertionError) as error: - state_manager.set_step_status(Status.FAILED) - logger.error(error) - return - - state_manager.add_log_records_from_data_checker(checker) diff --git a/basyx/aas/compliance_tool/state_manager.py b/basyx/aas/compliance_tool/state_manager.py deleted file mode 100644 index 3116fe150..000000000 --- a/basyx/aas/compliance_tool/state_manager.py +++ /dev/null @@ -1,217 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -""" -This module defines a :class:`~.ComplianceToolStateManager` to store :class:`LogRecords ` -for single steps in a compliance check of the compliance tool -""" -import logging -import enum -import pprint -from typing import List, Dict -from basyx.aas.examples.data._helper import DataChecker - - -@enum.unique -class Status(enum.IntEnum): - """ - Possible Status States: - - :cvar SUCCESS: - :cvar SUCCESS_WITH_WARNINGS: - :cvar FAILED: - :cvar NOT_EXECUTED: - """ - SUCCESS = 0 - SUCCESS_WITH_WARNINGS = 1 - FAILED = 2 - NOT_EXECUTED = 3 - - -class Step: - """ - A step represents a single test stage in a test protocol of a :class:`~.ComplianceToolStateManager` - - :ivar name: Name of the step - :ivar status: Status of the step from type Status - :ivar log_list: List of :class:`LogRecords ` which belong to this step - """ - def __init__(self, name: str, status: Status, log_list: List[logging.LogRecord]): - self.name = name - self.status = status - self.log_list = log_list - - -class ComplianceToolStateManager(logging.Handler): - """ - A ComplianceToolStateManager is used to create a report of a compliance check, divided into single - :class:`Steps <.Step>` with status and log. The manager provides methods to: - - - Add a new step - - Set the step status - - Set the step status from log - - Add logs to a step by hand - - Add logs to a step from a data checker - - Be used as a :class:`logging.Handler` which adds logs to the current step - - Example of a ComplianceTest for a schema check: - - * Step 1: `Open file` - * Step 2: `Read file and check if it is conform to the json syntax` - * Step 3: `Validate file against official json schema` - - :ivar steps: List of :class:`Steps <.Step>` - """ - def __init__(self): - """ - steps: List of steps. Each step consist of a step name, a step status and LogRecords belong to to this step. - The step name have to be unique in the list. - """ - super().__init__() - self.steps: List[Step] = [] - self.setLevel(logging.INFO) - - @property - def status(self) -> Status: - """ - Determine the status of all steps in following way: - 1. If there is at least one step with status = NOT_EXECUTED than NOT_EXECUTED will be returned - 2. If there is at least one step with status = FAILED than FAILED will be returned - 3. Else status SUCCESS will be returned - - :return: status of the manager - """ - status: Status = Status.SUCCESS - for step in self.steps: - if status < step.status: - status = step.status - return status - - def add_step(self, name: str) -> None: - """ - Adding a new :class:`~.Step` to the manager with a given name, status = NOT_EXECUTED and an empty list of - records - - :param name: Name of the :class:`~.Step` - """ - self.steps.append(Step(name, Status.NOT_EXECUTED, [])) - - def add_log_record(self, record: logging.LogRecord) -> None: - """ - Adds a :class:`~logging.LogRecord` to the log list of the actual :class:`~.Step` - - :param record: :class:`~logging.LogRecord` which should be added to the current :class:`~.Step` - """ - self.steps[-1].log_list.append(record) - - def set_step_status(self, status: Status) -> None: - """ - Sets the status of the current step - - :param status: status which should be set - """ - self.steps[-1].status = status - - def set_step_status_from_log(self) -> None: - """ - Sets the status of the current step based on the log entries - """ - self.steps[-1].status = Status.FAILED if len(self.steps[-1].log_list) > 0 else Status.SUCCESS - - def add_log_records_from_data_checker(self, data_checker: DataChecker) -> None: - """ - Sets the status of the current :class:`~.Step` and convert the checks to - :class:`LogRecords ` and adds these to the current :class:`~.Step` - - :class:`~.Step`: FAILED if the :class:`~basyx.aas.examples.data._helper.DataChecker` consist at least one failed - check otherwise SUCCESS - - :param data_checker: :class:`~basyx.aas.examples.data._helper.DataChecker` which checks should be added to the - current :class:`~.Step` - """ - self.steps[-1].status = Status.SUCCESS if not any(True for _ in data_checker.failed_checks) else Status.FAILED - for check in data_checker.checks: - self.steps[-1].log_list.append(logging.LogRecord(name=__name__, - level=logging.INFO if check.result else logging.ERROR, - pathname='', - lineno=0, - msg="{} ({})".format( - check.expectation, - ", ".join("{}={}".format( - k, pprint.pformat( - v, depth=2, width=2 ** 14, compact=True)) - for k, v in check.data.items())), - args=(), - exc_info=None)) - - def get_error_logs_from_step(self, index: int) -> List[logging.LogRecord]: - """ - Returns a list of :class:`LogRecords ` of a step where the log level - is :data:`~logging.ERROR` or :data:`~logging.WARNING` - - :param index: Step index in the Step list of the manager - :return: List of LogRecords with log level :data:`~logging.ERROR` or :data:`~logging.WARNING` - """ - return [x for x in self.steps[index].log_list if x.levelno >= logging.WARNING] - - def format_step(self, index: int, verbose_level: int = 0) -> str: - """ - Creates a string for the step containing the status, the step name and - the :class:`LogRecords ` if wanted - - :param index: Step index in the step list of the manager - :param verbose_level: Decision which kind of LogRecords should be in the string - - - 0: No LogRecords - - 1: Only LogRecords with log level >= :data:`~logging.WARNING` - - 2: All LogRecords - - :return: formatted string of the step - """ - STEP_STATUS: Dict[Status, str] = { - Status.SUCCESS: '{:14}'.format('SUCCESS:'), - Status.SUCCESS_WITH_WARNINGS: '{:14}'.format('WARNINGS:'), - Status.FAILED: '{:14}'.format('FAILED:'), - Status.NOT_EXECUTED: '{:14}'.format('NOT_EXECUTED:'), - } - if self.steps[index].status not in STEP_STATUS: - raise NotImplementedError - string = STEP_STATUS[self.steps[index].status] - - string += self.steps[index].name - if verbose_level > 0: - for log in self.steps[index].log_list: - if log.levelno < logging.WARNING: - if verbose_level == 1: - continue - string += '\n'+' - {:6} {}'.format(log.levelname + ':', log.getMessage()) - return string - - def format_state_manager(self, verbose_level: int = 0) -> str: - """ - Creates a report with all executed steps: Containing the status, the step name and - the :class:`LogRecords ` if wanted - - :param verbose_level: Decision which kind of LogRecords should be in the string - - - 0: No LogRecords - - 1: Only LogRecords with log level >= :data:`~logging.WARNING` - - 2: All LogRecords - - :return: formatted report - """ - string = 'Compliance Test executed:\n' - string += "\n".join(self.format_step(x, verbose_level) for x in range(len(self.steps))) - return string - - def emit(self, record: logging.LogRecord): - """ - :class:`~logging.Handler` function for adding :class:`LogRecords ` from a ``logger`` - to the current :class:`~.Step` - - :param record: :class:`~logging.LogRecord` which should be added - """ - self.steps[-1].log_list.append(record) diff --git a/setup.py b/setup.py index bc5fe4b65..c1b8b1fa4 100755 --- a/setup.py +++ b/setup.py @@ -25,8 +25,6 @@ zip_safe=False, package_data={ "basyx": ["py.typed"], - "basyx.aas.adapter.json": ["aasJSONSchema.json"], - "basyx.aas.adapter.xml": ["AAS.xsd"], "basyx.aas.examples.data": ["TestFile.pdf"], }, classifiers=[ diff --git a/test/compliance_tool/__init__.py b/test/compliance_tool/__init__.py deleted file mode 100644 index a0c327cb0..000000000 --- a/test/compliance_tool/__init__.py +++ /dev/null @@ -1,28 +0,0 @@ -import os -import zipfile - -AASX_FILES = ("test_demo_full_example_json_aasx", - "test_demo_full_example_xml_aasx", - "test_demo_full_example_xml_wrong_attribute_aasx", - "test_empty_aasx") - - -def _zip_directory(directory_path, zip_file_path): - """Zip a directory recursively.""" - with zipfile.ZipFile(zip_file_path, 'w', zipfile.ZIP_DEFLATED) as zipf: - for root, _, files in os.walk(directory_path): - for file in files: - file_path = os.path.join(root, file) - arcname = os.path.relpath(file_path, directory_path) - zipf.write(file_path, arcname=arcname) - - -def generate_aasx_files(): - """Zip dirs and create test AASX files.""" - script_dir = os.path.dirname(__file__) - for i in AASX_FILES: - _zip_directory(os.path.join(script_dir, "files", i), - os.path.join(script_dir, "files", i.rstrip("_aasx") + ".aasx")) - - -generate_aasx_files() diff --git a/test/compliance_tool/files/test_demo_full_example.json b/test/compliance_tool/files/test_demo_full_example.json deleted file mode 100644 index 31fde424d..000000000 --- a/test/compliance_tool/files/test_demo_full_example.json +++ /dev/null @@ -1,3210 +0,0 @@ -{ - "assetAdministrationShells": [ - { - "idShort": "TestAssetAdministrationShell", - "description": [ - { - "language": "en-US", - "text": "An Example Asset Administration Shell for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Verwaltungsschale f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_AssetAdministrationShell" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/Test_AssetAdministrationShell" - }, - "derivedFrom": { - "type": "ModelReference", - "keys": [ - { - "type": "AssetAdministrationShell", - "value": "https://acplt.org/TestAssetAdministrationShell2" - } - ] - }, - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/TestAsset/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ], - "assetType": "http://acplt.org/TestAssetType/", - "defaultThumbnail": { - "path": "file:///path/to/thumbnail.png", - "contentType": "image/png" - } - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel" - } - ], - "referredSemanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - } - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial" - } - ] - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Submodels/Assets/TestAsset/Identification" - } - ], - "referredSemanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/AssetIdentification" - } - ] - } - } - ], - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - { - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell_Mandatory", - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/Test_Asset_Mandatory/" - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel2_Mandatory" - } - ] - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel_Mandatory" - } - ] - } - ] - }, - { - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell2_Mandatory", - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/TestAsset2_Mandatory/" - } - }, - { - "idShort": "TestAssetAdministrationShell", - "description": [ - { - "language": "en-US", - "text": "An Example Asset Administration Shell for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Verwaltungsschale f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell_Missing", - "administration": { - "version": "9", - "revision": "0" - }, - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/Test_Asset_Missing/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ], - "defaultThumbnail": { - "path": "file:///TestFile.pdf", - "contentType": "application/pdf" - } - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel_Missing" - } - ] - } - ] - } - ], - "submodels": [ - { - "idShort": "Identification", - "description": [ - { - "language": "en-US", - "text": "An example asset identification submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Identifikations-Submodel f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "http://acplt.org/Submodels/Assets/TestAsset/Identification", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/TestAsset/Identification" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/TestAsset/Identification" - }, - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/AssetIdentification" - } - ] - }, - "submodelElements": [ - { - "extensions": [ - { - "value": "ExampleExtensionValue", - "refersTo": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "AssetAdministrationShell", - "value": "http://acplt.org/RefersTo/ExampleRefersTo" - } - ] - } - ], - "valueType": "xs:string", - "name": "ExampleExtension" - } - ], - "idShort": "ManufacturerName", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "0173-1#02-AAO677#002" - } - ] - }, - "qualifiers": [ - { - "value": "50", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:int", - "type": "http://acplt.org/Qualifier/ExampleQualifier2", - "kind": "TemplateQualifier" - }, - { - "value": "100", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:int", - "type": "http://acplt.org/Qualifier/ExampleQualifier", - "kind": "ConceptQualifier" - } - ], - "value": "ACPLT", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "idShort": "InstanceId", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "qualifiers": [ - { - "value": "2023-04-07T16:59:54.870123", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:dateTime", - "type": "http://acplt.org/Qualifier/ExampleQualifier3", - "kind": "ValueQualifier" - } - ], - "value": "978-8234-234-342", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - ] - }, - { - "idShort": "BillOfMaterial", - "description": [ - { - "language": "en-US", - "text": "An example bill of material submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-BillofMaterial-Submodel f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial", - "administration": { - "version": "9", - "templateId": "http://acplt.org/AdministrativeInformationTemplates/TestAsset/BillOfMaterial" - }, - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/BillOfMaterial" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleEntity", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Entity", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "statements": [ - { - "idShort": "ExampleProperty2", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - }, - "valueType": "xs:string" - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - } - ], - "entityType": "SelfManagedEntity", - "globalAssetId": "http://acplt.org/TestAsset/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ] - }, - { - "idShort": "ExampleEntity2", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Entity", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "entityType": "CoManagedEntity" - } - ] - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_Submodel" - } - ] - } - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "ConceptDescription", - "value": "https://acplt.org/Test_ConceptDescription" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty2" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty2" - } - ] - }, - "annotations": [ - { - "idShort": "ExampleAnnotatedProperty", - "category": "PARAMETER", - "modelType": "Property", - "value": "exampleValue", - "valueType": "xs:string" - }, - { - "idShort": "ExampleAnnotatedRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:integer", - "min": "1", - "max": "5" - } - ] - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - } - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelCollection", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "value": [ - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "contentType": "application/pdf", - "value": "AQIDBAU=" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "/TestFile.pdf", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFileURI", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Details of the Asset Administration Shell \u2014 An example for an external file reference" - }, - { - "language": "de", - "text": "Details of the Asset Administration Shell \u2013 Ein Beispiel f\u00fcr eine extern referenzierte Datei" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/Details-of-the-Asset-Administration-Shell-Part1.pdf?__blob=publicationFile&v=5", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MultiLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ], - "referredSemanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/Referred" - } - ] - } - }, - "value": [ - { - "language": "en-US", - "text": "Example value of a MultiLanguageProperty element" - }, - { - "language": "de", - "text": "Beispielswert f\u00fcr ein MulitLanguageProperty-Element" - } - ], - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleMultiLanguageValueId" - } - ] - } - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "valueType": "xs:int", - "min": "0", - "max": "100" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "value": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "Property", - "valueTypeListElement": "xs:string", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "value": [ - { - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "supplementalSemanticIds": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/SupplementalId1" - } - ] - }, - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/SupplementalId2" - } - ] - } - ], - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - { - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "supplementalSemanticIds": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty2/SupplementalId" - } - ] - } - ], - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - ] - } - ] - } - ] - }, - { - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Mandatory", - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "modelType": "RelationshipElement", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "modelType": "AnnotatedRelationshipElement", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleOperation", - "modelType": "Operation" - }, - { - "idShort": "ExampleCapability", - "modelType": "Capability" - }, - { - "idShort": "ExampleBasicEventElement", - "modelType": "BasicEventElement", - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "input", - "state": "off" - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "SubmodelElementCollection", - "modelType": "SubmodelElementList", - "value": [ - { - "modelType": "SubmodelElementCollection", - "value": [ - { - "idShort": "ExampleBlob", - "modelType": "Blob", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFile", - "modelType": "File", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "PARAMETER", - "modelType": "MultiLanguageProperty" - }, - { - "idShort": "ExampleProperty", - "category": "PARAMETER", - "modelType": "Property", - "valueType": "xs:string" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:int" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "modelType": "ReferenceElement" - } - ] - }, - { - "modelType": "SubmodelElementCollection" - } - ] - }, - { - "idShort": "ExampleSubmodelList2", - "typeValueListElement": "Capability", - "modelType": "SubmodelElementList" - } - ] - }, - { - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel2_Mandatory" - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Missing", - "administration": { - "version": "9", - "revision": "0" - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "annotations": [ - { - "idShort": "ExampleAnnotatedRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:integer", - "min": "1", - "max": "5" - }, - { - "idShort": "ExampleAnnotatedProperty", - "category": "PARAMETER", - "modelType": "Property", - "value": "exampleValue", - "valueType": "xs:string" - } - ] - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - } - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelCollection", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "value": [ - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "contentType": "application/pdf", - "value": "AQIDBAU=" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "/TestFile.pdf", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MulitLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ] - }, - "value": [ - { - "language": "en-US", - "text": "Example value of a MultiLanguageProperty element" - }, - { - "language": "de", - "text": "Beispielswert f\u00fcr ein MulitLanguageProperty-Element" - } - ] - }, - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "qualifiers": [ - { - "valueType": "xs:string", - "type": "http://acplt.org/Qualifier/ExampleQualifier" - } - ], - "value": "exampleValue", - "valueType": "xs:string" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "valueType": "xs:int", - "min": "0", - "max": "100" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "value": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - } - ] - } - ] - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Template", - "administration": { - "version": "9", - "revision": "0" - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "kind": "Template", - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleRelationshipElement" - } - ] - }, - "kind": "Template", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "kind": "Template", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "kind": "Template", - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - }, - "kind": "Template" - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "kind": "Template", - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "SubmodelElementCollection", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "kind": "Template", - "value": [ - { - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "kind": "Template", - "value": [ - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MulitLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ] - }, - "kind": "Template" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "kind": "Template", - "valueType": "xs:int", - "max": "100" - }, - { - "idShort": "ExampleRange2", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "kind": "Template", - "valueType": "xs:int", - "min": "0" - }, - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "kind": "Template", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "kind": "Template", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "kind": "Template" - } - ] - }, - { - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "kind": "Template" - } - ] - }, - { - "idShort": "ExampleSubmodelList2", - "typeValueListElement": "Capability", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "kind": "Template" - } - ] - } - ], - "conceptDescriptions": [ - { - "idShort": "TestConceptDescription", - "description": [ - { - "language": "en-US", - "text": "An example concept description for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-ConceptDescription f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_ConceptDescription" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - "isCaseOf": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/DataSpecifications/ConceptDescriptions/TestConceptDescription" - } - ] - } - ] - }, - { - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription_Mandatory" - }, - { - "idShort": "TestConceptDescription", - "description": [ - { - "language": "en-US", - "text": "An example concept description for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-ConceptDescription f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription_Missing", - "administration": { - "version": "9", - "revision": "0" - } - } - ] -} \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example.xml b/test/compliance_tool/files/test_demo_full_example.xml deleted file mode 100644 index 39fae5599..000000000 --- a/test/compliance_tool/files/test_demo_full_example.xml +++ /dev/null @@ -1,2991 +0,0 @@ - - - - - TestAssetAdministrationShell - - - en-US - An Example Asset Administration Shell for the test application - - - de - Ein Beispiel-Verwaltungsschale für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_AssetAdministrationShell - - - - http://acplt.org/AdministrativeInformationTemplates/Test_AssetAdministrationShell - - https://acplt.org/Test_AssetAdministrationShell - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - - ModelReference - - - AssetAdministrationShell - https://acplt.org/TestAssetAdministrationShell2 - - - - - Instance - http://acplt.org/TestAsset/ - - - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - http://acplt.org/TestAssetType/ - - file:///path/to/thumbnail.png - image/png - - - - - ModelReference - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/AssetIdentification - - - - - - Submodel - http://acplt.org/Submodels/Assets/TestAsset/Identification - - - - - ModelReference - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - Submodel - https://acplt.org/Test_Submodel - - - - - ModelReference - - - Submodel - http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial - - - - - - - https://acplt.org/Test_AssetAdministrationShell_Mandatory - - Instance - http://acplt.org/Test_Asset_Mandatory/ - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel2_Mandatory - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Mandatory - - - - - - - https://acplt.org/Test_AssetAdministrationShell2_Mandatory - - Instance - http://acplt.org/TestAsset2_Mandatory/ - - - - TestAssetAdministrationShell - - - en-US - An Example Asset Administration Shell for the test application - - - de - Ein Beispiel-Verwaltungsschale für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_AssetAdministrationShell_Missing - - Instance - http://acplt.org/Test_Asset_Missing/ - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - file:///TestFile.pdf - application/pdf - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Missing - - - - - - - - - Identification - - - en-US - An example asset identification submodel for the test application - - - de - Ein Beispiel-Identifikations-Submodel für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/TestAsset/Identification - - - - http://acplt.org/AdministrativeInformationTemplates/TestAsset/Identification - - http://acplt.org/Submodels/Assets/TestAsset/Identification - Instance - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/AssetIdentification - - - - - - - - ExampleExtension - xs:string - ExampleExtensionValue - - - ModelReference - - - AssetAdministrationShell - http://acplt.org/RefersTo/ExampleRefersTo - - - - - - - PARAMETER - ManufacturerName - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - 0173-1#02-AAO677#002 - - - - - - ConceptQualifier - http://acplt.org/Qualifier/ExampleQualifier - xs:int - 100 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - TemplateQualifier - http://acplt.org/Qualifier/ExampleQualifier2 - xs:int - 50 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - xs:string - ACPLT - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - PARAMETER - InstanceId - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - - - ValueQualifier - http://acplt.org/Qualifier/ExampleQualifier3 - xs:dateTime - 2023-04-07T16:59:54.870123 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - xs:string - 978-8234-234-342 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - BillOfMaterial - - - en-US - An example bill of material submodel for the test application - - - de - Ein Beispiel-BillofMaterial-Submodel für eine Test-Anwendung - - - - 9 - http://acplt.org/AdministrativeInformationTemplates/TestAsset/BillOfMaterial - - http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial - Instance - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/BillOfMaterial - - - - - - PARAMETER - ExampleEntity - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - - - CONSTANT - ExampleProperty2 - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - SelfManagedEntity - http://acplt.org/TestAsset/ - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - - PARAMETER - ExampleEntity2 - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - CoManagedEntity - - - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_Submodel - - - - - https://acplt.org/Test_Submodel - Instance - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ModelReference - - - ConceptDescription - https://acplt.org/Test_ConceptDescription - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty2 - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty2 - - - - - - PARAMETER - ExampleAnnotatedProperty - xs:string - exampleValue - - - PARAMETER - ExampleAnnotatedRange - xs:integer - 1 - 5 - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelCollection - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - AQIDBAU= - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - /TestFile.pdf - application/pdf - - - CONSTANT - ExampleFileURI - - - en-US - Details of the Asset Administration Shell — An example for an external file reference - - - de - Details of the Asset Administration Shell – Ein Beispiel für eine extern referenzierte Datei - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/Details-of-the-Asset-Administration-Shell-Part1.pdf?__blob=publicationFile&v=5 - application/pdf - - - PARAMETER - ExampleSubmodelList - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - Property - xs:string - - - CONSTANT - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/SupplementalId1 - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/SupplementalId2 - - - - - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - CONSTANT - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty2/SupplementalId - - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MultiLanguageProperty Element - - - - ExternalReference - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/Referred - - - - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - en-US - Example value of a MultiLanguageProperty element - - - de - Beispielswert für ein MulitLanguageProperty-Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleMultiLanguageValueId - - - - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - 100 - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - - - - - https://acplt.org/Test_Submodel_Mandatory - Instance - - - ExampleRelationshipElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - ExampleAnnotatedRelationshipElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - ExampleOperation - - - ExampleCapability - - - ExampleBasicEventElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - input - off - - - ExampleSubmodelList - SubmodelElementCollection - - - - - ExampleBlob - - application/pdf - - - ExampleFile - application/pdf - - - PARAMETER - ExampleMultiLanguageProperty - - - PARAMETER - ExampleProperty - xs:string - - - PARAMETER - ExampleRange - xs:int - - - PARAMETER - ExampleReferenceElement - - - - - - - - - ExampleSubmodelList2 - Capability - - - - - https://acplt.org/Test_Submodel2_Mandatory - Instance - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_Submodel_Missing - Instance - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRange - xs:integer - 1 - 5 - - - PARAMETER - ExampleAnnotatedProperty - xs:string - exampleValue - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelCollection - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - AQIDBAU= - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - /TestFile.pdf - application/pdf - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MulitLanguageProperty Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - en-US - Example value of a MultiLanguageProperty element - - - de - Beispielswert für ein MulitLanguageProperty-Element - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - http://acplt.org/Qualifier/ExampleQualifier - xs:string - - - xs:string - exampleValue - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - 100 - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - - - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_Submodel_Template - Template - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelList - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - SubmodelElementCollection - - - PARAMETER - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MulitLanguageProperty Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 100 - - - PARAMETER - ExampleRange2 - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - application/pdf - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - - - - PARAMETER - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - - - PARAMETER - ExampleSubmodelList2 - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - Capability - - - - - - - TestConceptDescription - - - en-US - An example concept description for the test application - - - de - Ein Beispiel-ConceptDescription für eine Test-Anwendung - - - - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_ConceptDescription - - - - http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription - - https://acplt.org/Test_ConceptDescription - - - ExternalReference - - - GlobalReference - http://acplt.org/DataSpecifications/ConceptDescriptions/TestConceptDescription - - - - - - - https://acplt.org/Test_ConceptDescription_Mandatory - - - TestConceptDescription - - - en-US - An example concept description for the test application - - - de - Ein Beispiel-ConceptDescription für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_ConceptDescription_Missing - - - diff --git a/test/compliance_tool/files/test_demo_full_example_json_aasx/TestFile.pdf b/test/compliance_tool/files/test_demo_full_example_json_aasx/TestFile.pdf deleted file mode 100644 index 2bccbec5f60ea7a8f51e5fd41eda019cf27a08d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8178 zcma)>Wl&sQv+qOj0fGjX!JV1G-6as*B{+lY;1)a(Jdoh-7Ti6!ySoGk?rt~FIqzHd zRK2(A++FKK_gcNX|JAGahh0BfWl3pP2pboGc4DS?0l)zS1077P0fK@6kUZ4h!o?EE z#R>e^0{}@|*}6bsK#;Vpu?tiZYU*GH1qcfRoLyj0V>^Jyk~3g)%DqOpa;AopgIx_p zRt;RuImyAvp;gH_!2zjPMv+wsn*+~8Vw`WmFgD-5*}+Er4S?F4{VTy=>!0Gh{~-bb zgm7?k{aX?{kc*F#h!_ z5Qu4SDc*3QlYZ%4o-x)IRHTS{>*5ppMv~P3!=PB+PN$J5I(ou0Nm$} zQz8op5ZJ5`61}=LbI6_eT$Ck3LVz%|xMP7kCY+ID&Jdi4`AP2?6T#u_^YSjB|81NR zSX)<<)ZZJ<(T|>IGIL)6UU0J`EjH8K2boeV!&0deaUDSrVe@VOYd~PDal7N2i1UC@ zgy+KTOaUx}x4hJ8mHyN#?*raG3ka;CyWh93IsyZ*HapvCtdQn`G^Be#)Mg;>|=unY>BC>Q*hQUu9QP}9`g^{mev(imj zaEt4+TNV4K;l8g}{--g#cL9F8?4sK`XvlXj3NVsNng!I?fTzsj7v|ru{b!jvFFbLt z?qbRmG#81fr-`qxPThi71O6g!1g(54J>dT2p0kTS^US<`(W`xMv?1OKlpL{gm7(ZFQ42LErOxrz8Z$=gV z1`&`}r1_B-2f)MyUcV9^QHZp<(KE<93$O2IU=W{q#UJ1U!sbJ#~M_|I89f!PO zvqb;1CrN7tr}DIYHI4EhV?s}Xj#Tl}Ft+xTmWe%4aIZ8l$L7{BKo!0QaAS5TsLR}Gh6*eX%j|}$u#ILL zwiLV`zFTo|xLT+_mrMT6wuox~fp?PS7u{1YihH!_E(0|^s%Fv;b$_q^OxW+o7w~lr z=H3y%Y+zPwl;n9}mL8hPZL~DJg<(p#Cl7}cWYxrs_Caw~U;sC-IiaK*Os=jCzO?V^ zP|Ws!CJLF@CfY2evN73*hNYetrPRaL*9LiF^N(aiX-@0hIX^P)NO9HP5GqPES0g=o z5ZgB0+3_AOkr2!-_W54o6WsQ*s8vf;j0a!?m>aGumlColei+oO3Y`XH=1|O2xXoX& z)CX&~Djz7DI9&&!ST^ePkIE0{*9g<~89%ad>UGvxRR9$3h2!`rzeq76tUi}`jiBFu z$3$9>qqL_!f-c65ynFEi<>guTZ;W=K%<@jfEOBoMiVtn9oF8wer~A8Rak*Zp3&`N{m`?Y*x>{+&!)7BfSjz;a-=o5~mC(FVfkY?TEnvB~1Kw8Jz z3cB~)kzGhvMC2T|%c|7*5?}tn{m*C3 zFw~6NbY+mGsn`1g`Pcc|6mV5IUAKhr+l$E3n%hPW&4RDx%RH|0Nq$16nr-GLUP<0U zjsaPAK1B}Swx2hsw6Lmsc0(k+S%IMBSm|K-txZBhbnj*!zaS9h$p~$^+t`RwJ}f+6 z(Dyf)&*$9I+nj^zj|y8xy1g$LtiX;i9#h2%(byXw7TV!wHKT$H$m8=8N&Xu5d*|Bq z_c`GX3!Hk`u+dWH-W1;^!Acm_^`FJq4)bV8NzL8TG;aZ|B+>0cH%s)nSZoF%oJ5oB zoLY%P1Y-6RDJq*vg1c<`T+x;+D*k(EPpcNDlfut!vZgfU-@36GS+o>;Kh`;NXThXG ztL1||s@udB3NuBKBd9m5(BkMkfg10c$?b(FxF=eL`3tzbSfL<;+M+#x%gSsFF4O&4 z`?^-VcKJs2rDJWC_^b7+DSNe8sK6{B*%r%D1#Gp{B;IWib3Bxi`!%x3z9GHoXy86> z+&E7|qrxDc*_DHj;aIk?d^&#d)*M$)#H)sW+aV7KM+9AM33zrak^)P~Qi6VHYLNs^ zUI+N#zn;&?NBI+;e{WYs(^G};l2%i64sg4<^?!|8Hea(57%6D~EY+plmDtU{`XbsQ zd^>w{SdH84&a8Movf(+mrSF?g{cNGRk=SYVI#tDN8kSr9<7VONDzjB$U0N8%pKnb#lQZeJelh5%L4Xh_{84So z{`7L}5f7iXV)7&Co#57zATjSB^lf{Pr@(^3-mTL~ZW1f;JU8a|rA#KPmbStxone*h zg}^xQfQDFktYRL2JiaU92eK8rj1+k7Y`lJ(KF-qKy@IvBxftGJ(3^yu8aHr-Z&a$3J&HF7H<{wD|WZ zg&Eb($DlQy_;dY=%t{(*G1)ji*=^JeEXg5+)ihChwYu6=_A}N+y`xW#>U?Ok7}AIF zi_?)9BK27*BBrv|IVjpwh60HI<}tPg8-9P|ng!V(7?g*6ImrkU6-St*z3>a=g{=H4 z2Zu43mToKj>2-7$9-amica(6%aGJUB;-ALfaEgn8OM04Z!`XV)qJi6rt3QZ)8n65}p9aj3y zdDHvOFguHl3lB1)D~iH3G=LXVC1qPHCDSC_V(e@xmWpbLCMB|i@>xRLT!vC~uYjE${pUi4X^wY{L0C9$4-E0SIc+I77o zgQv>m50>7$@GUZ)Ee|}|*>TNn_v!X#Vu}=MpJdE-mKgYyF&$c~OoA_(47m3lCUrlYVS?YlV-da?bb* z8s}Z&gH@F$pQeC5sX2f--fq5*wlB+{PcpzVE)8CjYYsjYiL_zq&ekln@eQ*zNy zVXMF+b6PIBNAo$=KSeqji{mr-)|zBKEBB;*{RQIDW!Xe4fxIIFcVS2ODE6$1F!EEz zp;MF)BsZ;hu%HPH=;h*zr2Yo|ntO3yb5ap2Q27;8kJ=_?4{n|#Ca;Id@6!KNLrpy> zIjw#k{uC_yd2_#IS^V1|ar*aqkx3PXK$RcQ5fSe+Z1Od8kofHTx6*!8P~Z(=p|5a< z5q+Kal}Zv~$((iEiIL+7- z)IG}jn)eIalSd>`qiCvCDZ5}33;M!0Zw6~qW0}1nzm3Z z5sFy1A-(S$1qT_p- zwOD%*7|NNTR2fUqLm{u-OGxGie=UJJ$_eAS8N+e=;!2$&!&ryo!CZoe>OjPNt7fgl zX4G__&8+1*mwj+JSy=BpTE1JiRAIUOLf1rGW_Mar<)%nRlHZH( z$}G>Pcql7;_UIN~NsLwlsZ6YSqU3&`tYvvW+WBV@$o&rw+11d6t!$z3y*Xd7E14L5 z)l7S4{q?TJffkHbwOuU3F=Wa}P<^bSm145KeR)}GHH9AMgH5A~%f$AxFLJu#VG-$f zJg~I%Pa84v{EVppu{)Wnx zl{W5+VB?9RSN_OS)dzQP>$;ibva)PGi#AWf zAtyZ}JuU!Oaf}uupHlk;{Q3KzfYGNegTD#MejSx`Ws_KlyL&p+nG{ z8F|BZXOp@Lq*t5z7mN4XKdGWTlU$GV6D6qqzJh-i**0&05?K_Pb_%%``z$MTCmq8} zKgXx72}k~(ST$_3O|IB5WS2GL>)uJs2#Hu{o3e*en~iO5&NcJL zAb!*)u(ujnsE&@1w0Y@ef`T*!I`Yn8mh(jedGCj{c2M#3A#~Rz&kYze@*d2Ly(Hc7 zQf1+ARh8t3Ok6KjI91Q2ZRx%si%_uCy@vIPSSTl|BPzLDb(zm`k&%om2^ zti{4H=VKkBgyM6OBb+5d?^AP2IbuoxZc?~Apk(lQ-14k%qF$H545Pc&i}<186Tf&6 zX4xY3x}g$}-I432fy!R@azU%BfR5Hq4Ia6NzJvnHeX!{_FY8#mVK>q0n0v?ovsLS= zO%d>u72{_hR*pHld5(rLR9)tn5SL0No>$Sm$X%HXYQV|c{(pX6(Htt>+C8*l4C{R`5$_BU#r_|dHsyay>74IO)?sLYZT|-{_ThP*)T3TW{N)I#AaqTHt8x%bCj*g?#JK{5ntB z8xb(%-HZ0iREG3t+^CefC%0rZcO61RHU2SIFn_O< zpL7l@3iI{7+iAQJinYO~OgBObQ60o4C4n$xYS3ME0{_gVHFb@W1i=tr0<#jV9h0Q) z#uh9XmwoR!vT?e27HnVM2dB;1-;i_{-B`7&dN&&1S!fpBr*c%l z;du2X3frI^ccs9pC_3tqrOl-BZC0x{+a2on1t#S?r6E|2mi>)q23!z-fsxKDHM_by zj6T)jYs7qMOx^U~5?-6e=L7JXJzI?l7b8KAiI~`h4K@zpWrcns*E<-8S6JD*#~eDg z8V-NbC6Ur9Iphi__Tuz>Db&36r#8=a~5Q@PKYi>lq(Cmk#v%tb%!Xo;A-bYoHE{^}fliP@P0t z+pl?p!f&*cg9@~f!)(YXX<-g!v)K2$W8oU&zt(0)7f?>BQ$d!URTPVdX&-S6(p$dDH2xi zN`?m)IwXFg89KA_bFpD{jW^$G{TAc&$X4+M=R*OB0N2UAw&lhj99rJhJ99R6v{6q! zr;CuqoxaXrLi3<<-^zS%OdqD~#ULwy9cMy6TuohLB0NDfA~DFN=_KKkU zjMq|Ps&M<`OgXgkBW85@fQLzalY8h>7Ld( zqSQn!mLwnKF2BFmBVrsTKCge|L}VVH$Qw#|*JN}qceLD$qJQ^8tN>;_XC&+5m~nkPho$t9|a zq56o`$6$L@vhSdnX#1)*^hkA37gKx$MQ3qlfr#F8rn08Xo>rx!v-Xrjq=q2H__1)u zC3btIRe3oF@l#{_S{%FCSqL#*dBkSARifNHaWdNWeh9tiAZC>K@2}gup(L)ip%u6E z$>#H)0?0|1%h)r?7ozg8s@QSA4HoL#zk7kcKF}QxCK_;6^^;&pr!KzVj zJTO8{C3}@xI# zBV7V(%?2za@d?8o4d0YzQvrv~Rr#8@;c=P@w?YAQww#QG38<0EeiBy<88C4mnz5e1 zD8l~CEC8&b`q(OqUIDNrTU^I>AgzYeP%`2fA1f1<<6p7xU#n8Ob&!n&vJV5I_v+-! z4n0II3H}Th0cu>vT*}ra!H*EcJ)`7EgM0s}nfnhO$K(=4sxTwC- zQn4!haRQwnXKnDQ=v4YLMCgea(*(+JnvwM0jP&t5@uYF8r>*dk_?w=iTZe(N7Pkb! zq1#|-d>Jrzl0<>>Q(+qV6z$aa_KpD^99uywXJbV7R`iu6jH`Fi%_MR23s%-zxqwH%3D3h&luYxAHI%D zY@Gb128tsb>Sr1d=KS6M7LF=@?vW)1FPPR&GXN2QI4Ovp)PKP=wq!j|Drwp+A=-8F zCR;sg)cZFZ^wjFpmvV#}QNzY^@bq1oRKQ@hijQG2Krx;tC%xTwH)->_Q@NtAexb)d z;hPJZ1krNAY@AesBVuhsPdTM@oyw5IuUzU|e|DLmSB&S$11*KYfd?*}@Tu%zJ`3|~ z)9N*u2#XNimh0>>B}{mM_Zk&cCGDP)-Q{mF!IRL!w?BR?Fl)yr0rcx+Dqd9D6?3F(a96o}?SE*nuYe z>ZkEvqK1A^AySv}&D`183=J1@Wi$oAb;e|)^N209G6ZZ-gB>w6L2R>asV;eKjSL~cG0LZL6v?e~Z3 zi{lBN2}oq=dM3EC-`Ku=ou~QX(;?Ann7&M_iwPIyImc9|kyURCtQhjOUd4IP>lL0> zR@3J{xf%rWKfszY%)!jn^e@a~a5OVlhidMcat8ig|E-Ays0oER|1AyVV1sZ%xcJz)xmelRxc{y7zZ3%H zt=ynMb})nwWCnEuNkUDmjO`hLHjc(Fmd;RPpxeJvaI^hQ@=plkKgjZ5sFCY`bVS|L z5eft;nOLj2*a1L_K%RdXBFxzZ$oYQ(BL^q%|2GVUsulTPEv?NlNa~Wm)I`G1PGE{x$X@h26BK1R(k9E`Rb`{F(wg^t(8#+qKz?j@d zs-h`MG9gkA{^M)snP3{Y6d6J|WPkYPgQaF=e7V|;JyD(m>ugvWyHQ#5$K5+;=z(IU z-7VfgQX+-t;Ib10q(q?qy<8nOS zEYz9Gdt2tzCtpCC!0Lj{$K|O$a;J*M_9{^Ib@`C=g03a=(9t6k^ zg#6u8b#QP2Lco9DSN$j4+yVGs-^o9YBv4Nf43Xyed+Xd>Tv8kmK54Fhh7imL5tD$3 zNlWqa@CpO}_mIC;{teT?{~90Q{|=~4jg0Qbdpd_ude9@$pU_29LR5A|!psp(=%l|e v0=YS`Y9MkQ#zx--#@@WK&qTQX&#pMT7{gpVV1N6-!^^`5prw^kk_P-Ay3<)0 diff --git a/test/compliance_tool/files/test_demo_full_example_json_aasx/[Content_Types].xml b/test/compliance_tool/files/test_demo_full_example_json_aasx/[Content_Types].xml deleted file mode 100644 index 4d0bdc9aa..000000000 --- a/test/compliance_tool/files/test_demo_full_example_json_aasx/[Content_Types].xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_json_aasx/_rels/.rels b/test/compliance_tool/files/test_demo_full_example_json_aasx/_rels/.rels deleted file mode 100644 index 9758543f3..000000000 --- a/test/compliance_tool/files/test_demo_full_example_json_aasx/_rels/.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/_rels/aasx-origin.rels b/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/_rels/aasx-origin.rels deleted file mode 100644 index 3ec0a479e..000000000 --- a/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/_rels/aasx-origin.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/_rels/data.json.rels b/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/_rels/data.json.rels deleted file mode 100644 index 43350edd0..000000000 --- a/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/_rels/data.json.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/aasx-origin b/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/aasx-origin deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/data.json b/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/data.json deleted file mode 100644 index 7172735e6..000000000 --- a/test/compliance_tool/files/test_demo_full_example_json_aasx/aasx/data.json +++ /dev/null @@ -1,3218 +0,0 @@ -{ - "assetAdministrationShells": [ - { - "idShort": "TestAssetAdministrationShell", - "description": [ - { - "language": "en-US", - "text": "An Example Asset Administration Shell for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Verwaltungsschale f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_AssetAdministrationShell" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/Test_AssetAdministrationShell" - }, - "derivedFrom": { - "type": "ModelReference", - "keys": [ - { - "type": "AssetAdministrationShell", - "value": "https://acplt.org/TestAssetAdministrationShell2" - } - ] - }, - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/TestAsset/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ], - "defaultThumbnail": { - "path": "file:///path/to/thumbnail.png", - "contentType": "image/png" - } - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel" - } - ], - "referredSemanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - } - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial" - } - ] - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Submodels/Assets/TestAsset/Identification" - } - ], - "referredSemanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/AssetIdentification" - } - ] - } - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel_Template" - } - ] - } - ], - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - { - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell_Mandatory", - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/Test_Asset_Mandatory/" - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel2_Mandatory" - } - ] - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel_Mandatory" - } - ] - } - ] - }, - { - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell2_Mandatory", - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/TestAsset2_Mandatory/" - } - }, - { - "idShort": "TestAssetAdministrationShell", - "description": [ - { - "language": "en-US", - "text": "An Example Asset Administration Shell for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Verwaltungsschale f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell_Missing", - "administration": { - "version": "9", - "revision": "0" - }, - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/Test_Asset_Missing/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ], - "defaultThumbnail": { - "path": "file:///TestFile.pdf", - "contentType": "application/pdf" - } - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel_Missing" - } - ] - } - ] - } - ], - "submodels": [ - { - "idShort": "Identification", - "description": [ - { - "language": "en-US", - "text": "An example asset identification submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Identifikations-Submodel f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "http://acplt.org/Submodels/Assets/TestAsset/Identification", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/TestAsset/Identification" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/TestAsset/Identification" - }, - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/AssetIdentification" - } - ] - }, - "submodelElements": [ - { - "extensions": [ - { - "value": "ExampleExtensionValue", - "refersTo": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "AssetAdministrationShell", - "value": "http://acplt.org/RefersTo/ExampleRefersTo" - } - ] - } - ], - "valueType": "xs:string", - "name": "ExampleExtension" - } - ], - "idShort": "ManufacturerName", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "0173-1#02-AAO677#002" - } - ] - }, - "qualifiers": [ - { - "value": "50", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:int", - "type": "http://acplt.org/Qualifier/ExampleQualifier2", - "kind": "TemplateQualifier" - }, - { - "value": "100", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:int", - "type": "http://acplt.org/Qualifier/ExampleQualifier", - "kind": "ConceptQualifier" - } - ], - "value": "ACPLT", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "idShort": "InstanceId", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "qualifiers": [ - { - "value": "2023-04-07T16:59:54.870123", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:dateTime", - "type": "http://acplt.org/Qualifier/ExampleQualifier3", - "kind": "ValueQualifier" - } - ], - "value": "978-8234-234-342", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - ] - }, - { - "idShort": "BillOfMaterial", - "description": [ - { - "language": "en-US", - "text": "An example bill of material submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-BillofMaterial-Submodel f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial", - "administration": { - "version": "9", - "templateId": "http://acplt.org/AdministrativeInformationTemplates/TestAsset/BillOfMaterial" - }, - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/BillOfMaterial" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleEntity", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Entity", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "statements": [ - { - "idShort": "ExampleProperty2", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - }, - "valueType": "xs:string" - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - } - ], - "entityType": "SelfManagedEntity", - "globalAssetId": "http://acplt.org/TestAsset/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ] - }, - { - "idShort": "ExampleEntity2", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Entity", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "entityType": "CoManagedEntity" - } - ] - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_Submodel" - } - ] - } - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "ConceptDescription", - "value": "https://acplt.org/Test_ConceptDescription" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty2" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty2" - } - ] - }, - "annotations": [ - { - "idShort": "ExampleAnnotatedProperty", - "category": "PARAMETER", - "modelType": "Property", - "value": "exampleValue", - "valueType": "xs:string" - }, - { - "idShort": "ExampleAnnotatedRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:integer", - "min": "1", - "max": "5" - } - ] - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - } - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelCollection", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "value": [ - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "contentType": "application/pdf", - "value": "AQIDBAU=" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "/TestFile.pdf", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFileURI", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Details of the Asset Administration Shell \u2014 An example for an external file reference" - }, - { - "language": "de", - "text": "Details of the Asset Administration Shell \u2013 Ein Beispiel f\u00fcr eine extern referenzierte Datei" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/Details-of-the-Asset-Administration-Shell-Part1.pdf?__blob=publicationFile&v=5", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MultiLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ], - "referredSemanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/Referred" - } - ] - } - }, - "value": [ - { - "language": "en-US", - "text": "Example value of a MultiLanguageProperty element" - }, - { - "language": "de", - "text": "Beispielswert f\u00fcr ein MulitLanguageProperty-Element" - } - ], - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleMultiLanguageValueId" - } - ] - } - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "valueType": "xs:int", - "min": "0", - "max": "100" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "value": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "Property", - "valueTypeListElement": "xs:string", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "value": [ - { - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "supplementalSemanticIds": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/SupplementalId1" - } - ] - }, - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/SupplementalId2" - } - ] - } - ], - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - { - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "supplementalSemanticIds": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty2/SupplementalId" - } - ] - } - ], - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - ] - } - ] - } - ] - }, - { - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Mandatory", - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "modelType": "RelationshipElement", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "modelType": "AnnotatedRelationshipElement", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleOperation", - "modelType": "Operation" - }, - { - "idShort": "ExampleCapability", - "modelType": "Capability" - }, - { - "idShort": "ExampleBasicEventElement", - "modelType": "BasicEventElement", - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "input", - "state": "off" - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "SubmodelElementCollection", - "modelType": "SubmodelElementList", - "value": [ - { - "modelType": "SubmodelElementCollection", - "value": [ - { - "idShort": "ExampleBlob", - "modelType": "Blob", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFile", - "modelType": "File", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "PARAMETER", - "modelType": "MultiLanguageProperty" - }, - { - "idShort": "ExampleProperty", - "category": "PARAMETER", - "modelType": "Property", - "valueType": "xs:string" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:int" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "modelType": "ReferenceElement" - } - ] - }, - { - "modelType": "SubmodelElementCollection" - } - ] - }, - { - "idShort": "ExampleSubmodelList2", - "typeValueListElement": "Capability", - "modelType": "SubmodelElementList" - } - ] - }, - { - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel2_Mandatory" - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Missing", - "administration": { - "version": "9", - "revision": "0" - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "annotations": [ - { - "idShort": "ExampleAnnotatedRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:integer", - "min": "1", - "max": "5" - }, - { - "idShort": "ExampleAnnotatedProperty", - "category": "PARAMETER", - "modelType": "Property", - "value": "exampleValue", - "valueType": "xs:string" - } - ] - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - } - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelCollection", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "value": [ - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "contentType": "application/pdf", - "value": "AQIDBAU=" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "/TestFile.pdf", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MulitLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ] - }, - "value": [ - { - "language": "en-US", - "text": "Example value of a MultiLanguageProperty element" - }, - { - "language": "de", - "text": "Beispielswert f\u00fcr ein MulitLanguageProperty-Element" - } - ] - }, - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "qualifiers": [ - { - "valueType": "xs:string", - "type": "http://acplt.org/Qualifier/ExampleQualifier" - } - ], - "value": "exampleValue", - "valueType": "xs:string" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "valueType": "xs:int", - "min": "0", - "max": "100" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "value": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - } - ] - } - ] - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Template", - "administration": { - "version": "9", - "revision": "0" - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "kind": "Template", - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleRelationshipElement" - } - ] - }, - "kind": "Template", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "kind": "Template", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "kind": "Template", - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - }, - "kind": "Template" - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "kind": "Template", - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "SubmodelElementCollection", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "kind": "Template", - "value": [ - { - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "kind": "Template", - "value": [ - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MulitLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ] - }, - "kind": "Template" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "kind": "Template", - "valueType": "xs:int", - "max": "100" - }, - { - "idShort": "ExampleRange2", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "kind": "Template", - "valueType": "xs:int", - "min": "0" - }, - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "kind": "Template", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "kind": "Template", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "kind": "Template" - } - ] - }, - { - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "kind": "Template" - } - ] - }, - { - "idShort": "ExampleSubmodelList2", - "typeValueListElement": "Capability", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "kind": "Template" - } - ] - } - ], - "conceptDescriptions": [ - { - "idShort": "TestConceptDescription", - "description": [ - { - "language": "en-US", - "text": "An example concept description for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-ConceptDescription f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_ConceptDescription" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - "isCaseOf": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/DataSpecifications/ConceptDescriptions/TestConceptDescription" - } - ] - } - ] - }, - { - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription_Mandatory" - }, - { - "idShort": "TestConceptDescription", - "description": [ - { - "language": "en-US", - "text": "An example concept description for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-ConceptDescription f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription_Missing", - "administration": { - "version": "9", - "revision": "0" - } - } - ] -} \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_json_aasx/docProps/core.xml b/test/compliance_tool/files/test_demo_full_example_json_aasx/docProps/core.xml deleted file mode 100644 index 5f0e65331..000000000 --- a/test/compliance_tool/files/test_demo_full_example_json_aasx/docProps/core.xml +++ /dev/null @@ -1 +0,0 @@ -2020-01-01T00:00:00Eclipse BaSyx Python Testing FrameworkTest_DescriptionEclipse BaSyx Python Testing Framework Compliance Tool2020-01-01T00:00:011.0Test Title2.0.1 \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_wrong_attribute.json b/test/compliance_tool/files/test_demo_full_example_wrong_attribute.json deleted file mode 100644 index 8f816697d..000000000 --- a/test/compliance_tool/files/test_demo_full_example_wrong_attribute.json +++ /dev/null @@ -1,3210 +0,0 @@ -{ - "assetAdministrationShells": [ - { - "idShort": "TestAssetAdministrationShell123", - "description": [ - { - "language": "en-US", - "text": "An Example Asset Administration Shell for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Verwaltungsschale f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_AssetAdministrationShell" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/Test_AssetAdministrationShell" - }, - "derivedFrom": { - "type": "ModelReference", - "keys": [ - { - "type": "AssetAdministrationShell", - "value": "https://acplt.org/TestAssetAdministrationShell2" - } - ] - }, - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/TestAsset/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ], - "assetType": "http://acplt.org/TestAssetType/", - "defaultThumbnail": { - "path": "file:///path/to/thumbnail.png", - "contentType": "image/png" - } - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel" - } - ], - "referredSemanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - } - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial" - } - ] - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Submodels/Assets/TestAsset/Identification" - } - ], - "referredSemanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/AssetIdentification" - } - ] - } - } - ], - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - { - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell_Mandatory", - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/Test_Asset_Mandatory/" - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel2_Mandatory" - } - ] - }, - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel_Mandatory" - } - ] - } - ] - }, - { - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell2_Mandatory", - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/TestAsset2_Mandatory/" - } - }, - { - "idShort": "TestAssetAdministrationShell", - "description": [ - { - "language": "en-US", - "text": "An Example Asset Administration Shell for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Verwaltungsschale f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "AssetAdministrationShell", - "id": "https://acplt.org/Test_AssetAdministrationShell_Missing", - "administration": { - "version": "9", - "revision": "0" - }, - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/Test_Asset_Missing/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ], - "defaultThumbnail": { - "path": "file:///TestFile.pdf", - "contentType": "application/pdf" - } - }, - "submodels": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "https://acplt.org/Test_Submodel_Missing" - } - ] - } - ] - } - ], - "submodels": [ - { - "idShort": "Identification", - "description": [ - { - "language": "en-US", - "text": "An example asset identification submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Identifikations-Submodel f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "http://acplt.org/Submodels/Assets/TestAsset/Identification", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/TestAsset/Identification" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/TestAsset/Identification" - }, - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/AssetIdentification" - } - ] - }, - "submodelElements": [ - { - "extensions": [ - { - "value": "ExampleExtensionValue", - "refersTo": [ - { - "type": "ModelReference", - "keys": [ - { - "type": "AssetAdministrationShell", - "value": "http://acplt.org/RefersTo/ExampleRefersTo" - } - ] - } - ], - "valueType": "xs:string", - "name": "ExampleExtension" - } - ], - "idShort": "ManufacturerName", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "0173-1#02-AAO677#002" - } - ] - }, - "qualifiers": [ - { - "value": "50", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:int", - "type": "http://acplt.org/Qualifier/ExampleQualifier2", - "kind": "TemplateQualifier" - }, - { - "value": "100", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:int", - "type": "http://acplt.org/Qualifier/ExampleQualifier", - "kind": "ConceptQualifier" - } - ], - "value": "ACPLT", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "idShort": "InstanceId", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "qualifiers": [ - { - "value": "2023-04-07T16:59:54.870123", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:dateTime", - "type": "http://acplt.org/Qualifier/ExampleQualifier3", - "kind": "ValueQualifier" - } - ], - "value": "978-8234-234-342", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - ] - }, - { - "idShort": "BillOfMaterial", - "description": [ - { - "language": "en-US", - "text": "An example bill of material submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-BillofMaterial-Submodel f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial", - "administration": { - "version": "9", - "templateId": "http://acplt.org/AdministrativeInformationTemplates/TestAsset/BillOfMaterial" - }, - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/SubmodelTemplates/BillOfMaterial" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleEntity", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Entity", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "statements": [ - { - "idShort": "ExampleProperty2", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - }, - "valueType": "xs:string" - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - } - ], - "entityType": "SelfManagedEntity", - "globalAssetId": "http://acplt.org/TestAsset/", - "specificAssetIds": [ - { - "name": "TestKey", - "value": "TestValue", - "externalSubjectId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SpecificAssetId/" - } - ] - } - } - ] - }, - { - "idShort": "ExampleEntity2", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation." - }, - { - "language": "de", - "text": "Bezeichnung f\u00fcr eine nat\u00fcrliche oder juristische Person, die f\u00fcr die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist" - } - ], - "modelType": "Entity", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber" - } - ] - }, - "entityType": "CoManagedEntity" - } - ] - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_Submodel" - } - ] - } - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ModelReference", - "keys": [ - { - "type": "ConceptDescription", - "value": "https://acplt.org/Test_ConceptDescription" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty2" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty2" - } - ] - }, - "annotations": [ - { - "idShort": "ExampleAnnotatedProperty", - "category": "PARAMETER", - "modelType": "Property", - "value": "exampleValue", - "valueType": "xs:string" - }, - { - "idShort": "ExampleAnnotatedRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:integer", - "min": "1", - "max": "5" - } - ] - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - } - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelCollection", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "value": [ - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "contentType": "application/pdf", - "value": "AQIDBAU=" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "/TestFile.pdf", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFileURI", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Details of the Asset Administration Shell \u2014 An example for an external file reference" - }, - { - "language": "de", - "text": "Details of the Asset Administration Shell \u2013 Ein Beispiel f\u00fcr eine extern referenzierte Datei" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/Details-of-the-Asset-Administration-Shell-Part1.pdf?__blob=publicationFile&v=5", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MultiLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ], - "referredSemanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/Referred" - } - ] - } - }, - "value": [ - { - "language": "en-US", - "text": "Example value of a MultiLanguageProperty element" - }, - { - "language": "de", - "text": "Beispielswert f\u00fcr ein MulitLanguageProperty-Element" - } - ], - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleMultiLanguageValueId" - } - ] - } - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "valueType": "xs:int", - "min": "0", - "max": "100" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "value": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "Property", - "valueTypeListElement": "xs:string", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "value": [ - { - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "supplementalSemanticIds": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/SupplementalId1" - } - ] - }, - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty/SupplementalId2" - } - ] - } - ], - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - { - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "supplementalSemanticIds": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty2/SupplementalId" - } - ] - } - ], - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - ] - } - ] - } - ] - }, - { - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Mandatory", - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "modelType": "RelationshipElement", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "modelType": "AnnotatedRelationshipElement", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleOperation", - "modelType": "Operation" - }, - { - "idShort": "ExampleCapability", - "modelType": "Capability" - }, - { - "idShort": "ExampleBasicEventElement", - "modelType": "BasicEventElement", - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "input", - "state": "off" - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "SubmodelElementCollection", - "modelType": "SubmodelElementList", - "value": [ - { - "modelType": "SubmodelElementCollection", - "value": [ - { - "idShort": "ExampleBlob", - "modelType": "Blob", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFile", - "modelType": "File", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "PARAMETER", - "modelType": "MultiLanguageProperty" - }, - { - "idShort": "ExampleProperty", - "category": "PARAMETER", - "modelType": "Property", - "valueType": "xs:string" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:int" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "modelType": "ReferenceElement" - } - ] - }, - { - "modelType": "SubmodelElementCollection" - } - ] - }, - { - "idShort": "ExampleSubmodelList2", - "typeValueListElement": "Capability", - "modelType": "SubmodelElementList" - } - ] - }, - { - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel2_Mandatory" - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Missing", - "administration": { - "version": "9", - "revision": "0" - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "annotations": [ - { - "idShort": "ExampleAnnotatedRange", - "category": "PARAMETER", - "modelType": "Range", - "valueType": "xs:integer", - "min": "1", - "max": "5" - }, - { - "idShort": "ExampleAnnotatedProperty", - "category": "PARAMETER", - "modelType": "Property", - "value": "exampleValue", - "valueType": "xs:string" - } - ] - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "displayName": [ - { - "language": "en-US", - "text": "ExampleProperty" - }, - { - "language": "de", - "text": "BeispielProperty" - } - ], - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - }, - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - } - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelCollection", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "value": [ - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "contentType": "application/pdf", - "value": "AQIDBAU=" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "value": "/TestFile.pdf", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MulitLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ] - }, - "value": [ - { - "language": "en-US", - "text": "Example value of a MultiLanguageProperty element" - }, - { - "language": "de", - "text": "Beispielswert f\u00fcr ein MulitLanguageProperty-Element" - } - ] - }, - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "qualifiers": [ - { - "valueType": "xs:string", - "type": "http://acplt.org/Qualifier/ExampleQualifier" - } - ], - "value": "exampleValue", - "valueType": "xs:string" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "valueType": "xs:int", - "min": "0", - "max": "100" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "value": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - } - ] - } - ] - }, - { - "idShort": "TestSubmodel", - "description": [ - { - "language": "en-US", - "text": "An example submodel for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-Teilmodell f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "Submodel", - "id": "https://acplt.org/Test_Submodel_Template", - "administration": { - "version": "9", - "revision": "0" - }, - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelTemplates/ExampleSubmodel" - } - ] - }, - "kind": "Template", - "submodelElements": [ - { - "idShort": "ExampleRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example RelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel RelationshipElement Element" - } - ], - "modelType": "RelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleRelationshipElement" - } - ] - }, - "kind": "Template", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleAnnotatedRelationshipElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example AnnotatedRelationshipElement object" - }, - { - "language": "de", - "text": "Beispiel AnnotatedRelationshipElement Element" - } - ], - "modelType": "AnnotatedRelationshipElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement" - } - ] - }, - "kind": "Template", - "first": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "second": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - } - }, - { - "idShort": "ExampleOperation", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Operation object" - }, - { - "language": "de", - "text": "Beispiel Operation Element" - } - ], - "modelType": "Operation", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Operations/ExampleOperation" - } - ] - }, - "kind": "Template", - "inputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ], - "outputVariables": [ - { - "value": { - "idShort": "ExamplePropertyOutput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyOutput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ], - "inoutputVariables": [ - { - "value": { - "idShort": "ExamplePropertyInOutput", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExamplePropertyInOutput" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - } - } - ] - }, - { - "idShort": "ExampleCapability", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Capability object" - }, - { - "language": "de", - "text": "Beispiel Capability Element" - } - ], - "modelType": "Capability", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Capabilities/ExampleCapability" - } - ] - }, - "kind": "Template" - }, - { - "idShort": "ExampleBasicEventElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example BasicEventElement object" - }, - { - "language": "de", - "text": "Beispiel BasicEventElement Element" - } - ], - "modelType": "BasicEventElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Events/ExampleBasicEventElement" - } - ] - }, - "kind": "Template", - "observed": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/Test_Submodel" - }, - { - "type": "Property", - "value": "ExampleProperty" - } - ] - }, - "direction": "output", - "state": "on", - "messageTopic": "ExampleTopic", - "messageBroker": { - "type": "ModelReference", - "keys": [ - { - "type": "Submodel", - "value": "http://acplt.org/ExampleMessageBroker" - } - ] - }, - "lastUpdate": "2022-11-12T23:50:23.123456+00:00", - "minInterval": "PT0.000001S", - "maxInterval": "P1Y2M3DT4H5M6.123456S" - }, - { - "idShort": "ExampleSubmodelList", - "typeValueListElement": "SubmodelElementCollection", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "kind": "Template", - "value": [ - { - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "kind": "Template", - "value": [ - { - "idShort": "ExampleProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example Property object" - }, - { - "language": "de", - "text": "Beispiel Property Element" - } - ], - "modelType": "Property", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Properties/ExampleProperty" - } - ] - }, - "kind": "Template", - "valueType": "xs:string" - }, - { - "idShort": "ExampleMultiLanguageProperty", - "category": "CONSTANT", - "description": [ - { - "language": "en-US", - "text": "Example MultiLanguageProperty object" - }, - { - "language": "de", - "text": "Beispiel MulitLanguageProperty Element" - } - ], - "modelType": "MultiLanguageProperty", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty" - } - ] - }, - "kind": "Template" - }, - { - "idShort": "ExampleRange", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "kind": "Template", - "valueType": "xs:int", - "max": "100" - }, - { - "idShort": "ExampleRange2", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Range object" - }, - { - "language": "de", - "text": "Beispiel Range Element" - } - ], - "modelType": "Range", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Ranges/ExampleRange" - } - ] - }, - "kind": "Template", - "valueType": "xs:int", - "min": "0" - }, - { - "idShort": "ExampleBlob", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Blob object" - }, - { - "language": "de", - "text": "Beispiel Blob Element" - } - ], - "modelType": "Blob", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Blobs/ExampleBlob" - } - ] - }, - "kind": "Template", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleFile", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example File object" - }, - { - "language": "de", - "text": "Beispiel File Element" - } - ], - "modelType": "File", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Files/ExampleFile" - } - ] - }, - "kind": "Template", - "contentType": "application/pdf" - }, - { - "idShort": "ExampleReferenceElement", - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example Reference Element object" - }, - { - "language": "de", - "text": "Beispiel Reference Element Element" - } - ], - "modelType": "ReferenceElement", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ReferenceElements/ExampleReferenceElement" - } - ] - }, - "kind": "Template" - } - ] - }, - { - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementCollection object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementCollection Element" - } - ], - "modelType": "SubmodelElementCollection", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "kind": "Template" - } - ] - }, - { - "idShort": "ExampleSubmodelList2", - "typeValueListElement": "Capability", - "semanticIdListElement": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection" - } - ] - }, - "orderRelevant": true, - "category": "PARAMETER", - "description": [ - { - "language": "en-US", - "text": "Example SubmodelElementList object" - }, - { - "language": "de", - "text": "Beispiel SubmodelElementList Element" - } - ], - "modelType": "SubmodelElementList", - "semanticId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList" - } - ] - }, - "kind": "Template" - } - ] - } - ], - "conceptDescriptions": [ - { - "idShort": "TestConceptDescription", - "description": [ - { - "language": "en-US", - "text": "An example concept description for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-ConceptDescription f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription", - "administration": { - "version": "9", - "revision": "0", - "creator": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/AdministrativeInformation/Test_ConceptDescription" - } - ] - }, - "templateId": "http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription", - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationIec61360", - "preferredName": [ - { - "language": "de", - "text": "Test Specification" - }, - { - "language": "en-US", - "text": "TestSpecification" - } - ], - "dataType": "REAL_MEASURE", - "definition": [ - { - "language": "de", - "text": "Dies ist eine Data Specification f\u00fcr Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecification for testing purposes" - } - ], - "shortName": [ - { - "language": "de", - "text": "Test Spec" - }, - { - "language": "en-US", - "text": "TestSpec" - } - ], - "unit": "SpaceUnit", - "unitId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Units/SpaceUnit" - } - ] - }, - "sourceOfDefinition": "http://acplt.org/DataSpec/ExampleDef", - "symbol": "SU", - "valueFormat": "M", - "valueList": { - "valueReferencePairs": [ - { - "value": "exampleValue", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId" - } - ] - } - }, - { - "value": "exampleValue2", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/ValueId/ExampleValueId2" - } - ] - } - } - ] - }, - "value": "TEST", - "valueId": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/Values/TestValueId" - } - ] - }, - "levelType": { - "min": true, - "max": true, - "nom": false, - "typ": false - } - } - } - ] - }, - "isCaseOf": [ - { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "http://acplt.org/DataSpecifications/ConceptDescriptions/TestConceptDescription" - } - ] - } - ] - }, - { - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription_Mandatory" - }, - { - "idShort": "TestConceptDescription", - "description": [ - { - "language": "en-US", - "text": "An example concept description for the test application" - }, - { - "language": "de", - "text": "Ein Beispiel-ConceptDescription f\u00fcr eine Test-Anwendung" - } - ], - "modelType": "ConceptDescription", - "id": "https://acplt.org/Test_ConceptDescription_Missing", - "administration": { - "version": "9", - "revision": "0" - } - } - ] -} \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml b/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml deleted file mode 100644 index 061ee58b6..000000000 --- a/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml +++ /dev/null @@ -1,2991 +0,0 @@ - - - - - TestAssetAdministrationShell123 - - - en-US - An Example Asset Administration Shell for the test application - - - de - Ein Beispiel-Verwaltungsschale für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_AssetAdministrationShell - - - - http://acplt.org/AdministrativeInformationTemplates/Test_AssetAdministrationShell - - https://acplt.org/Test_AssetAdministrationShell - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - - ModelReference - - - AssetAdministrationShell - https://acplt.org/TestAssetAdministrationShell2 - - - - - Instance - http://acplt.org/TestAsset/ - - - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - http://acplt.org/TestAssetType/ - - file:///path/to/thumbnail.png - image/png - - - - - ModelReference - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/AssetIdentification - - - - - - Submodel - http://acplt.org/Submodels/Assets/TestAsset/Identification - - - - - ModelReference - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - Submodel - https://acplt.org/Test_Submodel - - - - - ModelReference - - - Submodel - http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial - - - - - - - https://acplt.org/Test_AssetAdministrationShell_Mandatory - - Instance - http://acplt.org/Test_Asset_Mandatory/ - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel2_Mandatory - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Mandatory - - - - - - - https://acplt.org/Test_AssetAdministrationShell2_Mandatory - - Instance - http://acplt.org/TestAsset2_Mandatory/ - - - - TestAssetAdministrationShell - - - en-US - An Example Asset Administration Shell for the test application - - - de - Ein Beispiel-Verwaltungsschale für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_AssetAdministrationShell_Missing - - Instance - http://acplt.org/Test_Asset_Missing/ - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - file:///TestFile.pdf - application/pdf - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Missing - - - - - - - - - Identification - - - en-US - An example asset identification submodel for the test application - - - de - Ein Beispiel-Identifikations-Submodel für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/TestAsset/Identification - - - - http://acplt.org/AdministrativeInformationTemplates/TestAsset/Identification - - http://acplt.org/Submodels/Assets/TestAsset/Identification - Instance - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/AssetIdentification - - - - - - - - ExampleExtension - xs:string - ExampleExtensionValue - - - ModelReference - - - AssetAdministrationShell - http://acplt.org/RefersTo/ExampleRefersTo - - - - - - - PARAMETER - ManufacturerName - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - 0173-1#02-AAO677#002 - - - - - - ConceptQualifier - http://acplt.org/Qualifier/ExampleQualifier - xs:int - 100 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - TemplateQualifier - http://acplt.org/Qualifier/ExampleQualifier2 - xs:int - 50 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - xs:string - ACPLT - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - PARAMETER - InstanceId - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - - - ValueQualifier - http://acplt.org/Qualifier/ExampleQualifier3 - xs:dateTime - 2023-04-07T16:59:54.870123 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - xs:string - 978-8234-234-342 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - BillOfMaterial - - - en-US - An example bill of material submodel for the test application - - - de - Ein Beispiel-BillofMaterial-Submodel für eine Test-Anwendung - - - - 9 - http://acplt.org/AdministrativeInformationTemplates/TestAsset/BillOfMaterial - - http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial - Instance - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/BillOfMaterial - - - - - - PARAMETER - ExampleEntity - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - - - CONSTANT - ExampleProperty2 - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - SelfManagedEntity - http://acplt.org/TestAsset/ - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - - PARAMETER - ExampleEntity2 - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - CoManagedEntity - - - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_Submodel - - - - - https://acplt.org/Test_Submodel - Instance - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ModelReference - - - ConceptDescription - https://acplt.org/Test_ConceptDescription - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty2 - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty2 - - - - - - PARAMETER - ExampleAnnotatedProperty - xs:string - exampleValue - - - PARAMETER - ExampleAnnotatedRange - xs:integer - 1 - 5 - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelCollection - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - AQIDBAU= - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - /TestFile.pdf - application/pdf - - - CONSTANT - ExampleFileURI - - - en-US - Details of the Asset Administration Shell — An example for an external file reference - - - de - Details of the Asset Administration Shell – Ein Beispiel für eine extern referenzierte Datei - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/Details-of-the-Asset-Administration-Shell-Part1.pdf?__blob=publicationFile&v=5 - application/pdf - - - PARAMETER - ExampleSubmodelList - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - Property - xs:string - - - CONSTANT - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/SupplementalId1 - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/SupplementalId2 - - - - - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - CONSTANT - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty2/SupplementalId - - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MultiLanguageProperty Element - - - - ExternalReference - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/Referred - - - - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - en-US - Example value of a MultiLanguageProperty element - - - de - Beispielswert für ein MulitLanguageProperty-Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleMultiLanguageValueId - - - - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - 100 - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - - - - - https://acplt.org/Test_Submodel_Mandatory - Instance - - - ExampleRelationshipElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - ExampleAnnotatedRelationshipElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - ExampleOperation - - - ExampleCapability - - - ExampleBasicEventElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - input - off - - - ExampleSubmodelList - SubmodelElementCollection - - - - - ExampleBlob - - application/pdf - - - ExampleFile - application/pdf - - - PARAMETER - ExampleMultiLanguageProperty - - - PARAMETER - ExampleProperty - xs:string - - - PARAMETER - ExampleRange - xs:int - - - PARAMETER - ExampleReferenceElement - - - - - - - - - ExampleSubmodelList2 - Capability - - - - - https://acplt.org/Test_Submodel2_Mandatory - Instance - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_Submodel_Missing - Instance - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRange - xs:integer - 1 - 5 - - - PARAMETER - ExampleAnnotatedProperty - xs:string - exampleValue - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelCollection - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - AQIDBAU= - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - /TestFile.pdf - application/pdf - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MulitLanguageProperty Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - en-US - Example value of a MultiLanguageProperty element - - - de - Beispielswert für ein MulitLanguageProperty-Element - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - http://acplt.org/Qualifier/ExampleQualifier - xs:string - - - xs:string - exampleValue - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - 100 - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - - - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_Submodel_Template - Template - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelList - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - SubmodelElementCollection - - - PARAMETER - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MulitLanguageProperty Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 100 - - - PARAMETER - ExampleRange2 - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - application/pdf - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - - - - PARAMETER - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - - - PARAMETER - ExampleSubmodelList2 - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - Capability - - - - - - - TestConceptDescription - - - en-US - An example concept description for the test application - - - de - Ein Beispiel-ConceptDescription für eine Test-Anwendung - - - - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_ConceptDescription - - - - http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription - - https://acplt.org/Test_ConceptDescription - - - ExternalReference - - - GlobalReference - http://acplt.org/DataSpecifications/ConceptDescriptions/TestConceptDescription - - - - - - - https://acplt.org/Test_ConceptDescription_Mandatory - - - TestConceptDescription - - - en-US - An example concept description for the test application - - - de - Ein Beispiel-ConceptDescription für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_ConceptDescription_Missing - - - diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/TestFile.pdf b/test/compliance_tool/files/test_demo_full_example_xml_aasx/TestFile.pdf deleted file mode 100644 index 2bccbec5f60ea7a8f51e5fd41eda019cf27a08d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8178 zcma)>Wl&sQv+qOj0fGjX!JV1G-6as*B{+lY;1)a(Jdoh-7Ti6!ySoGk?rt~FIqzHd zRK2(A++FKK_gcNX|JAGahh0BfWl3pP2pboGc4DS?0l)zS1077P0fK@6kUZ4h!o?EE z#R>e^0{}@|*}6bsK#;Vpu?tiZYU*GH1qcfRoLyj0V>^Jyk~3g)%DqOpa;AopgIx_p zRt;RuImyAvp;gH_!2zjPMv+wsn*+~8Vw`WmFgD-5*}+Er4S?F4{VTy=>!0Gh{~-bb zgm7?k{aX?{kc*F#h!_ z5Qu4SDc*3QlYZ%4o-x)IRHTS{>*5ppMv~P3!=PB+PN$J5I(ou0Nm$} zQz8op5ZJ5`61}=LbI6_eT$Ck3LVz%|xMP7kCY+ID&Jdi4`AP2?6T#u_^YSjB|81NR zSX)<<)ZZJ<(T|>IGIL)6UU0J`EjH8K2boeV!&0deaUDSrVe@VOYd~PDal7N2i1UC@ zgy+KTOaUx}x4hJ8mHyN#?*raG3ka;CyWh93IsyZ*HapvCtdQn`G^Be#)Mg;>|=unY>BC>Q*hQUu9QP}9`g^{mev(imj zaEt4+TNV4K;l8g}{--g#cL9F8?4sK`XvlXj3NVsNng!I?fTzsj7v|ru{b!jvFFbLt z?qbRmG#81fr-`qxPThi71O6g!1g(54J>dT2p0kTS^US<`(W`xMv?1OKlpL{gm7(ZFQ42LErOxrz8Z$=gV z1`&`}r1_B-2f)MyUcV9^QHZp<(KE<93$O2IU=W{q#UJ1U!sbJ#~M_|I89f!PO zvqb;1CrN7tr}DIYHI4EhV?s}Xj#Tl}Ft+xTmWe%4aIZ8l$L7{BKo!0QaAS5TsLR}Gh6*eX%j|}$u#ILL zwiLV`zFTo|xLT+_mrMT6wuox~fp?PS7u{1YihH!_E(0|^s%Fv;b$_q^OxW+o7w~lr z=H3y%Y+zPwl;n9}mL8hPZL~DJg<(p#Cl7}cWYxrs_Caw~U;sC-IiaK*Os=jCzO?V^ zP|Ws!CJLF@CfY2evN73*hNYetrPRaL*9LiF^N(aiX-@0hIX^P)NO9HP5GqPES0g=o z5ZgB0+3_AOkr2!-_W54o6WsQ*s8vf;j0a!?m>aGumlColei+oO3Y`XH=1|O2xXoX& z)CX&~Djz7DI9&&!ST^ePkIE0{*9g<~89%ad>UGvxRR9$3h2!`rzeq76tUi}`jiBFu z$3$9>qqL_!f-c65ynFEi<>guTZ;W=K%<@jfEOBoMiVtn9oF8wer~A8Rak*Zp3&`N{m`?Y*x>{+&!)7BfSjz;a-=o5~mC(FVfkY?TEnvB~1Kw8Jz z3cB~)kzGhvMC2T|%c|7*5?}tn{m*C3 zFw~6NbY+mGsn`1g`Pcc|6mV5IUAKhr+l$E3n%hPW&4RDx%RH|0Nq$16nr-GLUP<0U zjsaPAK1B}Swx2hsw6Lmsc0(k+S%IMBSm|K-txZBhbnj*!zaS9h$p~$^+t`RwJ}f+6 z(Dyf)&*$9I+nj^zj|y8xy1g$LtiX;i9#h2%(byXw7TV!wHKT$H$m8=8N&Xu5d*|Bq z_c`GX3!Hk`u+dWH-W1;^!Acm_^`FJq4)bV8NzL8TG;aZ|B+>0cH%s)nSZoF%oJ5oB zoLY%P1Y-6RDJq*vg1c<`T+x;+D*k(EPpcNDlfut!vZgfU-@36GS+o>;Kh`;NXThXG ztL1||s@udB3NuBKBd9m5(BkMkfg10c$?b(FxF=eL`3tzbSfL<;+M+#x%gSsFF4O&4 z`?^-VcKJs2rDJWC_^b7+DSNe8sK6{B*%r%D1#Gp{B;IWib3Bxi`!%x3z9GHoXy86> z+&E7|qrxDc*_DHj;aIk?d^&#d)*M$)#H)sW+aV7KM+9AM33zrak^)P~Qi6VHYLNs^ zUI+N#zn;&?NBI+;e{WYs(^G};l2%i64sg4<^?!|8Hea(57%6D~EY+plmDtU{`XbsQ zd^>w{SdH84&a8Movf(+mrSF?g{cNGRk=SYVI#tDN8kSr9<7VONDzjB$U0N8%pKnb#lQZeJelh5%L4Xh_{84So z{`7L}5f7iXV)7&Co#57zATjSB^lf{Pr@(^3-mTL~ZW1f;JU8a|rA#KPmbStxone*h zg}^xQfQDFktYRL2JiaU92eK8rj1+k7Y`lJ(KF-qKy@IvBxftGJ(3^yu8aHr-Z&a$3J&HF7H<{wD|WZ zg&Eb($DlQy_;dY=%t{(*G1)ji*=^JeEXg5+)ihChwYu6=_A}N+y`xW#>U?Ok7}AIF zi_?)9BK27*BBrv|IVjpwh60HI<}tPg8-9P|ng!V(7?g*6ImrkU6-St*z3>a=g{=H4 z2Zu43mToKj>2-7$9-amica(6%aGJUB;-ALfaEgn8OM04Z!`XV)qJi6rt3QZ)8n65}p9aj3y zdDHvOFguHl3lB1)D~iH3G=LXVC1qPHCDSC_V(e@xmWpbLCMB|i@>xRLT!vC~uYjE${pUi4X^wY{L0C9$4-E0SIc+I77o zgQv>m50>7$@GUZ)Ee|}|*>TNn_v!X#Vu}=MpJdE-mKgYyF&$c~OoA_(47m3lCUrlYVS?YlV-da?bb* z8s}Z&gH@F$pQeC5sX2f--fq5*wlB+{PcpzVE)8CjYYsjYiL_zq&ekln@eQ*zNy zVXMF+b6PIBNAo$=KSeqji{mr-)|zBKEBB;*{RQIDW!Xe4fxIIFcVS2ODE6$1F!EEz zp;MF)BsZ;hu%HPH=;h*zr2Yo|ntO3yb5ap2Q27;8kJ=_?4{n|#Ca;Id@6!KNLrpy> zIjw#k{uC_yd2_#IS^V1|ar*aqkx3PXK$RcQ5fSe+Z1Od8kofHTx6*!8P~Z(=p|5a< z5q+Kal}Zv~$((iEiIL+7- z)IG}jn)eIalSd>`qiCvCDZ5}33;M!0Zw6~qW0}1nzm3Z z5sFy1A-(S$1qT_p- zwOD%*7|NNTR2fUqLm{u-OGxGie=UJJ$_eAS8N+e=;!2$&!&ryo!CZoe>OjPNt7fgl zX4G__&8+1*mwj+JSy=BpTE1JiRAIUOLf1rGW_Mar<)%nRlHZH( z$}G>Pcql7;_UIN~NsLwlsZ6YSqU3&`tYvvW+WBV@$o&rw+11d6t!$z3y*Xd7E14L5 z)l7S4{q?TJffkHbwOuU3F=Wa}P<^bSm145KeR)}GHH9AMgH5A~%f$AxFLJu#VG-$f zJg~I%Pa84v{EVppu{)Wnx zl{W5+VB?9RSN_OS)dzQP>$;ibva)PGi#AWf zAtyZ}JuU!Oaf}uupHlk;{Q3KzfYGNegTD#MejSx`Ws_KlyL&p+nG{ z8F|BZXOp@Lq*t5z7mN4XKdGWTlU$GV6D6qqzJh-i**0&05?K_Pb_%%``z$MTCmq8} zKgXx72}k~(ST$_3O|IB5WS2GL>)uJs2#Hu{o3e*en~iO5&NcJL zAb!*)u(ujnsE&@1w0Y@ef`T*!I`Yn8mh(jedGCj{c2M#3A#~Rz&kYze@*d2Ly(Hc7 zQf1+ARh8t3Ok6KjI91Q2ZRx%si%_uCy@vIPSSTl|BPzLDb(zm`k&%om2^ zti{4H=VKkBgyM6OBb+5d?^AP2IbuoxZc?~Apk(lQ-14k%qF$H545Pc&i}<186Tf&6 zX4xY3x}g$}-I432fy!R@azU%BfR5Hq4Ia6NzJvnHeX!{_FY8#mVK>q0n0v?ovsLS= zO%d>u72{_hR*pHld5(rLR9)tn5SL0No>$Sm$X%HXYQV|c{(pX6(Htt>+C8*l4C{R`5$_BU#r_|dHsyay>74IO)?sLYZT|-{_ThP*)T3TW{N)I#AaqTHt8x%bCj*g?#JK{5ntB z8xb(%-HZ0iREG3t+^CefC%0rZcO61RHU2SIFn_O< zpL7l@3iI{7+iAQJinYO~OgBObQ60o4C4n$xYS3ME0{_gVHFb@W1i=tr0<#jV9h0Q) z#uh9XmwoR!vT?e27HnVM2dB;1-;i_{-B`7&dN&&1S!fpBr*c%l z;du2X3frI^ccs9pC_3tqrOl-BZC0x{+a2on1t#S?r6E|2mi>)q23!z-fsxKDHM_by zj6T)jYs7qMOx^U~5?-6e=L7JXJzI?l7b8KAiI~`h4K@zpWrcns*E<-8S6JD*#~eDg z8V-NbC6Ur9Iphi__Tuz>Db&36r#8=a~5Q@PKYi>lq(Cmk#v%tb%!Xo;A-bYoHE{^}fliP@P0t z+pl?p!f&*cg9@~f!)(YXX<-g!v)K2$W8oU&zt(0)7f?>BQ$d!URTPVdX&-S6(p$dDH2xi zN`?m)IwXFg89KA_bFpD{jW^$G{TAc&$X4+M=R*OB0N2UAw&lhj99rJhJ99R6v{6q! zr;CuqoxaXrLi3<<-^zS%OdqD~#ULwy9cMy6TuohLB0NDfA~DFN=_KKkU zjMq|Ps&M<`OgXgkBW85@fQLzalY8h>7Ld( zqSQn!mLwnKF2BFmBVrsTKCge|L}VVH$Qw#|*JN}qceLD$qJQ^8tN>;_XC&+5m~nkPho$t9|a zq56o`$6$L@vhSdnX#1)*^hkA37gKx$MQ3qlfr#F8rn08Xo>rx!v-Xrjq=q2H__1)u zC3btIRe3oF@l#{_S{%FCSqL#*dBkSARifNHaWdNWeh9tiAZC>K@2}gup(L)ip%u6E z$>#H)0?0|1%h)r?7ozg8s@QSA4HoL#zk7kcKF}QxCK_;6^^;&pr!KzVj zJTO8{C3}@xI# zBV7V(%?2za@d?8o4d0YzQvrv~Rr#8@;c=P@w?YAQww#QG38<0EeiBy<88C4mnz5e1 zD8l~CEC8&b`q(OqUIDNrTU^I>AgzYeP%`2fA1f1<<6p7xU#n8Ob&!n&vJV5I_v+-! z4n0II3H}Th0cu>vT*}ra!H*EcJ)`7EgM0s}nfnhO$K(=4sxTwC- zQn4!haRQwnXKnDQ=v4YLMCgea(*(+JnvwM0jP&t5@uYF8r>*dk_?w=iTZe(N7Pkb! zq1#|-d>Jrzl0<>>Q(+qV6z$aa_KpD^99uywXJbV7R`iu6jH`Fi%_MR23s%-zxqwH%3D3h&luYxAHI%D zY@Gb128tsb>Sr1d=KS6M7LF=@?vW)1FPPR&GXN2QI4Ovp)PKP=wq!j|Drwp+A=-8F zCR;sg)cZFZ^wjFpmvV#}QNzY^@bq1oRKQ@hijQG2Krx;tC%xTwH)->_Q@NtAexb)d z;hPJZ1krNAY@AesBVuhsPdTM@oyw5IuUzU|e|DLmSB&S$11*KYfd?*}@Tu%zJ`3|~ z)9N*u2#XNimh0>>B}{mM_Zk&cCGDP)-Q{mF!IRL!w?BR?Fl)yr0rcx+Dqd9D6?3F(a96o}?SE*nuYe z>ZkEvqK1A^AySv}&D`183=J1@Wi$oAb;e|)^N209G6ZZ-gB>w6L2R>asV;eKjSL~cG0LZL6v?e~Z3 zi{lBN2}oq=dM3EC-`Ku=ou~QX(;?Ann7&M_iwPIyImc9|kyURCtQhjOUd4IP>lL0> zR@3J{xf%rWKfszY%)!jn^e@a~a5OVlhidMcat8ig|E-Ays0oER|1AyVV1sZ%xcJz)xmelRxc{y7zZ3%H zt=ynMb})nwWCnEuNkUDmjO`hLHjc(Fmd;RPpxeJvaI^hQ@=plkKgjZ5sFCY`bVS|L z5eft;nOLj2*a1L_K%RdXBFxzZ$oYQ(BL^q%|2GVUsulTPEv?NlNa~Wm)I`G1PGE{x$X@h26BK1R(k9E`Rb`{F(wg^t(8#+qKz?j@d zs-h`MG9gkA{^M)snP3{Y6d6J|WPkYPgQaF=e7V|;JyD(m>ugvWyHQ#5$K5+;=z(IU z-7VfgQX+-t;Ib10q(q?qy<8nOS zEYz9Gdt2tzCtpCC!0Lj{$K|O$a;J*M_9{^Ib@`C=g03a=(9t6k^ zg#6u8b#QP2Lco9DSN$j4+yVGs-^o9YBv4Nf43Xyed+Xd>Tv8kmK54Fhh7imL5tD$3 zNlWqa@CpO}_mIC;{teT?{~90Q{|=~4jg0Qbdpd_ude9@$pU_29LR5A|!psp(=%l|e v0=YS`Y9MkQ#zx--#@@WK&qTQX&#pMT7{gpVV1N6-!^^`5prw^kk_P-Ay3<)0 diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/[Content_Types].xml b/test/compliance_tool/files/test_demo_full_example_xml_aasx/[Content_Types].xml deleted file mode 100644 index efab09eb1..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_aasx/[Content_Types].xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/_rels/.rels b/test/compliance_tool/files/test_demo_full_example_xml_aasx/_rels/.rels deleted file mode 100644 index 9758543f3..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_aasx/_rels/.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/_rels/aasx-origin.rels b/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/_rels/aasx-origin.rels deleted file mode 100644 index fc764b657..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/_rels/aasx-origin.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/_rels/data.xml.rels b/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/_rels/data.xml.rels deleted file mode 100644 index 43350edd0..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/_rels/data.xml.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/aasx-origin b/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/aasx-origin deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/data.xml b/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/data.xml deleted file mode 100644 index c0eb40769..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_aasx/aasx/data.xml +++ /dev/null @@ -1,2999 +0,0 @@ - - - - - TestAssetAdministrationShell - - - en-US - An Example Asset Administration Shell for the test application - - - de - Ein Beispiel-Verwaltungsschale für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_AssetAdministrationShell - - - - http://acplt.org/AdministrativeInformationTemplates/Test_AssetAdministrationShell - - https://acplt.org/Test_AssetAdministrationShell - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - - ModelReference - - - AssetAdministrationShell - https://acplt.org/TestAssetAdministrationShell2 - - - - - Instance - http://acplt.org/TestAsset/ - - - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - file:///path/to/thumbnail.png - image/png - - - - - ModelReference - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/AssetIdentification - - - - - - Submodel - http://acplt.org/Submodels/Assets/TestAsset/Identification - - - - - ModelReference - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - Submodel - https://acplt.org/Test_Submodel - - - - - ModelReference - - - Submodel - http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Template - - - - - - - https://acplt.org/Test_AssetAdministrationShell_Mandatory - - Instance - http://acplt.org/Test_Asset_Mandatory/ - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel2_Mandatory - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Mandatory - - - - - - - https://acplt.org/Test_AssetAdministrationShell2_Mandatory - - Instance - http://acplt.org/TestAsset2_Mandatory/ - - - - TestAssetAdministrationShell - - - en-US - An Example Asset Administration Shell for the test application - - - de - Ein Beispiel-Verwaltungsschale für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_AssetAdministrationShell_Missing - - Instance - http://acplt.org/Test_Asset_Missing/ - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - file:///TestFile.pdf - application/pdf - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Missing - - - - - - - - - Identification - - - en-US - An example asset identification submodel for the test application - - - de - Ein Beispiel-Identifikations-Submodel für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/TestAsset/Identification - - - - http://acplt.org/AdministrativeInformationTemplates/TestAsset/Identification - - http://acplt.org/Submodels/Assets/TestAsset/Identification - Instance - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/AssetIdentification - - - - - - - - ExampleExtension - xs:string - ExampleExtensionValue - - - ModelReference - - - AssetAdministrationShell - http://acplt.org/RefersTo/ExampleRefersTo - - - - - - - PARAMETER - ManufacturerName - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - 0173-1#02-AAO677#002 - - - - - - ConceptQualifier - http://acplt.org/Qualifier/ExampleQualifier - xs:int - 100 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - TemplateQualifier - http://acplt.org/Qualifier/ExampleQualifier2 - xs:int - 50 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - xs:string - ACPLT - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - PARAMETER - InstanceId - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - - - ValueQualifier - http://acplt.org/Qualifier/ExampleQualifier3 - xs:dateTime - 2023-04-07T16:59:54.870123 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - xs:string - 978-8234-234-342 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - BillOfMaterial - - - en-US - An example bill of material submodel for the test application - - - de - Ein Beispiel-BillofMaterial-Submodel für eine Test-Anwendung - - - - 9 - http://acplt.org/AdministrativeInformationTemplates/TestAsset/BillOfMaterial - - http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial - Instance - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/BillOfMaterial - - - - - - PARAMETER - ExampleEntity - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - - - CONSTANT - ExampleProperty2 - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - SelfManagedEntity - http://acplt.org/TestAsset/ - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - - PARAMETER - ExampleEntity2 - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - CoManagedEntity - - - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_Submodel - - - - - https://acplt.org/Test_Submodel - Instance - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ModelReference - - - ConceptDescription - https://acplt.org/Test_ConceptDescription - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty2 - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty2 - - - - - - PARAMETER - ExampleAnnotatedProperty - xs:string - exampleValue - - - PARAMETER - ExampleAnnotatedRange - xs:integer - 1 - 5 - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelCollection - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - AQIDBAU= - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - /TestFile.pdf - application/pdf - - - CONSTANT - ExampleFileURI - - - en-US - Details of the Asset Administration Shell — An example for an external file reference - - - de - Details of the Asset Administration Shell – Ein Beispiel für eine extern referenzierte Datei - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/Details-of-the-Asset-Administration-Shell-Part1.pdf?__blob=publicationFile&v=5 - application/pdf - - - PARAMETER - ExampleSubmodelList - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - Property - xs:string - - - CONSTANT - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/SupplementalId1 - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/SupplementalId2 - - - - - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - CONSTANT - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty2/SupplementalId - - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MultiLanguageProperty Element - - - - ExternalReference - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/Referred - - - - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - en-US - Example value of a MultiLanguageProperty element - - - de - Beispielswert für ein MulitLanguageProperty-Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleMultiLanguageValueId - - - - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - 100 - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - - - - - https://acplt.org/Test_Submodel_Mandatory - Instance - - - ExampleRelationshipElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - ExampleAnnotatedRelationshipElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - ExampleOperation - - - ExampleCapability - - - ExampleBasicEventElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - input - off - - - ExampleSubmodelList - SubmodelElementCollection - - - - - ExampleBlob - - application/pdf - - - ExampleFile - application/pdf - - - PARAMETER - ExampleMultiLanguageProperty - - - PARAMETER - ExampleProperty - xs:string - - - PARAMETER - ExampleRange - xs:int - - - PARAMETER - ExampleReferenceElement - - - - - - - - - ExampleSubmodelList2 - Capability - - - - - https://acplt.org/Test_Submodel2_Mandatory - Instance - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_Submodel_Missing - Instance - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRange - xs:integer - 1 - 5 - - - PARAMETER - ExampleAnnotatedProperty - xs:string - exampleValue - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelCollection - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - AQIDBAU= - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - /TestFile.pdf - application/pdf - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MulitLanguageProperty Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - en-US - Example value of a MultiLanguageProperty element - - - de - Beispielswert für ein MulitLanguageProperty-Element - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - http://acplt.org/Qualifier/ExampleQualifier - xs:string - - - xs:string - exampleValue - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - 100 - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - - - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_Submodel_Template - Template - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelList - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - SubmodelElementCollection - - - PARAMETER - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MulitLanguageProperty Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 100 - - - PARAMETER - ExampleRange2 - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - application/pdf - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - - - - PARAMETER - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - - - PARAMETER - ExampleSubmodelList2 - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - Capability - - - - - - - TestConceptDescription - - - en-US - An example concept description for the test application - - - de - Ein Beispiel-ConceptDescription für eine Test-Anwendung - - - - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_ConceptDescription - - - - http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription - - https://acplt.org/Test_ConceptDescription - - - ExternalReference - - - GlobalReference - http://acplt.org/DataSpecifications/ConceptDescriptions/TestConceptDescription - - - - - - - https://acplt.org/Test_ConceptDescription_Mandatory - - - TestConceptDescription - - - en-US - An example concept description for the test application - - - de - Ein Beispiel-ConceptDescription für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_ConceptDescription_Missing - - - diff --git a/test/compliance_tool/files/test_demo_full_example_xml_aasx/docProps/core.xml b/test/compliance_tool/files/test_demo_full_example_xml_aasx/docProps/core.xml deleted file mode 100644 index 5f0e65331..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_aasx/docProps/core.xml +++ /dev/null @@ -1 +0,0 @@ -2020-01-01T00:00:00Eclipse BaSyx Python Testing FrameworkTest_DescriptionEclipse BaSyx Python Testing Framework Compliance Tool2020-01-01T00:00:011.0Test Title2.0.1 \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/TestFile.pdf b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/TestFile.pdf deleted file mode 100644 index 2bccbec5f60ea7a8f51e5fd41eda019cf27a08d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8178 zcma)>Wl&sQv+qOj0fGjX!JV1G-6as*B{+lY;1)a(Jdoh-7Ti6!ySoGk?rt~FIqzHd zRK2(A++FKK_gcNX|JAGahh0BfWl3pP2pboGc4DS?0l)zS1077P0fK@6kUZ4h!o?EE z#R>e^0{}@|*}6bsK#;Vpu?tiZYU*GH1qcfRoLyj0V>^Jyk~3g)%DqOpa;AopgIx_p zRt;RuImyAvp;gH_!2zjPMv+wsn*+~8Vw`WmFgD-5*}+Er4S?F4{VTy=>!0Gh{~-bb zgm7?k{aX?{kc*F#h!_ z5Qu4SDc*3QlYZ%4o-x)IRHTS{>*5ppMv~P3!=PB+PN$J5I(ou0Nm$} zQz8op5ZJ5`61}=LbI6_eT$Ck3LVz%|xMP7kCY+ID&Jdi4`AP2?6T#u_^YSjB|81NR zSX)<<)ZZJ<(T|>IGIL)6UU0J`EjH8K2boeV!&0deaUDSrVe@VOYd~PDal7N2i1UC@ zgy+KTOaUx}x4hJ8mHyN#?*raG3ka;CyWh93IsyZ*HapvCtdQn`G^Be#)Mg;>|=unY>BC>Q*hQUu9QP}9`g^{mev(imj zaEt4+TNV4K;l8g}{--g#cL9F8?4sK`XvlXj3NVsNng!I?fTzsj7v|ru{b!jvFFbLt z?qbRmG#81fr-`qxPThi71O6g!1g(54J>dT2p0kTS^US<`(W`xMv?1OKlpL{gm7(ZFQ42LErOxrz8Z$=gV z1`&`}r1_B-2f)MyUcV9^QHZp<(KE<93$O2IU=W{q#UJ1U!sbJ#~M_|I89f!PO zvqb;1CrN7tr}DIYHI4EhV?s}Xj#Tl}Ft+xTmWe%4aIZ8l$L7{BKo!0QaAS5TsLR}Gh6*eX%j|}$u#ILL zwiLV`zFTo|xLT+_mrMT6wuox~fp?PS7u{1YihH!_E(0|^s%Fv;b$_q^OxW+o7w~lr z=H3y%Y+zPwl;n9}mL8hPZL~DJg<(p#Cl7}cWYxrs_Caw~U;sC-IiaK*Os=jCzO?V^ zP|Ws!CJLF@CfY2evN73*hNYetrPRaL*9LiF^N(aiX-@0hIX^P)NO9HP5GqPES0g=o z5ZgB0+3_AOkr2!-_W54o6WsQ*s8vf;j0a!?m>aGumlColei+oO3Y`XH=1|O2xXoX& z)CX&~Djz7DI9&&!ST^ePkIE0{*9g<~89%ad>UGvxRR9$3h2!`rzeq76tUi}`jiBFu z$3$9>qqL_!f-c65ynFEi<>guTZ;W=K%<@jfEOBoMiVtn9oF8wer~A8Rak*Zp3&`N{m`?Y*x>{+&!)7BfSjz;a-=o5~mC(FVfkY?TEnvB~1Kw8Jz z3cB~)kzGhvMC2T|%c|7*5?}tn{m*C3 zFw~6NbY+mGsn`1g`Pcc|6mV5IUAKhr+l$E3n%hPW&4RDx%RH|0Nq$16nr-GLUP<0U zjsaPAK1B}Swx2hsw6Lmsc0(k+S%IMBSm|K-txZBhbnj*!zaS9h$p~$^+t`RwJ}f+6 z(Dyf)&*$9I+nj^zj|y8xy1g$LtiX;i9#h2%(byXw7TV!wHKT$H$m8=8N&Xu5d*|Bq z_c`GX3!Hk`u+dWH-W1;^!Acm_^`FJq4)bV8NzL8TG;aZ|B+>0cH%s)nSZoF%oJ5oB zoLY%P1Y-6RDJq*vg1c<`T+x;+D*k(EPpcNDlfut!vZgfU-@36GS+o>;Kh`;NXThXG ztL1||s@udB3NuBKBd9m5(BkMkfg10c$?b(FxF=eL`3tzbSfL<;+M+#x%gSsFF4O&4 z`?^-VcKJs2rDJWC_^b7+DSNe8sK6{B*%r%D1#Gp{B;IWib3Bxi`!%x3z9GHoXy86> z+&E7|qrxDc*_DHj;aIk?d^&#d)*M$)#H)sW+aV7KM+9AM33zrak^)P~Qi6VHYLNs^ zUI+N#zn;&?NBI+;e{WYs(^G};l2%i64sg4<^?!|8Hea(57%6D~EY+plmDtU{`XbsQ zd^>w{SdH84&a8Movf(+mrSF?g{cNGRk=SYVI#tDN8kSr9<7VONDzjB$U0N8%pKnb#lQZeJelh5%L4Xh_{84So z{`7L}5f7iXV)7&Co#57zATjSB^lf{Pr@(^3-mTL~ZW1f;JU8a|rA#KPmbStxone*h zg}^xQfQDFktYRL2JiaU92eK8rj1+k7Y`lJ(KF-qKy@IvBxftGJ(3^yu8aHr-Z&a$3J&HF7H<{wD|WZ zg&Eb($DlQy_;dY=%t{(*G1)ji*=^JeEXg5+)ihChwYu6=_A}N+y`xW#>U?Ok7}AIF zi_?)9BK27*BBrv|IVjpwh60HI<}tPg8-9P|ng!V(7?g*6ImrkU6-St*z3>a=g{=H4 z2Zu43mToKj>2-7$9-amica(6%aGJUB;-ALfaEgn8OM04Z!`XV)qJi6rt3QZ)8n65}p9aj3y zdDHvOFguHl3lB1)D~iH3G=LXVC1qPHCDSC_V(e@xmWpbLCMB|i@>xRLT!vC~uYjE${pUi4X^wY{L0C9$4-E0SIc+I77o zgQv>m50>7$@GUZ)Ee|}|*>TNn_v!X#Vu}=MpJdE-mKgYyF&$c~OoA_(47m3lCUrlYVS?YlV-da?bb* z8s}Z&gH@F$pQeC5sX2f--fq5*wlB+{PcpzVE)8CjYYsjYiL_zq&ekln@eQ*zNy zVXMF+b6PIBNAo$=KSeqji{mr-)|zBKEBB;*{RQIDW!Xe4fxIIFcVS2ODE6$1F!EEz zp;MF)BsZ;hu%HPH=;h*zr2Yo|ntO3yb5ap2Q27;8kJ=_?4{n|#Ca;Id@6!KNLrpy> zIjw#k{uC_yd2_#IS^V1|ar*aqkx3PXK$RcQ5fSe+Z1Od8kofHTx6*!8P~Z(=p|5a< z5q+Kal}Zv~$((iEiIL+7- z)IG}jn)eIalSd>`qiCvCDZ5}33;M!0Zw6~qW0}1nzm3Z z5sFy1A-(S$1qT_p- zwOD%*7|NNTR2fUqLm{u-OGxGie=UJJ$_eAS8N+e=;!2$&!&ryo!CZoe>OjPNt7fgl zX4G__&8+1*mwj+JSy=BpTE1JiRAIUOLf1rGW_Mar<)%nRlHZH( z$}G>Pcql7;_UIN~NsLwlsZ6YSqU3&`tYvvW+WBV@$o&rw+11d6t!$z3y*Xd7E14L5 z)l7S4{q?TJffkHbwOuU3F=Wa}P<^bSm145KeR)}GHH9AMgH5A~%f$AxFLJu#VG-$f zJg~I%Pa84v{EVppu{)Wnx zl{W5+VB?9RSN_OS)dzQP>$;ibva)PGi#AWf zAtyZ}JuU!Oaf}uupHlk;{Q3KzfYGNegTD#MejSx`Ws_KlyL&p+nG{ z8F|BZXOp@Lq*t5z7mN4XKdGWTlU$GV6D6qqzJh-i**0&05?K_Pb_%%``z$MTCmq8} zKgXx72}k~(ST$_3O|IB5WS2GL>)uJs2#Hu{o3e*en~iO5&NcJL zAb!*)u(ujnsE&@1w0Y@ef`T*!I`Yn8mh(jedGCj{c2M#3A#~Rz&kYze@*d2Ly(Hc7 zQf1+ARh8t3Ok6KjI91Q2ZRx%si%_uCy@vIPSSTl|BPzLDb(zm`k&%om2^ zti{4H=VKkBgyM6OBb+5d?^AP2IbuoxZc?~Apk(lQ-14k%qF$H545Pc&i}<186Tf&6 zX4xY3x}g$}-I432fy!R@azU%BfR5Hq4Ia6NzJvnHeX!{_FY8#mVK>q0n0v?ovsLS= zO%d>u72{_hR*pHld5(rLR9)tn5SL0No>$Sm$X%HXYQV|c{(pX6(Htt>+C8*l4C{R`5$_BU#r_|dHsyay>74IO)?sLYZT|-{_ThP*)T3TW{N)I#AaqTHt8x%bCj*g?#JK{5ntB z8xb(%-HZ0iREG3t+^CefC%0rZcO61RHU2SIFn_O< zpL7l@3iI{7+iAQJinYO~OgBObQ60o4C4n$xYS3ME0{_gVHFb@W1i=tr0<#jV9h0Q) z#uh9XmwoR!vT?e27HnVM2dB;1-;i_{-B`7&dN&&1S!fpBr*c%l z;du2X3frI^ccs9pC_3tqrOl-BZC0x{+a2on1t#S?r6E|2mi>)q23!z-fsxKDHM_by zj6T)jYs7qMOx^U~5?-6e=L7JXJzI?l7b8KAiI~`h4K@zpWrcns*E<-8S6JD*#~eDg z8V-NbC6Ur9Iphi__Tuz>Db&36r#8=a~5Q@PKYi>lq(Cmk#v%tb%!Xo;A-bYoHE{^}fliP@P0t z+pl?p!f&*cg9@~f!)(YXX<-g!v)K2$W8oU&zt(0)7f?>BQ$d!URTPVdX&-S6(p$dDH2xi zN`?m)IwXFg89KA_bFpD{jW^$G{TAc&$X4+M=R*OB0N2UAw&lhj99rJhJ99R6v{6q! zr;CuqoxaXrLi3<<-^zS%OdqD~#ULwy9cMy6TuohLB0NDfA~DFN=_KKkU zjMq|Ps&M<`OgXgkBW85@fQLzalY8h>7Ld( zqSQn!mLwnKF2BFmBVrsTKCge|L}VVH$Qw#|*JN}qceLD$qJQ^8tN>;_XC&+5m~nkPho$t9|a zq56o`$6$L@vhSdnX#1)*^hkA37gKx$MQ3qlfr#F8rn08Xo>rx!v-Xrjq=q2H__1)u zC3btIRe3oF@l#{_S{%FCSqL#*dBkSARifNHaWdNWeh9tiAZC>K@2}gup(L)ip%u6E z$>#H)0?0|1%h)r?7ozg8s@QSA4HoL#zk7kcKF}QxCK_;6^^;&pr!KzVj zJTO8{C3}@xI# zBV7V(%?2za@d?8o4d0YzQvrv~Rr#8@;c=P@w?YAQww#QG38<0EeiBy<88C4mnz5e1 zD8l~CEC8&b`q(OqUIDNrTU^I>AgzYeP%`2fA1f1<<6p7xU#n8Ob&!n&vJV5I_v+-! z4n0II3H}Th0cu>vT*}ra!H*EcJ)`7EgM0s}nfnhO$K(=4sxTwC- zQn4!haRQwnXKnDQ=v4YLMCgea(*(+JnvwM0jP&t5@uYF8r>*dk_?w=iTZe(N7Pkb! zq1#|-d>Jrzl0<>>Q(+qV6z$aa_KpD^99uywXJbV7R`iu6jH`Fi%_MR23s%-zxqwH%3D3h&luYxAHI%D zY@Gb128tsb>Sr1d=KS6M7LF=@?vW)1FPPR&GXN2QI4Ovp)PKP=wq!j|Drwp+A=-8F zCR;sg)cZFZ^wjFpmvV#}QNzY^@bq1oRKQ@hijQG2Krx;tC%xTwH)->_Q@NtAexb)d z;hPJZ1krNAY@AesBVuhsPdTM@oyw5IuUzU|e|DLmSB&S$11*KYfd?*}@Tu%zJ`3|~ z)9N*u2#XNimh0>>B}{mM_Zk&cCGDP)-Q{mF!IRL!w?BR?Fl)yr0rcx+Dqd9D6?3F(a96o}?SE*nuYe z>ZkEvqK1A^AySv}&D`183=J1@Wi$oAb;e|)^N209G6ZZ-gB>w6L2R>asV;eKjSL~cG0LZL6v?e~Z3 zi{lBN2}oq=dM3EC-`Ku=ou~QX(;?Ann7&M_iwPIyImc9|kyURCtQhjOUd4IP>lL0> zR@3J{xf%rWKfszY%)!jn^e@a~a5OVlhidMcat8ig|E-Ays0oER|1AyVV1sZ%xcJz)xmelRxc{y7zZ3%H zt=ynMb})nwWCnEuNkUDmjO`hLHjc(Fmd;RPpxeJvaI^hQ@=plkKgjZ5sFCY`bVS|L z5eft;nOLj2*a1L_K%RdXBFxzZ$oYQ(BL^q%|2GVUsulTPEv?NlNa~Wm)I`G1PGE{x$X@h26BK1R(k9E`Rb`{F(wg^t(8#+qKz?j@d zs-h`MG9gkA{^M)snP3{Y6d6J|WPkYPgQaF=e7V|;JyD(m>ugvWyHQ#5$K5+;=z(IU z-7VfgQX+-t;Ib10q(q?qy<8nOS zEYz9Gdt2tzCtpCC!0Lj{$K|O$a;J*M_9{^Ib@`C=g03a=(9t6k^ zg#6u8b#QP2Lco9DSN$j4+yVGs-^o9YBv4Nf43Xyed+Xd>Tv8kmK54Fhh7imL5tD$3 zNlWqa@CpO}_mIC;{teT?{~90Q{|=~4jg0Qbdpd_ude9@$pU_29LR5A|!psp(=%l|e v0=YS`Y9MkQ#zx--#@@WK&qTQX&#pMT7{gpVV1N6-!^^`5prw^kk_P-Ay3<)0 diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/[Content_Types].xml b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/[Content_Types].xml deleted file mode 100644 index efab09eb1..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/[Content_Types].xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/_rels/.rels b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/_rels/.rels deleted file mode 100644 index 9758543f3..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/_rels/.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/_rels/aasx-origin.rels b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/_rels/aasx-origin.rels deleted file mode 100644 index fc764b657..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/_rels/aasx-origin.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/_rels/data.xml.rels b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/_rels/data.xml.rels deleted file mode 100644 index 43350edd0..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/_rels/data.xml.rels +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/aasx-origin b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/aasx-origin deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/data.xml b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/data.xml deleted file mode 100644 index 5e952db2f..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/aasx/data.xml +++ /dev/null @@ -1,2999 +0,0 @@ - - - - - TestAssetAdministrationShell123 - - - en-US - An Example Asset Administration Shell for the test application - - - de - Ein Beispiel-Verwaltungsschale für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_AssetAdministrationShell - - - - http://acplt.org/AdministrativeInformationTemplates/Test_AssetAdministrationShell - - https://acplt.org/Test_AssetAdministrationShell - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - - ModelReference - - - AssetAdministrationShell - https://acplt.org/TestAssetAdministrationShell2 - - - - - Instance - http://acplt.org/TestAsset/ - - - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - file:///path/to/thumbnail.png - image/png - - - - - ModelReference - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/AssetIdentification - - - - - - Submodel - http://acplt.org/Submodels/Assets/TestAsset/Identification - - - - - ModelReference - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - Submodel - https://acplt.org/Test_Submodel - - - - - ModelReference - - - Submodel - http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Template - - - - - - - https://acplt.org/Test_AssetAdministrationShell_Mandatory - - Instance - http://acplt.org/Test_Asset_Mandatory/ - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel2_Mandatory - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Mandatory - - - - - - - https://acplt.org/Test_AssetAdministrationShell2_Mandatory - - Instance - http://acplt.org/TestAsset2_Mandatory/ - - - - TestAssetAdministrationShell - - - en-US - An Example Asset Administration Shell for the test application - - - de - Ein Beispiel-Verwaltungsschale für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_AssetAdministrationShell_Missing - - Instance - http://acplt.org/Test_Asset_Missing/ - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - file:///TestFile.pdf - application/pdf - - - - - ModelReference - - - Submodel - https://acplt.org/Test_Submodel_Missing - - - - - - - - - Identification - - - en-US - An example asset identification submodel for the test application - - - de - Ein Beispiel-Identifikations-Submodel für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/TestAsset/Identification - - - - http://acplt.org/AdministrativeInformationTemplates/TestAsset/Identification - - http://acplt.org/Submodels/Assets/TestAsset/Identification - Instance - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/AssetIdentification - - - - - - - - ExampleExtension - xs:string - ExampleExtensionValue - - - ModelReference - - - AssetAdministrationShell - http://acplt.org/RefersTo/ExampleRefersTo - - - - - - - PARAMETER - ManufacturerName - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - 0173-1#02-AAO677#002 - - - - - - ConceptQualifier - http://acplt.org/Qualifier/ExampleQualifier - xs:int - 100 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - TemplateQualifier - http://acplt.org/Qualifier/ExampleQualifier2 - xs:int - 50 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - xs:string - ACPLT - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - PARAMETER - InstanceId - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - - - ValueQualifier - http://acplt.org/Qualifier/ExampleQualifier3 - xs:dateTime - 2023-04-07T16:59:54.870123 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - xs:string - 978-8234-234-342 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - BillOfMaterial - - - en-US - An example bill of material submodel for the test application - - - de - Ein Beispiel-BillofMaterial-Submodel für eine Test-Anwendung - - - - 9 - http://acplt.org/AdministrativeInformationTemplates/TestAsset/BillOfMaterial - - http://acplt.org/Submodels/Assets/TestAsset/BillOfMaterial - Instance - - ModelReference - - - Submodel - http://acplt.org/SubmodelTemplates/BillOfMaterial - - - - - - PARAMETER - ExampleEntity - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - - - CONSTANT - ExampleProperty2 - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - SelfManagedEntity - http://acplt.org/TestAsset/ - - - TestKey - TestValue - - ExternalReference - - - GlobalReference - http://acplt.org/SpecificAssetId/ - - - - - - - - PARAMETER - ExampleEntity2 - - - en-US - Legally valid designation of the natural or judicial person which is directly responsible for the design, production, packaging and labeling of a product in respect to its being brought into circulation. - - - de - Bezeichnung für eine natürliche oder juristische Person, die für die Auslegung, Herstellung und Verpackung sowie die Etikettierung eines Produkts im Hinblick auf das 'Inverkehrbringen' im eigenen Namen verantwortlich ist - - - - ExternalReference - - - GlobalReference - http://opcfoundation.org/UA/DI/1.1/DeviceType/Serialnumber - - - - CoManagedEntity - - - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_Submodel - - - - - https://acplt.org/Test_Submodel - Instance - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ModelReference - - - ConceptDescription - https://acplt.org/Test_ConceptDescription - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty2 - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty2 - - - - - - PARAMETER - ExampleAnnotatedProperty - xs:string - exampleValue - - - PARAMETER - ExampleAnnotatedRange - xs:integer - 1 - 5 - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelCollection - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - AQIDBAU= - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - /TestFile.pdf - application/pdf - - - CONSTANT - ExampleFileURI - - - en-US - Details of the Asset Administration Shell — An example for an external file reference - - - de - Details of the Asset Administration Shell – Ein Beispiel für eine extern referenzierte Datei - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/Details-of-the-Asset-Administration-Shell-Part1.pdf?__blob=publicationFile&v=5 - application/pdf - - - PARAMETER - ExampleSubmodelList - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - Property - xs:string - - - CONSTANT - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/SupplementalId1 - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/SupplementalId2 - - - - - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - CONSTANT - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty2/SupplementalId - - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MultiLanguageProperty Element - - - - ExternalReference - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty/Referred - - - - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - en-US - Example value of a MultiLanguageProperty element - - - de - Beispielswert für ein MulitLanguageProperty-Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleMultiLanguageValueId - - - - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - 100 - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - - - - - https://acplt.org/Test_Submodel_Mandatory - Instance - - - ExampleRelationshipElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - ExampleAnnotatedRelationshipElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - ExampleOperation - - - ExampleCapability - - - ExampleBasicEventElement - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - input - off - - - ExampleSubmodelList - SubmodelElementCollection - - - - - ExampleBlob - - application/pdf - - - ExampleFile - application/pdf - - - PARAMETER - ExampleMultiLanguageProperty - - - PARAMETER - ExampleProperty - xs:string - - - PARAMETER - ExampleRange - xs:int - - - PARAMETER - ExampleReferenceElement - - - - - - - - - ExampleSubmodelList2 - Capability - - - - - https://acplt.org/Test_Submodel2_Mandatory - Instance - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_Submodel_Missing - Instance - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRange - xs:integer - 1 - 5 - - - PARAMETER - ExampleAnnotatedProperty - xs:string - exampleValue - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - ExampleProperty - - - de - BeispielProperty - - - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelCollection - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - AQIDBAU= - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - /TestFile.pdf - application/pdf - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MulitLanguageProperty Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - en-US - Example value of a MultiLanguageProperty element - - - de - Beispielswert für ein MulitLanguageProperty-Element - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - - - http://acplt.org/Qualifier/ExampleQualifier - xs:string - - - xs:string - exampleValue - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - 100 - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - - - - - TestSubmodel - - - en-US - An example submodel for the test application - - - de - Ein Beispiel-Teilmodell für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_Submodel_Template - Template - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelTemplates/ExampleSubmodel - - - - - - PARAMETER - ExampleRelationshipElement - - - en-US - Example RelationshipElement object - - - de - Beispiel RelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleAnnotatedRelationshipElement - - - en-US - Example AnnotatedRelationshipElement object - - - de - Beispiel AnnotatedRelationshipElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/RelationshipElements/ExampleAnnotatedRelationshipElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - - - PARAMETER - ExampleOperation - - - en-US - Example Operation object - - - de - Beispiel Operation Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Operations/ExampleOperation - - - - - - - - CONSTANT - ExamplePropertyInput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInput - - - - xs:string - - - - - - - - - CONSTANT - ExamplePropertyOutput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyOutput - - - - xs:string - - - - - - - - - CONSTANT - ExamplePropertyInOutput - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExamplePropertyInOutput - - - - xs:string - - - - - - - PARAMETER - ExampleCapability - - - en-US - Example Capability object - - - de - Beispiel Capability Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Capabilities/ExampleCapability - - - - - - PARAMETER - ExampleBasicEventElement - - - en-US - Example BasicEventElement object - - - de - Beispiel BasicEventElement Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Events/ExampleBasicEventElement - - - - - ModelReference - - - Submodel - http://acplt.org/Test_Submodel - - - Property - ExampleProperty - - - - output - on - ExampleTopic - - ModelReference - - - Submodel - http://acplt.org/ExampleMessageBroker - - - - 2022-11-12T23:50:23.123456+00:00 - PT0.000001S - P1Y2M3DT4H5M6.123456S - - - PARAMETER - ExampleSubmodelList - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - SubmodelElementCollection - - - PARAMETER - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - CONSTANT - ExampleProperty - - - en-US - Example Property object - - - de - Beispiel Property Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Properties/ExampleProperty - - - - xs:string - - - CONSTANT - ExampleMultiLanguageProperty - - - en-US - Example MultiLanguageProperty object - - - de - Beispiel MulitLanguageProperty Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/MultiLanguageProperties/ExampleMultiLanguageProperty - - - - - - PARAMETER - ExampleRange - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 100 - - - PARAMETER - ExampleRange2 - - - en-US - Example Range object - - - de - Beispiel Range Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Ranges/ExampleRange - - - - xs:int - 0 - - - PARAMETER - ExampleBlob - - - en-US - Example Blob object - - - de - Beispiel Blob Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Blobs/ExampleBlob - - - - - application/pdf - - - PARAMETER - ExampleFile - - - en-US - Example File object - - - de - Beispiel File Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/Files/ExampleFile - - - - application/pdf - - - PARAMETER - ExampleReferenceElement - - - en-US - Example Reference Element object - - - de - Beispiel Reference Element Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/ReferenceElements/ExampleReferenceElement - - - - - - - - PARAMETER - - - en-US - Example SubmodelElementCollection object - - - de - Beispiel SubmodelElementCollection Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - - - - - PARAMETER - ExampleSubmodelList2 - - - en-US - Example SubmodelElementList object - - - de - Beispiel SubmodelElementList Element - - - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementLists/ExampleSubmodelElementList - - - - true - - ExternalReference - - - GlobalReference - http://acplt.org/SubmodelElementCollections/ExampleSubmodelElementCollection - - - - Capability - - - - - - - TestConceptDescription - - - en-US - An example concept description for the test application - - - de - Ein Beispiel-ConceptDescription für eine Test-Anwendung - - - - - - - ExternalReference - - - GlobalReference - https://admin-shell.io/DataSpecificationTemplates/DataSpecificationIEC61360/3/0 - - - - - - - - de - Test Specification - - - en-US - TestSpecification - - - - - de - Test Spec - - - en-US - TestSpec - - - SpaceUnit - - ExternalReference - - - GlobalReference - http://acplt.org/Units/SpaceUnit - - - - http://acplt.org/DataSpec/ExampleDef - SU - REAL_MEASURE - - - de - Dies ist eine Data Specification für Testzwecke - - - en-US - This is a DataSpecification for testing purposes - - - M - - - - exampleValue - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId - - - - - - exampleValue2 - - ExternalReference - - - GlobalReference - http://acplt.org/ValueId/ExampleValueId2 - - - - - - - TEST - - true - false - false - true - - - - - - 9 - 0 - - ExternalReference - - - GlobalReference - http://acplt.org/AdministrativeInformation/Test_ConceptDescription - - - - http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription - - https://acplt.org/Test_ConceptDescription - - - ExternalReference - - - GlobalReference - http://acplt.org/DataSpecifications/ConceptDescriptions/TestConceptDescription - - - - - - - https://acplt.org/Test_ConceptDescription_Mandatory - - - TestConceptDescription - - - en-US - An example concept description for the test application - - - de - Ein Beispiel-ConceptDescription für eine Test-Anwendung - - - - 9 - 0 - - https://acplt.org/Test_ConceptDescription_Missing - - - diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/docProps/core.xml b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/docProps/core.xml deleted file mode 100644 index 4dc0b87c5..000000000 --- a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute_aasx/docProps/core.xml +++ /dev/null @@ -1 +0,0 @@ -2020-01-01T00:00:00PyI40AAS Testing FrameworkTest_DescriptionPyI40AAS Testing Framework Compliance Tool2020-01-01T00:00:011.0Test Title2.0.1 \ No newline at end of file diff --git a/test/compliance_tool/files/test_deserializable_aas_warning.json b/test/compliance_tool/files/test_deserializable_aas_warning.json deleted file mode 100644 index 35da52c24..000000000 --- a/test/compliance_tool/files/test_deserializable_aas_warning.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "assetAdministrationShells": [ - { - "id": "https://acplt.org/Test_AssetAdministrationShell", - "idShort": "TestAssetAdministrationShell", - "administration": { - "revision": "0" - }, - "modelType": "AssetAdministrationShell", - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/TestAsset/" - } - } - ] -} \ No newline at end of file diff --git a/test/compliance_tool/files/test_deserializable_aas_warning.xml b/test/compliance_tool/files/test_deserializable_aas_warning.xml deleted file mode 100644 index 53f72ab71..000000000 --- a/test/compliance_tool/files/test_deserializable_aas_warning.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - TestAssetAdministrationShell - - 0 - - https://acplt.org/Test_AssetAdministrationShell - - Instance - http://acplt.org/TestAsset/ - - - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_empty.json b/test/compliance_tool/files/test_empty.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/test/compliance_tool/files/test_empty.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/test/compliance_tool/files/test_empty.xml b/test/compliance_tool/files/test_empty.xml deleted file mode 100644 index 0329f4b5a..000000000 --- a/test/compliance_tool/files/test_empty.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/test/compliance_tool/files/test_empty_aasx/[Content_Types].xml b/test/compliance_tool/files/test_empty_aasx/[Content_Types].xml deleted file mode 100644 index 18520c7e8..000000000 --- a/test/compliance_tool/files/test_empty_aasx/[Content_Types].xml +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/test/compliance_tool/files/test_empty_aasx/_rels/.rels b/test/compliance_tool/files/test_empty_aasx/_rels/.rels deleted file mode 100644 index 9c5de6cf4..000000000 --- a/test/compliance_tool/files/test_empty_aasx/_rels/.rels +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/test/compliance_tool/files/test_empty_aasx/aasx/_rels/aasx-origin.rels b/test/compliance_tool/files/test_empty_aasx/aasx/_rels/aasx-origin.rels deleted file mode 100644 index 7b813240b..000000000 --- a/test/compliance_tool/files/test_empty_aasx/aasx/_rels/aasx-origin.rels +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/test/compliance_tool/files/test_empty_aasx/aasx/aasx-origin b/test/compliance_tool/files/test_empty_aasx/aasx/aasx-origin deleted file mode 100644 index e69de29bb..000000000 diff --git a/test/compliance_tool/files/test_empty_aasx/docProps/core.xml b/test/compliance_tool/files/test_empty_aasx/docProps/core.xml deleted file mode 100644 index 344bc075a..000000000 --- a/test/compliance_tool/files/test_empty_aasx/docProps/core.xml +++ /dev/null @@ -1 +0,0 @@ -2020-09-25T16:07:16.936996PyI40AAS Testing Framework \ No newline at end of file diff --git a/test/compliance_tool/files/test_not_deserializable.json b/test/compliance_tool/files/test_not_deserializable.json deleted file mode 100644 index 9a0c369d9..000000000 --- a/test/compliance_tool/files/test_not_deserializable.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "assetAdministrationShells": [], - "submodels": [] - "conceptDescriptions": [] -} \ No newline at end of file diff --git a/test/compliance_tool/files/test_not_deserializable_aas.json b/test/compliance_tool/files/test_not_deserializable_aas.json deleted file mode 100644 index cf239e8b7..000000000 --- a/test/compliance_tool/files/test_not_deserializable_aas.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "assetAdministrationShells": [ - { - "id": "https://acplt.org/Test_AssetAdministrationShell", - "idShort": "TestAssetAdministrationShell", - "modelType": "Test", - "assetInformation": { - "assetKind": "Instance", - "globalAssetId": "http://acplt.org/Test_Asset/" - } - } - ], - "submodels": [], - "conceptDescriptions": [] -} \ No newline at end of file diff --git a/test/compliance_tool/files/test_not_deserializable_aas.xml b/test/compliance_tool/files/test_not_deserializable_aas.xml deleted file mode 100644 index d673e80ec..000000000 --- a/test/compliance_tool/files/test_not_deserializable_aas.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - https://acplt.org/Test_Submodel2_Mandatory - Instance - - - - - - \ No newline at end of file diff --git a/test/compliance_tool/test_aas_compliance_tool.py b/test/compliance_tool/test_aas_compliance_tool.py deleted file mode 100644 index 8cd3004db..000000000 --- a/test/compliance_tool/test_aas_compliance_tool.py +++ /dev/null @@ -1,325 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -import datetime -import hashlib -import os -import subprocess -import sys -import unittest -import io - -import tempfile - -import basyx.aas.compliance_tool -from basyx.aas import model -from basyx.aas.adapter import aasx -from basyx.aas.adapter.json import read_aas_json_file -from basyx.aas.adapter.xml import read_aas_xml_file -from basyx.aas.examples.data import create_example -from basyx.aas.examples.data._helper import AASDataChecker - - -def _run_compliance_tool(*compliance_tool_args, **kwargs) -> subprocess.CompletedProcess: - """ - This function runs the compliance tool using subprocess.run() while adjusting the PYTHONPATH environment variable - and setting the stdout and stderr parameters of subprocess.run() to PIPE. - Positional arguments are passed to the compliance tool, while keyword arguments are passed to subprocess.run(). - """ - env = os.environ.copy() - env['PYTHONPATH'] = "{}:{}".format(os.environ.get('PYTHONPATH', ''), - os.path.join(os.path.dirname(basyx.__file__), os.pardir)) - compliance_tool_path = os.path.join(os.path.dirname(basyx.aas.compliance_tool.__file__), 'cli.py') - return subprocess.run([sys.executable, compliance_tool_path] + list(compliance_tool_args), stdout=subprocess.PIPE, - stderr=subprocess.PIPE, env=env, **kwargs) - - -class ComplianceToolTest(unittest.TestCase): - def test_parse_args(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - # test schema check - output = _run_compliance_tool("s") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: the following arguments are required: file_1', str(output.stderr)) - - output = _run_compliance_tool("s", os.path.join(test_file_path, "test_demo_full_example.json")) - self.assertNotEqual(0, output.returncode) - self.assertIn('error: one of the arguments --json --xml is required', str(output.stderr)) - - # test deserialisation check - output = _run_compliance_tool("d") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: the following arguments are required: file_1', str(output.stderr)) - - output = _run_compliance_tool("d", os.path.join(test_file_path, "test_demo_full_example.json")) - self.assertNotEqual(0, output.returncode) - self.assertIn('error: one of the arguments --json --xml is required', str(output.stderr)) - - output = _run_compliance_tool("d", os.path.join(test_file_path, "test_demo_full_example.json"), "--aasx") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: one of the arguments --json --xml is required', str(output.stderr)) - - # test example check - output = _run_compliance_tool("e") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: the following arguments are required: file_1', str(output.stderr)) - - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example.json")) - self.assertNotEqual(0, output.returncode) - self.assertIn('error: one of the arguments --json --xml is required', str(output.stderr)) - - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example.json"), "--aasx") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: one of the arguments --json --xml is required', str(output.stderr)) - - # test file check - output = _run_compliance_tool("f") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: the following arguments are required: file_1', str(output.stderr)) - - output = _run_compliance_tool("f", os.path.join(test_file_path, "test_demo_full_example.json")) - self.assertNotEqual(0, output.returncode) - self.assertIn('error: one of the arguments --json --xml is required', str(output.stderr)) - - output = _run_compliance_tool("f", os.path.join(test_file_path, "test_demo_full_example.json"), "--aasx") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: one of the arguments --json --xml is required', str(output.stderr)) - - output = _run_compliance_tool("f", os.path.join(test_file_path, "test_demo_full_example.json"), "--json") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: f or files requires two file path', str(output.stderr)) - - output = _run_compliance_tool("f", os.path.join(test_file_path, "test_demo_full_example.json"), - os.path.join(test_file_path, "test_demo_full_example.json")) - self.assertNotEqual(0, output.returncode) - self.assertIn('error: one of the arguments --json --xml is required', str(output.stderr)) - - # test verbose - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example.json"), "--json", "-v") - self.assertEqual(0, output.returncode) - self.assertNotIn('ERROR', str(output.stderr)) - self.assertNotIn('INFO', str(output.stdout)) - - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example.json"), "--json", "-v", - "-v") - self.assertEqual(0, output.returncode) - self.assertNotIn('ERROR', str(output.stderr)) - self.assertIn('INFO', str(output.stdout)) - - # test quite - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example.json"), "--json", "-q") - self.assertEqual(0, output.returncode) - self.assertEqual("b''", str(output.stdout)) - - # test logfile - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example.json"), "--json", "-l") - self.assertNotEqual(0, output.returncode) - self.assertIn('error: argument -l/--logfile: expected one argument', str(output.stderr)) - - # todo: add test for correct logfile - - def test_json_create_example(self) -> None: - file, filename = tempfile.mkstemp(suffix=".json") - os.close(file) - output = _run_compliance_tool("c", filename, "--json") - - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Create example data', str(output.stdout)) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Write data to file', str(output.stdout)) - - with open(filename, "r", encoding='utf-8-sig') as f: - json_object_store = read_aas_json_file(f, failsafe=False) - data = create_example() - checker = AASDataChecker(raise_immediately=True) - checker.check_object_store(json_object_store, data) - os.unlink(filename) - - def test_json_deserialization(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("d", os.path.join(test_file_path, "test_demo_full_example.json"), "--json") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Read file and check if it is deserializable', str(output.stdout)) - - def test_json_example(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example.json"), "--json") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Read file and check if it is deserializable', str(output.stdout)) - self.assertIn('SUCCESS: Check if data is equal to example data', str(output.stdout)) - - def test_json_file(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("f", os.path.join(test_file_path, "test_demo_full_example.json"), - os.path.join(test_file_path, "test_demo_full_example.json"), "--json") - - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open first file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - self.assertIn('SUCCESS: Open second file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - self.assertIn('SUCCESS: Check if data in files are equal', str(output.stdout)) - - def test_xml_create_example(self) -> None: - file, filename = tempfile.mkstemp(suffix=".xml") - os.close(file) - output = _run_compliance_tool("c", filename, "--xml") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Create example data', str(output.stdout)) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Write data to file', str(output.stdout)) - - with open(filename, "rb") as f: - xml_object_store = read_aas_xml_file(f, failsafe=False) - data = create_example() - checker = AASDataChecker(raise_immediately=True) - checker.check_object_store(xml_object_store, data) - os.unlink(filename) - - def test_xml_deseralization(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("d", os.path.join(test_file_path, "test_demo_full_example.xml"), "--xml") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Read file and check if it is deserializable', str(output.stdout)) - - def test_xml_example(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example.xml"), "--xml") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Read file and check if it is deserializable', str(output.stdout)) - self.assertIn('SUCCESS: Check if data is equal to example data', str(output.stdout)) - - def test_xml_file(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("f", os.path.join(test_file_path, "test_demo_full_example.xml"), - os.path.join(test_file_path, "test_demo_full_example.xml"), "--xml") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open first file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - self.assertIn('SUCCESS: Open second file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - self.assertIn('SUCCESS: Check if data in files are equal', str(output.stdout)) - - def test_aasx_create_example(self) -> None: - file, filename = tempfile.mkstemp(suffix=".aasx") - os.close(file) - output = _run_compliance_tool("c", filename, "--xml", "--aasx") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Create example data', str(output.stdout)) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Write data to file', str(output.stdout)) - - # Read AASX file - new_data: model.DictObjectStore[model.Identifiable] = model.DictObjectStore() - new_files = aasx.DictSupplementaryFileContainer() - with aasx.AASXReader(filename) as reader: - reader.read_into(new_data, new_files) - new_cp = reader.get_core_properties() - - # Check AAS objects - assert (isinstance(new_cp.created, datetime.datetime)) - self.assertIsInstance(new_cp.created, datetime.datetime) - self.assertAlmostEqual(new_cp.created, datetime.datetime(2020, 1, 1, 0, 0, 0), - delta=datetime.timedelta(milliseconds=20)) - self.assertEqual(new_cp.creator, "Eclipse BaSyx Python Testing Framework") - self.assertEqual(new_cp.description, "Test_Description") - self.assertEqual(new_cp.lastModifiedBy, "Eclipse BaSyx Python Testing Framework Compliance Tool") - assert (isinstance(new_cp.modified, datetime.datetime)) - self.assertAlmostEqual(new_cp.modified, datetime.datetime(2020, 1, 1, 0, 0, 1), - delta=datetime.timedelta(milliseconds=20)) - self.assertEqual(new_cp.revision, "1.0") - self.assertEqual(new_cp.version, "2.0.1") - self.assertEqual(new_cp.title, "Test Title") - - # Check files - self.assertEqual(new_files.get_content_type("/TestFile.pdf"), "application/pdf") - file_content = io.BytesIO() - new_files.write_file("/TestFile.pdf", file_content) - self.assertEqual(hashlib.sha1(file_content.getvalue()).hexdigest(), - "78450a66f59d74c073bf6858db340090ea72a8b1") - - os.unlink(filename) - - def test_aasx_deseralization_xml(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("d", os.path.join(test_file_path, "test_demo_full_example_xml.aasx"), "--xml", - "--aasx") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - - def test_aasx_example_xml(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example_xml.aasx"), "--xml", - "--aasx") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - self.assertIn('SUCCESS: Check if data is equal to example data', str(output.stdout)) - - def test_aasx_deseralization_json(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("d", os.path.join(test_file_path, "test_demo_full_example_json.aasx"), "--json", - "--aasx") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - - def test_aasx_example_json(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("e", os.path.join(test_file_path, "test_demo_full_example_json.aasx"), "--json", - "--aasx") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - self.assertIn('SUCCESS: Check if data is equal to example data', str(output.stdout)) - - def test_aasx_file(self) -> None: - test_file_path = os.path.join(os.path.dirname(__file__), 'files') - - output = _run_compliance_tool("f", os.path.join(test_file_path, "test_demo_full_example_xml.aasx"), - os.path.join(test_file_path, "test_demo_full_example_xml.aasx"), "--xml", - "--aasx") - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Open first file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - self.assertIn('SUCCESS: Open second file', str(output.stdout)) - self.assertIn('SUCCESS: Read file', str(output.stdout)) - self.assertIn('SUCCESS: Check if data in files are equal', str(output.stdout)) - - def test_logfile(self) -> None: - file, filename = tempfile.mkstemp(suffix=".json") - file2, filename2 = tempfile.mkstemp(suffix=".log") - os.close(file) - os.close(file2) - output = _run_compliance_tool("c", filename, "--json", "-v", "-v", "-l", filename2) - self.assertEqual(0, output.returncode) - self.assertIn('SUCCESS: Create example data', str(output.stdout)) - self.assertIn('SUCCESS: Open file', str(output.stdout)) - self.assertIn('SUCCESS: Write data to file', str(output.stdout)) - - with open(filename2, "r", encoding='utf-8-sig') as f: - data = f.read() - self.assertIn('SUCCESS: Create example data', data) - self.assertIn('SUCCESS: Open file', data) - self.assertIn('SUCCESS: Write data to file', data) - os.unlink(filename) - os.unlink(filename2) diff --git a/test/compliance_tool/test_compliance_check_aasx.py b/test/compliance_tool/test_compliance_check_aasx.py deleted file mode 100644 index 438f0bb0e..000000000 --- a/test/compliance_tool/test_compliance_check_aasx.py +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -import os -import unittest - -from basyx.aas.compliance_tool import compliance_check_aasx as compliance_tool -from basyx.aas.compliance_tool.state_manager import ComplianceToolStateManager, Status - - -class ComplianceToolAASXTest(unittest.TestCase): - def test_check_deserialization(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_1 = os.path.join(script_dir, 'files/test_not_found.aasx') - compliance_tool.check_deserialization(file_path_1, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.FAILED, manager.steps[0].status) - self.assertIn("No such file or directory", manager.format_step(0, verbose_level=1)) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[1].status) - - # Todo add more tests for checking wrong aasx files - - manager.steps = [] - file_path_5 = os.path.join(script_dir, 'files/test_demo_full_example_xml.aasx') - compliance_tool.check_deserialization(file_path_5, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - - manager.steps = [] - file_path_5 = os.path.join(script_dir, 'files/test_demo_full_example_json.aasx') - compliance_tool.check_deserialization(file_path_5, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - - def test_check_aas_example(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_2 = os.path.join(script_dir, 'files/test_demo_full_example_xml.aasx') - compliance_tool.check_aas_example(file_path_2, manager) - self.assertEqual(4, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example_json.aasx') - compliance_tool.check_aas_example(file_path_3, manager) - self.assertEqual(4, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - - manager.steps = [] - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example_xml_wrong_attribute.aasx') - compliance_tool.check_aas_example(file_path_4, manager) - self.assertEqual(4, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.FAILED, manager.steps[2].status) - self.assertEqual('FAILED: Check if data is equal to example data\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell (value=\'TestAssetAdministrationShell123\')', - manager.format_step(2, verbose_level=1)) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[3].status) - - def test_check_aasx_files_equivalence(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_1 = os.path.join(script_dir, 'files/test_demo_full_example_xml.aasx') - file_path_2 = os.path.join(script_dir, 'files/test_empty.aasx') - compliance_tool.check_aasx_files_equivalence(file_path_1, file_path_2, manager) - self.assertEqual(6, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.FAILED, manager.steps[4].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[5].status) - - manager.steps = [] - compliance_tool.check_aasx_files_equivalence(file_path_2, file_path_1, manager) - self.assertEqual(6, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.FAILED, manager.steps[4].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[5].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example_xml.aasx') - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example_json.aasx') - compliance_tool.check_aasx_files_equivalence(file_path_3, file_path_4, manager) - self.assertEqual(6, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.SUCCESS, manager.steps[4].status) - self.assertEqual(Status.SUCCESS, manager.steps[5].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example_xml.aasx') - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example_xml_wrong_attribute.aasx') - compliance_tool.check_aasx_files_equivalence(file_path_3, file_path_4, manager) - self.assertEqual(6, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.FAILED, manager.steps[4].status) - self.assertEqual('FAILED: Check if data in files are equal\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell123 (value=\'TestAssetAdministrationShell\')', - manager.format_step(4, verbose_level=1)) - - manager.steps = [] - compliance_tool.check_aasx_files_equivalence(file_path_4, file_path_3, manager) - self.assertEqual(6, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.FAILED, manager.steps[4].status) - self.assertEqual('FAILED: Check if data in files are equal\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell (value=\'TestAssetAdministrationShell123\')', - manager.format_step(4, verbose_level=1)) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[5].status) - - def test_check_schema(self): - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_2 = os.path.join(script_dir, 'files/test_demo_full_example_json.aasx') - compliance_tool.check_schema(file_path_2, manager) - self.assertEqual(4, len(manager.steps)) - for i in range(4): - self.assertEqual(Status.SUCCESS, manager.steps[i].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example_xml.aasx') - compliance_tool.check_schema(file_path_3, manager) - self.assertEqual(4, len(manager.steps)) - for i in range(4): - self.assertEqual(Status.SUCCESS, manager.steps[i].status) - - manager.steps = [] - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example_xml_wrong_attribute.aasx') - compliance_tool.check_schema(file_path_4, manager) - self.assertEqual(4, len(manager.steps)) - for i in range(4): - self.assertEqual(Status.SUCCESS, manager.steps[i].status) - - manager.steps = [] - file_path_5 = os.path.join(script_dir, 'files/test_empty.aasx') - compliance_tool.check_schema(file_path_5, manager) - self.assertEqual(2, len(manager.steps)) - for i in range(2): - self.assertEqual(Status.SUCCESS, manager.steps[i].status) diff --git a/test/compliance_tool/test_compliance_check_json.py b/test/compliance_tool/test_compliance_check_json.py deleted file mode 100644 index b6201d108..000000000 --- a/test/compliance_tool/test_compliance_check_json.py +++ /dev/null @@ -1,195 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -import os -import unittest - -import basyx.aas.compliance_tool.compliance_check_json as compliance_tool -from basyx.aas.compliance_tool.state_manager import ComplianceToolStateManager, Status - - -class ComplianceToolJsonTest(unittest.TestCase): - def test_check_schema(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - file_path_1 = os.path.join(script_dir, 'files/test_not_found.json') - compliance_tool.check_schema(file_path_1, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.FAILED, manager.steps[0].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[1].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[2].status) - self.assertIn("No such file or directory", manager.format_step(0, verbose_level=1)) - - manager.steps = [] - file_path_2 = os.path.join(script_dir, 'files/test_not_deserializable.json') - compliance_tool.check_schema(file_path_2, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[2].status) - self.assertIn("Expecting ',' delimiter: line 4 column 2 (char 54)", manager.format_step(1, verbose_level=1)) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_empty.json') - compliance_tool.check_schema(file_path_3, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - - manager.steps = [] - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example.json') - compliance_tool.check_schema(file_path_4, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - - manager.steps = [] - file_path_5 = os.path.join(script_dir, 'files/test_demo_full_example_wrong_attribute.json') - compliance_tool.check_schema(file_path_5, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - - def test_check_deserialization(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_1 = os.path.join(script_dir, 'files/test_not_found.json') - compliance_tool.check_deserialization(file_path_1, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.FAILED, manager.steps[0].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[1].status) - self.assertIn("No such file or directory", manager.format_step(0, verbose_level=1)) - - manager.steps = [] - file_path_2 = os.path.join(script_dir, 'files/test_not_deserializable_aas.json') - compliance_tool.check_deserialization(file_path_2, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertIn('Found JSON object with modelType="Test", which is not a known AAS class', - manager.format_step(1, verbose_level=1)) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_deserializable_aas_warning.json') - compliance_tool.check_deserialization(file_path_3, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertIn("Ignoring 'revision' attribute of AdministrativeInformation object due to missing 'version'", - manager.format_step(1, verbose_level=1)) - - manager.steps = [] - file_path_4 = os.path.join(script_dir, 'files/test_empty.json') - compliance_tool.check_deserialization(file_path_4, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - - manager.steps = [] - file_path_4 = os.path.join(script_dir, 'files/test_empty.json') - compliance_tool.check_deserialization(file_path_4, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - - def test_check_aas_example(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_2 = os.path.join(script_dir, 'files/test_demo_full_example.json') - compliance_tool.check_aas_example(file_path_2, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - - manager.steps = [] - file_path_1 = os.path.join(script_dir, 'files/test_not_deserializable_aas.json') - compliance_tool.check_aas_example(file_path_1, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[2].status) - self.assertIn('Found JSON object with modelType="Test", which is not a known AAS class', - manager.format_step(1, verbose_level=1)) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example_wrong_attribute.json') - compliance_tool.check_aas_example(file_path_3, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.FAILED, manager.steps[2].status) - self.assertEqual('FAILED: Check if data is equal to example data\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell (value=\'TestAssetAdministrationShell123\')', - manager.format_step(2, verbose_level=1)) - - def test_check_json_files_equivalence(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_1 = os.path.join(script_dir, 'files/test_not_deserializable_aas.json') - file_path_2 = os.path.join(script_dir, 'files/test_empty.json') - compliance_tool.check_json_files_equivalence(file_path_1, file_path_2, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[4].status) - - manager.steps = [] - compliance_tool.check_json_files_equivalence(file_path_2, file_path_1, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.FAILED, manager.steps[3].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[4].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example.json') - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example.json') - compliance_tool.check_json_files_equivalence(file_path_3, file_path_4, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.SUCCESS, manager.steps[4].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example.json') - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example_wrong_attribute.json') - compliance_tool.check_json_files_equivalence(file_path_3, file_path_4, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.FAILED, manager.steps[4].status) - self.assertEqual('FAILED: Check if data in files are equal\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell123 (value=\'TestAssetAdministrationShell\')', - manager.format_step(4, verbose_level=1)) - - manager.steps = [] - compliance_tool.check_json_files_equivalence(file_path_4, file_path_3, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.FAILED, manager.steps[4].status) - self.assertEqual('FAILED: Check if data in files are equal\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell (value=\'TestAssetAdministrationShell123\')', - manager.format_step(4, verbose_level=1)) diff --git a/test/compliance_tool/test_compliance_check_xml.py b/test/compliance_tool/test_compliance_check_xml.py deleted file mode 100644 index a1658e508..000000000 --- a/test/compliance_tool/test_compliance_check_xml.py +++ /dev/null @@ -1,187 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -import os -import unittest - -import basyx.aas.compliance_tool.compliance_check_xml as compliance_tool -from basyx.aas.compliance_tool.state_manager import ComplianceToolStateManager, Status - - -class ComplianceToolXmlTest(unittest.TestCase): - def test_check_schema(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - file_path_1 = os.path.join(script_dir, 'files/test_not_found.xml') - compliance_tool.check_schema(file_path_1, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.FAILED, manager.steps[0].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[1].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[2].status) - self.assertIn("No such file or directory", manager.format_step(0, verbose_level=1)) - - manager.steps = [] - file_path_2 = os.path.join(script_dir, 'files/test_empty.xml') - compliance_tool.check_schema(file_path_2, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example.xml') - compliance_tool.check_schema(file_path_3, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - - manager.steps = [] - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example_wrong_attribute.xml') - compliance_tool.check_schema(file_path_4, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - - def test_check_deserialization(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_1 = os.path.join(script_dir, 'files/test_not_found.xml') - compliance_tool.check_deserialization(file_path_1, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.FAILED, manager.steps[0].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[1].status) - self.assertIn("No such file or directory", manager.format_step(0, verbose_level=1)) - - manager.steps = [] - file_path_2 = os.path.join(script_dir, 'files/test_not_deserializable_aas.xml') - compliance_tool.check_deserialization(file_path_2, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertIn("child of aas:assetAdministrationShells", manager.format_step(1, verbose_level=1)) - self.assertIn("doesn't match the expected tag aas:assetAdministrationShell", - manager.format_step(1, verbose_level=1)) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_deserializable_aas_warning.xml') - compliance_tool.check_deserialization(file_path_3, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertIn("AASConstraintViolation: A revision requires a version", manager.format_step(1, verbose_level=1)) - - manager.steps = [] - file_path_4 = os.path.join(script_dir, 'files/test_empty.xml') - compliance_tool.check_deserialization(file_path_4, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - - manager.steps = [] - file_path_4 = os.path.join(script_dir, 'files/test_empty.xml') - compliance_tool.check_deserialization(file_path_4, manager) - self.assertEqual(2, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - - def test_check_aas_example(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_2 = os.path.join(script_dir, 'files/test_demo_full_example.xml') - compliance_tool.check_aas_example(file_path_2, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - - manager.steps = [] - file_path_1 = os.path.join(script_dir, 'files/test_not_deserializable_aas.xml') - compliance_tool.check_aas_example(file_path_1, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[2].status) - self.assertIn("child of aas:assetAdministrationShells", manager.format_step(1, verbose_level=1)) - self.assertIn("doesn't match the expected tag aas:assetAdministrationShell", - manager.format_step(1, verbose_level=1)) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example_wrong_attribute.xml') - compliance_tool.check_aas_example(file_path_3, manager) - self.assertEqual(3, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.FAILED, manager.steps[2].status) - self.assertEqual('FAILED: Check if data is equal to example data\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell (value=\'TestAssetAdministrationShell123\')', - manager.format_step(2, verbose_level=1)) - - def test_check_xml_files_equivalence(self) -> None: - manager = ComplianceToolStateManager() - script_dir = os.path.dirname(__file__) - - file_path_1 = os.path.join(script_dir, 'files/test_not_deserializable_aas.xml') - file_path_2 = os.path.join(script_dir, 'files/test_empty.xml') - compliance_tool.check_xml_files_equivalence(file_path_1, file_path_2, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.FAILED, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[4].status) - - manager.steps = [] - compliance_tool.check_xml_files_equivalence(file_path_2, file_path_1, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.FAILED, manager.steps[3].status) - self.assertEqual(Status.NOT_EXECUTED, manager.steps[4].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example.xml') - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example.xml') - compliance_tool.check_xml_files_equivalence(file_path_3, file_path_4, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.SUCCESS, manager.steps[4].status) - - manager.steps = [] - file_path_3 = os.path.join(script_dir, 'files/test_demo_full_example.xml') - file_path_4 = os.path.join(script_dir, 'files/test_demo_full_example_wrong_attribute.xml') - compliance_tool.check_xml_files_equivalence(file_path_3, file_path_4, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.FAILED, manager.steps[4].status) - self.assertEqual('FAILED: Check if data in files are equal\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell123 (value=\'TestAssetAdministrationShell\')', - manager.format_step(4, verbose_level=1)) - - manager.steps = [] - compliance_tool.check_xml_files_equivalence(file_path_4, file_path_3, manager) - self.assertEqual(5, len(manager.steps)) - self.assertEqual(Status.SUCCESS, manager.steps[0].status) - self.assertEqual(Status.SUCCESS, manager.steps[1].status) - self.assertEqual(Status.SUCCESS, manager.steps[2].status) - self.assertEqual(Status.SUCCESS, manager.steps[3].status) - self.assertEqual(Status.FAILED, manager.steps[4].status) - self.assertEqual('FAILED: Check if data in files are equal\n - ERROR: Attribute id_short of ' - 'AssetAdministrationShell[https://acplt.org/Test_AssetAdministrationShell] must be == ' - 'TestAssetAdministrationShell (value=\'TestAssetAdministrationShell123\')', - manager.format_step(4, verbose_level=1)) diff --git a/test/compliance_tool/test_state_manager.py b/test/compliance_tool/test_state_manager.py deleted file mode 100644 index fc1c8260e..000000000 --- a/test/compliance_tool/test_state_manager.py +++ /dev/null @@ -1,47 +0,0 @@ -# Copyright (c) 2020 the Eclipse BaSyx Authors -# -# This program and the accompanying materials are made available under the terms of the MIT License, available in -# the LICENSE file of this project. -# -# SPDX-License-Identifier: MIT -import logging -import unittest - -from basyx.aas.compliance_tool.state_manager import ComplianceToolStateManager, Status -from basyx.aas.examples.data._helper import DataChecker - - -class ComplianceToolStateManagerTest(unittest.TestCase): - def test_state(self) -> None: - manager = ComplianceToolStateManager() - manager.add_step('test') - self.assertEqual(Status.NOT_EXECUTED, manager.status) - manager.set_step_status(Status.SUCCESS) - self.assertEqual(Status.SUCCESS, manager.status) - manager.set_step_status(Status.FAILED) - self.assertEqual(Status.FAILED, manager.status) - - def test_logs(self) -> None: - manager = ComplianceToolStateManager() - manager.add_step('test') - manager.add_log_record(logging.LogRecord('x', logging.INFO, '', 0, 'test_msg', (), None)) - self.assertEqual(0, len(manager.get_error_logs_from_step(0))) - manager.add_log_record(logging.LogRecord('x', logging.ERROR, '', 0, 'test_msg_2', (), None)) - self.assertEqual(1, len(manager.get_error_logs_from_step(0))) - - manager.add_step('test 2') - checker = DataChecker(raise_immediately=False) - checker.check(2 == 2, 'Assertion test') - - manager.add_log_records_from_data_checker(checker) - self.assertEqual(0, len(manager.get_error_logs_from_step(1))) - self.assertEqual('SUCCESS: test 2', manager.format_step(1, 1)) - self.assertEqual('SUCCESS: test 2', manager.format_step(1, 1)) - self.assertIn('INFO: Assertion test ()', manager.format_step(1, 2)) - - checker.check(2 == 1, 'Assertion test 2') - manager.add_log_records_from_data_checker(checker) - self.assertEqual(1, len(manager.get_error_logs_from_step(1))) - self.assertEqual('FAILED: test 2', manager.format_step(1)) - self.assertIn('ERROR: Assertion test 2 ()', manager.format_step(1, 1)) - self.assertIn('INFO: Assertion test ()', manager.format_step(1, 2)) From d5af8aaf6568c91977832640104e5b0b6e2582ee Mon Sep 17 00:00:00 2001 From: s-heppner Date: Mon, 4 Mar 2024 13:23:32 +0100 Subject: [PATCH 2/4] Reintroduce schema files for testing XML and JSON serialization When we removed the schema files, we overlooked that JSON and XML serialization need them. We probably need to find a way of fetching them during runtime of the test to avoid having to host them in our repository. --- test/adapter/json/aasJSONSchema.json | 1528 ++++++++++++++++++ test/adapter/json/test_json_serialization.py | 7 +- test/adapter/xml/aasXMLSchema.xsd | 1344 +++++++++++++++ test/adapter/xml/test_xml_serialization.py | 6 +- 4 files changed, 2882 insertions(+), 3 deletions(-) create mode 100644 test/adapter/json/aasJSONSchema.json create mode 100644 test/adapter/xml/aasXMLSchema.xsd diff --git a/test/adapter/json/aasJSONSchema.json b/test/adapter/json/aasJSONSchema.json new file mode 100644 index 000000000..f48db4d17 --- /dev/null +++ b/test/adapter/json/aasJSONSchema.json @@ -0,0 +1,1528 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "AssetAdministrationShellEnvironment", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/Environment" + } + ], + "$id": "https://admin-shell.io/aas/3/0", + "definitions": { + "AasSubmodelElements": { + "type": "string", + "enum": [ + "AnnotatedRelationshipElement", + "BasicEventElement", + "Blob", + "Capability", + "DataElement", + "Entity", + "EventElement", + "File", + "MultiLanguageProperty", + "Operation", + "Property", + "Range", + "ReferenceElement", + "RelationshipElement", + "SubmodelElement", + "SubmodelElementCollection", + "SubmodelElementList" + ] + }, + "AbstractLangString": { + "type": "object", + "properties": { + "language": { + "type": "string", + "pattern": "^(([a-zA-Z]{2,3}(-[a-zA-Z]{3}(-[a-zA-Z]{3}){2})?|[a-zA-Z]{4}|[a-zA-Z]{5,8})(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-(([a-zA-Z0-9]){5,8}|[0-9]([a-zA-Z0-9]){3}))*(-[0-9A-WY-Za-wy-z](-([a-zA-Z0-9]){2,8})+)*(-[xX](-([a-zA-Z0-9]){1,8})+)?|[xX](-([a-zA-Z0-9]){1,8})+|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$" + }, + "text": { + "type": "string", + "minLength": 1, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + } + }, + "required": [ + "language", + "text" + ] + }, + "AdministrativeInformation": { + "allOf": [ + { + "$ref": "#/definitions/HasDataSpecification" + }, + { + "properties": { + "version": { + "type": "string", + "allOf": [ + { + "minLength": 1, + "maxLength": 4 + }, + { + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + { + "pattern": "^(0|[1-9][0-9]*)$" + } + ] + }, + "revision": { + "type": "string", + "allOf": [ + { + "minLength": 1, + "maxLength": 4 + }, + { + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + { + "pattern": "^(0|[1-9][0-9]*)$" + } + ] + }, + "creator": { + "$ref": "#/definitions/Reference" + }, + "templateId": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + } + } + } + ] + }, + "AnnotatedRelationshipElement": { + "allOf": [ + { + "$ref": "#/definitions/RelationshipElement_abstract" + }, + { + "properties": { + "annotations": { + "type": "array", + "items": { + "$ref": "#/definitions/DataElement_choice" + }, + "minItems": 1 + }, + "modelType": { + "const": "AnnotatedRelationshipElement" + } + } + } + ] + }, + "AssetAdministrationShell": { + "allOf": [ + { + "$ref": "#/definitions/Identifiable" + }, + { + "$ref": "#/definitions/HasDataSpecification" + }, + { + "properties": { + "derivedFrom": { + "$ref": "#/definitions/Reference" + }, + "assetInformation": { + "$ref": "#/definitions/AssetInformation" + }, + "submodels": { + "type": "array", + "items": { + "$ref": "#/definitions/Reference" + }, + "minItems": 1 + }, + "modelType": { + "const": "AssetAdministrationShell" + } + }, + "required": [ + "assetInformation" + ] + } + ] + }, + "AssetInformation": { + "type": "object", + "properties": { + "assetKind": { + "$ref": "#/definitions/AssetKind" + }, + "globalAssetId": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "specificAssetIds": { + "type": "array", + "items": { + "$ref": "#/definitions/SpecificAssetId" + }, + "minItems": 1 + }, + "assetType": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "defaultThumbnail": { + "$ref": "#/definitions/Resource" + } + }, + "required": [ + "assetKind" + ] + }, + "AssetKind": { + "type": "string", + "enum": [ + "Instance", + "NotApplicable", + "Type" + ] + }, + "BasicEventElement": { + "allOf": [ + { + "$ref": "#/definitions/EventElement" + }, + { + "properties": { + "observed": { + "$ref": "#/definitions/Reference" + }, + "direction": { + "$ref": "#/definitions/Direction" + }, + "state": { + "$ref": "#/definitions/StateOfEvent" + }, + "messageTopic": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "messageBroker": { + "$ref": "#/definitions/Reference" + }, + "lastUpdate": { + "type": "string", + "pattern": "^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\\.[0-9]+)?)|24:00:00(\\.0+)?)(Z|\\+00:00|-00:00)$" + }, + "minInterval": { + "type": "string", + "pattern": "^-?P((([0-9]+Y([0-9]+M)?([0-9]+D)?|([0-9]+M)([0-9]+D)?|([0-9]+D))(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S)))?)|(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S))))$" + }, + "maxInterval": { + "type": "string", + "pattern": "^-?P((([0-9]+Y([0-9]+M)?([0-9]+D)?|([0-9]+M)([0-9]+D)?|([0-9]+D))(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S)))?)|(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S))))$" + }, + "modelType": { + "const": "BasicEventElement" + } + }, + "required": [ + "observed", + "direction", + "state" + ] + } + ] + }, + "Blob": { + "allOf": [ + { + "$ref": "#/definitions/DataElement" + }, + { + "properties": { + "value": { + "type": "string", + "contentEncoding": "base64" + }, + "contentType": { + "type": "string", + "allOf": [ + { + "minLength": 1, + "maxLength": 100 + }, + { + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + { + "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" + } + ] + }, + "modelType": { + "const": "Blob" + } + }, + "required": [ + "contentType" + ] + } + ] + }, + "Capability": { + "allOf": [ + { + "$ref": "#/definitions/SubmodelElement" + }, + { + "properties": { + "modelType": { + "const": "Capability" + } + } + } + ] + }, + "ConceptDescription": { + "allOf": [ + { + "$ref": "#/definitions/Identifiable" + }, + { + "$ref": "#/definitions/HasDataSpecification" + }, + { + "properties": { + "isCaseOf": { + "type": "array", + "items": { + "$ref": "#/definitions/Reference" + }, + "minItems": 1 + }, + "modelType": { + "const": "ConceptDescription" + } + } + } + ] + }, + "DataElement": { + "$ref": "#/definitions/SubmodelElement" + }, + "DataElement_choice": { + "oneOf": [ + { + "$ref": "#/definitions/Blob" + }, + { + "$ref": "#/definitions/File" + }, + { + "$ref": "#/definitions/MultiLanguageProperty" + }, + { + "$ref": "#/definitions/Property" + }, + { + "$ref": "#/definitions/Range" + }, + { + "$ref": "#/definitions/ReferenceElement" + } + ] + }, + "DataSpecificationContent": { + "type": "object", + "properties": { + "modelType": { + "$ref": "#/definitions/ModelType" + } + }, + "required": [ + "modelType" + ] + }, + "DataSpecificationContent_choice": { + "oneOf": [ + { + "$ref": "#/definitions/DataSpecificationIec61360" + } + ] + }, + "DataSpecificationIec61360": { + "allOf": [ + { + "$ref": "#/definitions/DataSpecificationContent" + }, + { + "properties": { + "preferredName": { + "type": "array", + "items": { + "$ref": "#/definitions/LangStringPreferredNameTypeIec61360" + }, + "minItems": 1 + }, + "shortName": { + "type": "array", + "items": { + "$ref": "#/definitions/LangStringShortNameTypeIec61360" + }, + "minItems": 1 + }, + "unit": { + "type": "string", + "minLength": 1, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "unitId": { + "$ref": "#/definitions/Reference" + }, + "sourceOfDefinition": { + "type": "string", + "minLength": 1, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "symbol": { + "type": "string", + "minLength": 1, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "dataType": { + "$ref": "#/definitions/DataTypeIec61360" + }, + "definition": { + "type": "array", + "items": { + "$ref": "#/definitions/LangStringDefinitionTypeIec61360" + }, + "minItems": 1 + }, + "valueFormat": { + "type": "string", + "minLength": 1, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "valueList": { + "$ref": "#/definitions/ValueList" + }, + "value": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "levelType": { + "$ref": "#/definitions/LevelType" + }, + "modelType": { + "const": "DataSpecificationIec61360" + } + }, + "required": [ + "preferredName" + ] + } + ] + }, + "DataTypeDefXsd": { + "type": "string", + "enum": [ + "xs:anyURI", + "xs:base64Binary", + "xs:boolean", + "xs:byte", + "xs:date", + "xs:dateTime", + "xs:decimal", + "xs:double", + "xs:duration", + "xs:float", + "xs:gDay", + "xs:gMonth", + "xs:gMonthDay", + "xs:gYear", + "xs:gYearMonth", + "xs:hexBinary", + "xs:int", + "xs:integer", + "xs:long", + "xs:negativeInteger", + "xs:nonNegativeInteger", + "xs:nonPositiveInteger", + "xs:positiveInteger", + "xs:short", + "xs:string", + "xs:time", + "xs:unsignedByte", + "xs:unsignedInt", + "xs:unsignedLong", + "xs:unsignedShort" + ] + }, + "DataTypeIec61360": { + "type": "string", + "enum": [ + "BLOB", + "BOOLEAN", + "DATE", + "FILE", + "HTML", + "INTEGER_COUNT", + "INTEGER_CURRENCY", + "INTEGER_MEASURE", + "IRDI", + "IRI", + "RATIONAL", + "RATIONAL_MEASURE", + "REAL_COUNT", + "REAL_CURRENCY", + "REAL_MEASURE", + "STRING", + "STRING_TRANSLATABLE", + "TIME", + "TIMESTAMP" + ] + }, + "Direction": { + "type": "string", + "enum": [ + "input", + "output" + ] + }, + "EmbeddedDataSpecification": { + "type": "object", + "properties": { + "dataSpecification": { + "$ref": "#/definitions/Reference" + }, + "dataSpecificationContent": { + "$ref": "#/definitions/DataSpecificationContent_choice" + } + }, + "required": [ + "dataSpecification", + "dataSpecificationContent" + ] + }, + "Entity": { + "allOf": [ + { + "$ref": "#/definitions/SubmodelElement" + }, + { + "properties": { + "statements": { + "type": "array", + "items": { + "$ref": "#/definitions/SubmodelElement_choice" + }, + "minItems": 1 + }, + "entityType": { + "$ref": "#/definitions/EntityType" + }, + "globalAssetId": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "specificAssetIds": { + "type": "array", + "items": { + "$ref": "#/definitions/SpecificAssetId" + }, + "minItems": 1 + }, + "modelType": { + "const": "Entity" + } + }, + "required": [ + "entityType" + ] + } + ] + }, + "EntityType": { + "type": "string", + "enum": [ + "CoManagedEntity", + "SelfManagedEntity" + ] + }, + "Environment": { + "type": "object", + "properties": { + "assetAdministrationShells": { + "type": "array", + "items": { + "$ref": "#/definitions/AssetAdministrationShell" + }, + "minItems": 1 + }, + "submodels": { + "type": "array", + "items": { + "$ref": "#/definitions/Submodel" + }, + "minItems": 1 + }, + "conceptDescriptions": { + "type": "array", + "items": { + "$ref": "#/definitions/ConceptDescription" + }, + "minItems": 1 + } + } + }, + "EventElement": { + "$ref": "#/definitions/SubmodelElement" + }, + "EventPayload": { + "type": "object", + "properties": { + "source": { + "$ref": "#/definitions/Reference" + }, + "sourceSemanticId": { + "$ref": "#/definitions/Reference" + }, + "observableReference": { + "$ref": "#/definitions/Reference" + }, + "observableSemanticId": { + "$ref": "#/definitions/Reference" + }, + "topic": { + "type": "string", + "minLength": 1, + "maxLength": 255, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "subjectId": { + "$ref": "#/definitions/Reference" + }, + "timeStamp": { + "type": "string", + "pattern": "^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\\.[0-9]+)?)|24:00:00(\\.0+)?)(Z|\\+00:00|-00:00)$" + }, + "payload": { + "type": "string", + "contentEncoding": "base64" + } + }, + "required": [ + "source", + "observableReference", + "timeStamp" + ] + }, + "Extension": { + "allOf": [ + { + "$ref": "#/definitions/HasSemantics" + }, + { + "properties": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "valueType": { + "$ref": "#/definitions/DataTypeDefXsd" + }, + "value": { + "type": "string" + }, + "refersTo": { + "type": "array", + "items": { + "$ref": "#/definitions/Reference" + }, + "minItems": 1 + } + }, + "required": [ + "name" + ] + } + ] + }, + "File": { + "allOf": [ + { + "$ref": "#/definitions/DataElement" + }, + { + "properties": { + "value": { + "type": "string" + }, + "contentType": { + "type": "string", + "allOf": [ + { + "minLength": 1, + "maxLength": 100 + }, + { + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + { + "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" + } + ] + }, + "modelType": { + "const": "File" + } + }, + "required": [ + "contentType" + ] + } + ] + }, + "HasDataSpecification": { + "type": "object", + "properties": { + "embeddedDataSpecifications": { + "type": "array", + "items": { + "$ref": "#/definitions/EmbeddedDataSpecification" + }, + "minItems": 1 + } + } + }, + "HasExtensions": { + "type": "object", + "properties": { + "extensions": { + "type": "array", + "items": { + "$ref": "#/definitions/Extension" + }, + "minItems": 1 + } + } + }, + "HasKind": { + "type": "object", + "properties": { + "kind": { + "$ref": "#/definitions/ModellingKind" + } + } + }, + "HasSemantics": { + "type": "object", + "properties": { + "semanticId": { + "$ref": "#/definitions/Reference" + }, + "supplementalSemanticIds": { + "type": "array", + "items": { + "$ref": "#/definitions/Reference" + }, + "minItems": 1 + } + } + }, + "Identifiable": { + "allOf": [ + { + "$ref": "#/definitions/Referable" + }, + { + "properties": { + "administration": { + "$ref": "#/definitions/AdministrativeInformation" + }, + "id": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + } + }, + "required": [ + "id" + ] + } + ] + }, + "Key": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/KeyTypes" + }, + "value": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + } + }, + "required": [ + "type", + "value" + ] + }, + "KeyTypes": { + "type": "string", + "enum": [ + "AnnotatedRelationshipElement", + "AssetAdministrationShell", + "BasicEventElement", + "Blob", + "Capability", + "ConceptDescription", + "DataElement", + "Entity", + "EventElement", + "File", + "FragmentReference", + "GlobalReference", + "Identifiable", + "MultiLanguageProperty", + "Operation", + "Property", + "Range", + "Referable", + "ReferenceElement", + "RelationshipElement", + "Submodel", + "SubmodelElement", + "SubmodelElementCollection", + "SubmodelElementList" + ] + }, + "LangStringDefinitionTypeIec61360": { + "allOf": [ + { + "$ref": "#/definitions/AbstractLangString" + }, + { + "properties": { + "text": { + "maxLength": 1023 + } + } + } + ] + }, + "LangStringNameType": { + "allOf": [ + { + "$ref": "#/definitions/AbstractLangString" + }, + { + "properties": { + "text": { + "maxLength": 128 + } + } + } + ] + }, + "LangStringPreferredNameTypeIec61360": { + "allOf": [ + { + "$ref": "#/definitions/AbstractLangString" + }, + { + "properties": { + "text": { + "maxLength": 255 + } + } + } + ] + }, + "LangStringShortNameTypeIec61360": { + "allOf": [ + { + "$ref": "#/definitions/AbstractLangString" + }, + { + "properties": { + "text": { + "maxLength": 18 + } + } + } + ] + }, + "LangStringTextType": { + "allOf": [ + { + "$ref": "#/definitions/AbstractLangString" + }, + { + "properties": { + "text": { + "maxLength": 1023 + } + } + } + ] + }, + "LevelType": { + "type": "object", + "properties": { + "min": { + "type": "boolean" + }, + "nom": { + "type": "boolean" + }, + "typ": { + "type": "boolean" + }, + "max": { + "type": "boolean" + } + }, + "required": [ + "min", + "nom", + "typ", + "max" + ] + }, + "ModelType": { + "type": "string", + "enum": [ + "AnnotatedRelationshipElement", + "AssetAdministrationShell", + "BasicEventElement", + "Blob", + "Capability", + "ConceptDescription", + "DataSpecificationIec61360", + "Entity", + "File", + "MultiLanguageProperty", + "Operation", + "Property", + "Range", + "ReferenceElement", + "RelationshipElement", + "Submodel", + "SubmodelElementCollection", + "SubmodelElementList" + ] + }, + "ModellingKind": { + "type": "string", + "enum": [ + "Instance", + "Template" + ] + }, + "MultiLanguageProperty": { + "allOf": [ + { + "$ref": "#/definitions/DataElement" + }, + { + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/LangStringTextType" + }, + "minItems": 1 + }, + "valueId": { + "$ref": "#/definitions/Reference" + }, + "modelType": { + "const": "MultiLanguageProperty" + } + } + } + ] + }, + "Operation": { + "allOf": [ + { + "$ref": "#/definitions/SubmodelElement" + }, + { + "properties": { + "inputVariables": { + "type": "array", + "items": { + "$ref": "#/definitions/OperationVariable" + }, + "minItems": 1 + }, + "outputVariables": { + "type": "array", + "items": { + "$ref": "#/definitions/OperationVariable" + }, + "minItems": 1 + }, + "inoutputVariables": { + "type": "array", + "items": { + "$ref": "#/definitions/OperationVariable" + }, + "minItems": 1 + }, + "modelType": { + "const": "Operation" + } + } + } + ] + }, + "OperationVariable": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/SubmodelElement_choice" + } + }, + "required": [ + "value" + ] + }, + "Property": { + "allOf": [ + { + "$ref": "#/definitions/DataElement" + }, + { + "properties": { + "valueType": { + "$ref": "#/definitions/DataTypeDefXsd" + }, + "value": { + "type": "string" + }, + "valueId": { + "$ref": "#/definitions/Reference" + }, + "modelType": { + "const": "Property" + } + }, + "required": [ + "valueType" + ] + } + ] + }, + "Qualifiable": { + "type": "object", + "properties": { + "qualifiers": { + "type": "array", + "items": { + "$ref": "#/definitions/Qualifier" + }, + "minItems": 1 + }, + "modelType": { + "$ref": "#/definitions/ModelType" + } + }, + "required": [ + "modelType" + ] + }, + "Qualifier": { + "allOf": [ + { + "$ref": "#/definitions/HasSemantics" + }, + { + "properties": { + "kind": { + "$ref": "#/definitions/QualifierKind" + }, + "type": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "valueType": { + "$ref": "#/definitions/DataTypeDefXsd" + }, + "value": { + "type": "string" + }, + "valueId": { + "$ref": "#/definitions/Reference" + } + }, + "required": [ + "type", + "valueType" + ] + } + ] + }, + "QualifierKind": { + "type": "string", + "enum": [ + "ConceptQualifier", + "TemplateQualifier", + "ValueQualifier" + ] + }, + "Range": { + "allOf": [ + { + "$ref": "#/definitions/DataElement" + }, + { + "properties": { + "valueType": { + "$ref": "#/definitions/DataTypeDefXsd" + }, + "min": { + "type": "string" + }, + "max": { + "type": "string" + }, + "modelType": { + "const": "Range" + } + }, + "required": [ + "valueType" + ] + } + ] + }, + "Referable": { + "allOf": [ + { + "$ref": "#/definitions/HasExtensions" + }, + { + "properties": { + "category": { + "type": "string", + "minLength": 1, + "maxLength": 128, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "idShort": { + "type": "string", + "allOf": [ + { + "minLength": 1, + "maxLength": 128 + }, + { + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + { + "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$" + } + ] + }, + "displayName": { + "type": "array", + "items": { + "$ref": "#/definitions/LangStringNameType" + }, + "minItems": 1 + }, + "description": { + "type": "array", + "items": { + "$ref": "#/definitions/LangStringTextType" + }, + "minItems": 1 + }, + "modelType": { + "$ref": "#/definitions/ModelType" + } + }, + "required": [ + "modelType" + ] + } + ] + }, + "Reference": { + "type": "object", + "properties": { + "type": { + "$ref": "#/definitions/ReferenceTypes" + }, + "referredSemanticId": { + "$ref": "#/definitions/Reference" + }, + "keys": { + "type": "array", + "items": { + "$ref": "#/definitions/Key" + }, + "minItems": 1 + } + }, + "required": [ + "type", + "keys" + ] + }, + "ReferenceElement": { + "allOf": [ + { + "$ref": "#/definitions/DataElement" + }, + { + "properties": { + "value": { + "$ref": "#/definitions/Reference" + }, + "modelType": { + "const": "ReferenceElement" + } + } + } + ] + }, + "ReferenceTypes": { + "type": "string", + "enum": [ + "ExternalReference", + "ModelReference" + ] + }, + "RelationshipElement": { + "allOf": [ + { + "$ref": "#/definitions/RelationshipElement_abstract" + }, + { + "properties": { + "modelType": { + "const": "RelationshipElement" + } + } + } + ] + }, + "RelationshipElement_abstract": { + "allOf": [ + { + "$ref": "#/definitions/SubmodelElement" + }, + { + "properties": { + "first": { + "$ref": "#/definitions/Reference" + }, + "second": { + "$ref": "#/definitions/Reference" + } + }, + "required": [ + "first", + "second" + ] + } + ] + }, + "RelationshipElement_choice": { + "oneOf": [ + { + "$ref": "#/definitions/RelationshipElement" + }, + { + "$ref": "#/definitions/AnnotatedRelationshipElement" + } + ] + }, + "Resource": { + "type": "object", + "properties": { + "path": { + "type": "string", + "allOf": [ + { + "minLength": 1, + "maxLength": 2000 + }, + { + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + { + "pattern": "^file:(//((localhost|(\\[((([0-9A-Fa-f]{1,4}:){6}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|::([0-9A-Fa-f]{1,4}:){5}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|([0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){4}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){3}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){2}[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){2}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){4}[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(([0-9A-Fa-f]{1,4}:){6}[0-9A-Fa-f]{1,4})?::)|[vV][0-9A-Fa-f]+\\.([a-zA-Z0-9\\-._~]|[!$&'()*+,;=]|:)+)\\]|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=])*)))?/((([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))+(/(([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))*)*)?|/((([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))+(/(([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))*)*)?)$" + } + ] + }, + "contentType": { + "type": "string", + "allOf": [ + { + "minLength": 1, + "maxLength": 100 + }, + { + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + { + "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" + } + ] + } + }, + "required": [ + "path" + ] + }, + "SpecificAssetId": { + "allOf": [ + { + "$ref": "#/definitions/HasSemantics" + }, + { + "properties": { + "name": { + "type": "string", + "minLength": 1, + "maxLength": 64, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "value": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "externalSubjectId": { + "$ref": "#/definitions/Reference" + } + }, + "required": [ + "name", + "value" + ] + } + ] + }, + "StateOfEvent": { + "type": "string", + "enum": [ + "off", + "on" + ] + }, + "Submodel": { + "allOf": [ + { + "$ref": "#/definitions/Identifiable" + }, + { + "$ref": "#/definitions/HasKind" + }, + { + "$ref": "#/definitions/HasSemantics" + }, + { + "$ref": "#/definitions/Qualifiable" + }, + { + "$ref": "#/definitions/HasDataSpecification" + }, + { + "properties": { + "submodelElements": { + "type": "array", + "items": { + "$ref": "#/definitions/SubmodelElement_choice" + }, + "minItems": 1 + }, + "modelType": { + "const": "Submodel" + } + } + } + ] + }, + "SubmodelElement": { + "allOf": [ + { + "$ref": "#/definitions/Referable" + }, + { + "$ref": "#/definitions/HasSemantics" + }, + { + "$ref": "#/definitions/Qualifiable" + }, + { + "$ref": "#/definitions/HasDataSpecification" + } + ] + }, + "SubmodelElementCollection": { + "allOf": [ + { + "$ref": "#/definitions/SubmodelElement" + }, + { + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/SubmodelElement_choice" + }, + "minItems": 1 + }, + "modelType": { + "const": "SubmodelElementCollection" + } + } + } + ] + }, + "SubmodelElementList": { + "allOf": [ + { + "$ref": "#/definitions/SubmodelElement" + }, + { + "properties": { + "orderRelevant": { + "type": "boolean" + }, + "semanticIdListElement": { + "$ref": "#/definitions/Reference" + }, + "typeValueListElement": { + "$ref": "#/definitions/AasSubmodelElements" + }, + "valueTypeListElement": { + "$ref": "#/definitions/DataTypeDefXsd" + }, + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/SubmodelElement_choice" + }, + "minItems": 1 + }, + "modelType": { + "const": "SubmodelElementList" + } + }, + "required": [ + "typeValueListElement" + ] + } + ] + }, + "SubmodelElement_choice": { + "oneOf": [ + { + "$ref": "#/definitions/RelationshipElement" + }, + { + "$ref": "#/definitions/AnnotatedRelationshipElement" + }, + { + "$ref": "#/definitions/BasicEventElement" + }, + { + "$ref": "#/definitions/Blob" + }, + { + "$ref": "#/definitions/Capability" + }, + { + "$ref": "#/definitions/Entity" + }, + { + "$ref": "#/definitions/File" + }, + { + "$ref": "#/definitions/MultiLanguageProperty" + }, + { + "$ref": "#/definitions/Operation" + }, + { + "$ref": "#/definitions/Property" + }, + { + "$ref": "#/definitions/Range" + }, + { + "$ref": "#/definitions/ReferenceElement" + }, + { + "$ref": "#/definitions/SubmodelElementCollection" + }, + { + "$ref": "#/definitions/SubmodelElementList" + } + ] + }, + "ValueList": { + "type": "object", + "properties": { + "valueReferencePairs": { + "type": "array", + "items": { + "$ref": "#/definitions/ValueReferencePair" + }, + "minItems": 1 + } + }, + "required": [ + "valueReferencePairs" + ] + }, + "ValueReferencePair": { + "type": "object", + "properties": { + "value": { + "type": "string", + "minLength": 1, + "maxLength": 2000, + "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" + }, + "valueId": { + "$ref": "#/definitions/Reference" + } + }, + "required": [ + "value", + "valueId" + ] + } + } +} \ No newline at end of file diff --git a/test/adapter/json/test_json_serialization.py b/test/adapter/json/test_json_serialization.py index 3195c8a06..90f67b0b4 100644 --- a/test/adapter/json/test_json_serialization.py +++ b/test/adapter/json/test_json_serialization.py @@ -4,13 +4,13 @@ # the LICENSE file of this project. # # SPDX-License-Identifier: MIT - +import os import io import unittest import json from basyx.aas import model -from basyx.aas.adapter.json import AASToJsonEncoder, StrippedAASToJsonEncoder, write_aas_json_file, JSON_SCHEMA_FILE +from basyx.aas.adapter.json import AASToJsonEncoder, StrippedAASToJsonEncoder, write_aas_json_file from jsonschema import validate # type: ignore from typing import Set, Union @@ -18,6 +18,9 @@ example_aas_mandatory_attributes, example_submodel_template, create_example +JSON_SCHEMA_FILE = os.path.join(os.path.dirname(__file__), 'aasJSONSchema.json') + + class JsonSerializationTest(unittest.TestCase): def test_serialize_object(self) -> None: test_object = model.Property("test_id_short", model.datatypes.String, category="PARAMETER", diff --git a/test/adapter/xml/aasXMLSchema.xsd b/test/adapter/xml/aasXMLSchema.xsd new file mode 100644 index 000000000..25d7a52b9 --- /dev/null +++ b/test/adapter/xml/aasXMLSchema.xsd @@ -0,0 +1,1344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/adapter/xml/test_xml_serialization.py b/test/adapter/xml/test_xml_serialization.py index c75bfeaa8..178c130f6 100644 --- a/test/adapter/xml/test_xml_serialization.py +++ b/test/adapter/xml/test_xml_serialization.py @@ -5,17 +5,21 @@ # # SPDX-License-Identifier: MIT import io +import os import unittest from lxml import etree # type: ignore from basyx.aas import model -from basyx.aas.adapter.xml import write_aas_xml_file, xml_serialization, XML_SCHEMA_FILE +from basyx.aas.adapter.xml import write_aas_xml_file, xml_serialization from basyx.aas.examples.data import example_aas_missing_attributes, example_aas, \ example_submodel_template, example_aas_mandatory_attributes +XML_SCHEMA_FILE = os.path.join(os.path.dirname(__file__), 'aasXMLSchema.xsd') + + class XMLSerializationTest(unittest.TestCase): def test_serialize_object(self) -> None: test_object = model.Property("test_id_short", From ef0c7a52c04102707dfcb0326a0fb4b17d4052e8 Mon Sep 17 00:00:00 2001 From: s-heppner Date: Mon, 4 Mar 2024 13:34:22 +0100 Subject: [PATCH 3/4] Remove references to compliance tool from the documentation --- .../compliance_tool/compliance_check_aasx.rst | 4 ---- .../compliance_tool/compliance_check_json.rst | 4 ---- .../compliance_tool/compliance_check_xml.rst | 4 ---- docs/source/compliance_tool/index.rst | 16 ---------------- docs/source/compliance_tool/state_manager.rst | 4 ---- docs/source/index.rst | 1 - 6 files changed, 33 deletions(-) delete mode 100644 docs/source/compliance_tool/compliance_check_aasx.rst delete mode 100644 docs/source/compliance_tool/compliance_check_json.rst delete mode 100644 docs/source/compliance_tool/compliance_check_xml.rst delete mode 100644 docs/source/compliance_tool/index.rst delete mode 100644 docs/source/compliance_tool/state_manager.rst diff --git a/docs/source/compliance_tool/compliance_check_aasx.rst b/docs/source/compliance_tool/compliance_check_aasx.rst deleted file mode 100644 index 2ad29a9d6..000000000 --- a/docs/source/compliance_tool/compliance_check_aasx.rst +++ /dev/null @@ -1,4 +0,0 @@ -compliance_check_aasx - Check AASX-File compliance -================================================== - -.. automodule:: basyx.aas.compliance_tool.compliance_check_aasx diff --git a/docs/source/compliance_tool/compliance_check_json.rst b/docs/source/compliance_tool/compliance_check_json.rst deleted file mode 100644 index 76a78b2d7..000000000 --- a/docs/source/compliance_tool/compliance_check_json.rst +++ /dev/null @@ -1,4 +0,0 @@ -compliance_check_json - Check JSON-File compliance -================================================== - -.. automodule:: basyx.aas.compliance_tool.compliance_check_json diff --git a/docs/source/compliance_tool/compliance_check_xml.rst b/docs/source/compliance_tool/compliance_check_xml.rst deleted file mode 100644 index 9558e00c8..000000000 --- a/docs/source/compliance_tool/compliance_check_xml.rst +++ /dev/null @@ -1,4 +0,0 @@ -compliance_check_xml - Check XML-File compliance -================================================ - -.. automodule:: basyx.aas.compliance_tool.compliance_check_xml diff --git a/docs/source/compliance_tool/index.rst b/docs/source/compliance_tool/index.rst deleted file mode 100644 index 6f8fb1b3a..000000000 --- a/docs/source/compliance_tool/index.rst +++ /dev/null @@ -1,16 +0,0 @@ -basyx.aas.compliance_tool - Tool for Creating and Checking JSON, XML and AASX Files' compliance -=============================================================================================== - -.. argparse:: - :module: basyx.aas.compliance_tool.cli - :func: parse_cli_arguments - :prog: cli - -.. toctree:: - :maxdepth: 2 - :caption: Contents: - - compliance_check_aasx - compliance_check_json - compliance_check_xml - state_manager diff --git a/docs/source/compliance_tool/state_manager.rst b/docs/source/compliance_tool/state_manager.rst deleted file mode 100644 index 90dece3c8..000000000 --- a/docs/source/compliance_tool/state_manager.rst +++ /dev/null @@ -1,4 +0,0 @@ -state_manager - Store LogRecords in a Compliance Check of the Compliance Tool -============================================================================= - -.. automodule:: basyx.aas.compliance_tool.state_manager diff --git a/docs/source/index.rst b/docs/source/index.rst index dd841abd1..801f0750c 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -16,7 +16,6 @@ Welcome to the Eclipse BaSyx Python SDK's documentation! adapter/index backend/index examples/index - compliance_tool/index util/index constraints From e8aae35d0187c3a4a8fe5fa4b92efbba49c16351 Mon Sep 17 00:00:00 2001 From: Sebastian Heppner Date: Thu, 14 Mar 2024 05:20:28 +0100 Subject: [PATCH 4/4] test: Remove schema files and adapt CI to fetch them This removes the JSON Schema and XSD files that stem from the aas-specs repository. Instead, this adds the logic in the CI to fetch these files at runtime. Furthermore, we skip the unittests that make use of the schema files when they do not exist. --- .github/workflows/ci.yml | 6 + .gitignore | 2 + test/adapter/json/aasJSONSchema.json | 1528 ------------------ test/adapter/json/test_json_serialization.py | 7 +- test/adapter/xml/aasXMLSchema.xsd | 1344 --------------- test/adapter/xml/test_xml_serialization.py | 7 +- 6 files changed, 20 insertions(+), 2874 deletions(-) delete mode 100644 test/adapter/json/aasJSONSchema.json delete mode 100644 test/adapter/xml/aasXMLSchema.xsd diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6ad0959a..c633fe05b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,7 @@ jobs: python-version: ["3.8", "3.10", "3.12"] env: COUCHDB_ADMIN_PASSWORD: "yo0Quai3" + AAS_SPECS_RELEASE_TAG: "V3.0.7" services: couchdb: image: couchdb:3 @@ -28,6 +29,11 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} + - name: Collect schema files from aas-specs + run: | + mkdir -p ./test/adapter/schema + curl -sSL -o ./test/adapter/schema/aasJSONSchema.json https://raw.githubusercontent.com/admin-shell-io/aas-specs/${{ env.AAS_SPECS_RELEASE_TAG }}/schemas/json/aas.json + curl -sSL -o ./test/adapter/schema/aasXMLSchema.xsd https://raw.githubusercontent.com/admin-shell-io/aas-specs/${{ env.AAS_SPECS_RELEASE_TAG }}/schemas/xml/AAS.xsd - name: Install Python dependencies run: | python -m pip install --upgrade pip diff --git a/.gitignore b/.gitignore index 397552b70..9410fc829 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ # customized config files /test/test_config.ini +# Schema files needed for testing +/test/adapter/schemas diff --git a/test/adapter/json/aasJSONSchema.json b/test/adapter/json/aasJSONSchema.json deleted file mode 100644 index f48db4d17..000000000 --- a/test/adapter/json/aasJSONSchema.json +++ /dev/null @@ -1,1528 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2019-09/schema", - "title": "AssetAdministrationShellEnvironment", - "type": "object", - "allOf": [ - { - "$ref": "#/definitions/Environment" - } - ], - "$id": "https://admin-shell.io/aas/3/0", - "definitions": { - "AasSubmodelElements": { - "type": "string", - "enum": [ - "AnnotatedRelationshipElement", - "BasicEventElement", - "Blob", - "Capability", - "DataElement", - "Entity", - "EventElement", - "File", - "MultiLanguageProperty", - "Operation", - "Property", - "Range", - "ReferenceElement", - "RelationshipElement", - "SubmodelElement", - "SubmodelElementCollection", - "SubmodelElementList" - ] - }, - "AbstractLangString": { - "type": "object", - "properties": { - "language": { - "type": "string", - "pattern": "^(([a-zA-Z]{2,3}(-[a-zA-Z]{3}(-[a-zA-Z]{3}){2})?|[a-zA-Z]{4}|[a-zA-Z]{5,8})(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-(([a-zA-Z0-9]){5,8}|[0-9]([a-zA-Z0-9]){3}))*(-[0-9A-WY-Za-wy-z](-([a-zA-Z0-9]){2,8})+)*(-[xX](-([a-zA-Z0-9]){1,8})+)?|[xX](-([a-zA-Z0-9]){1,8})+|((en-GB-oed|i-ami|i-bnn|i-default|i-enochian|i-hak|i-klingon|i-lux|i-mingo|i-navajo|i-pwn|i-tao|i-tay|i-tsu|sgn-BE-FR|sgn-BE-NL|sgn-CH-DE)|(art-lojban|cel-gaulish|no-bok|no-nyn|zh-guoyu|zh-hakka|zh-min|zh-min-nan|zh-xiang)))$" - }, - "text": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - } - }, - "required": [ - "language", - "text" - ] - }, - "AdministrativeInformation": { - "allOf": [ - { - "$ref": "#/definitions/HasDataSpecification" - }, - { - "properties": { - "version": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 4 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^(0|[1-9][0-9]*)$" - } - ] - }, - "revision": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 4 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^(0|[1-9][0-9]*)$" - } - ] - }, - "creator": { - "$ref": "#/definitions/Reference" - }, - "templateId": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - } - } - } - ] - }, - "AnnotatedRelationshipElement": { - "allOf": [ - { - "$ref": "#/definitions/RelationshipElement_abstract" - }, - { - "properties": { - "annotations": { - "type": "array", - "items": { - "$ref": "#/definitions/DataElement_choice" - }, - "minItems": 1 - }, - "modelType": { - "const": "AnnotatedRelationshipElement" - } - } - } - ] - }, - "AssetAdministrationShell": { - "allOf": [ - { - "$ref": "#/definitions/Identifiable" - }, - { - "$ref": "#/definitions/HasDataSpecification" - }, - { - "properties": { - "derivedFrom": { - "$ref": "#/definitions/Reference" - }, - "assetInformation": { - "$ref": "#/definitions/AssetInformation" - }, - "submodels": { - "type": "array", - "items": { - "$ref": "#/definitions/Reference" - }, - "minItems": 1 - }, - "modelType": { - "const": "AssetAdministrationShell" - } - }, - "required": [ - "assetInformation" - ] - } - ] - }, - "AssetInformation": { - "type": "object", - "properties": { - "assetKind": { - "$ref": "#/definitions/AssetKind" - }, - "globalAssetId": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "specificAssetIds": { - "type": "array", - "items": { - "$ref": "#/definitions/SpecificAssetId" - }, - "minItems": 1 - }, - "assetType": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "defaultThumbnail": { - "$ref": "#/definitions/Resource" - } - }, - "required": [ - "assetKind" - ] - }, - "AssetKind": { - "type": "string", - "enum": [ - "Instance", - "NotApplicable", - "Type" - ] - }, - "BasicEventElement": { - "allOf": [ - { - "$ref": "#/definitions/EventElement" - }, - { - "properties": { - "observed": { - "$ref": "#/definitions/Reference" - }, - "direction": { - "$ref": "#/definitions/Direction" - }, - "state": { - "$ref": "#/definitions/StateOfEvent" - }, - "messageTopic": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "messageBroker": { - "$ref": "#/definitions/Reference" - }, - "lastUpdate": { - "type": "string", - "pattern": "^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\\.[0-9]+)?)|24:00:00(\\.0+)?)(Z|\\+00:00|-00:00)$" - }, - "minInterval": { - "type": "string", - "pattern": "^-?P((([0-9]+Y([0-9]+M)?([0-9]+D)?|([0-9]+M)([0-9]+D)?|([0-9]+D))(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S)))?)|(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S))))$" - }, - "maxInterval": { - "type": "string", - "pattern": "^-?P((([0-9]+Y([0-9]+M)?([0-9]+D)?|([0-9]+M)([0-9]+D)?|([0-9]+D))(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S)))?)|(T(([0-9]+H)([0-9]+M)?([0-9]+(\\.[0-9]+)?S)?|([0-9]+M)([0-9]+(\\.[0-9]+)?S)?|([0-9]+(\\.[0-9]+)?S))))$" - }, - "modelType": { - "const": "BasicEventElement" - } - }, - "required": [ - "observed", - "direction", - "state" - ] - } - ] - }, - "Blob": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "value": { - "type": "string", - "contentEncoding": "base64" - }, - "contentType": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 100 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" - } - ] - }, - "modelType": { - "const": "Blob" - } - }, - "required": [ - "contentType" - ] - } - ] - }, - "Capability": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "modelType": { - "const": "Capability" - } - } - } - ] - }, - "ConceptDescription": { - "allOf": [ - { - "$ref": "#/definitions/Identifiable" - }, - { - "$ref": "#/definitions/HasDataSpecification" - }, - { - "properties": { - "isCaseOf": { - "type": "array", - "items": { - "$ref": "#/definitions/Reference" - }, - "minItems": 1 - }, - "modelType": { - "const": "ConceptDescription" - } - } - } - ] - }, - "DataElement": { - "$ref": "#/definitions/SubmodelElement" - }, - "DataElement_choice": { - "oneOf": [ - { - "$ref": "#/definitions/Blob" - }, - { - "$ref": "#/definitions/File" - }, - { - "$ref": "#/definitions/MultiLanguageProperty" - }, - { - "$ref": "#/definitions/Property" - }, - { - "$ref": "#/definitions/Range" - }, - { - "$ref": "#/definitions/ReferenceElement" - } - ] - }, - "DataSpecificationContent": { - "type": "object", - "properties": { - "modelType": { - "$ref": "#/definitions/ModelType" - } - }, - "required": [ - "modelType" - ] - }, - "DataSpecificationContent_choice": { - "oneOf": [ - { - "$ref": "#/definitions/DataSpecificationIec61360" - } - ] - }, - "DataSpecificationIec61360": { - "allOf": [ - { - "$ref": "#/definitions/DataSpecificationContent" - }, - { - "properties": { - "preferredName": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringPreferredNameTypeIec61360" - }, - "minItems": 1 - }, - "shortName": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringShortNameTypeIec61360" - }, - "minItems": 1 - }, - "unit": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "unitId": { - "$ref": "#/definitions/Reference" - }, - "sourceOfDefinition": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "symbol": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "dataType": { - "$ref": "#/definitions/DataTypeIec61360" - }, - "definition": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringDefinitionTypeIec61360" - }, - "minItems": 1 - }, - "valueFormat": { - "type": "string", - "minLength": 1, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "valueList": { - "$ref": "#/definitions/ValueList" - }, - "value": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "levelType": { - "$ref": "#/definitions/LevelType" - }, - "modelType": { - "const": "DataSpecificationIec61360" - } - }, - "required": [ - "preferredName" - ] - } - ] - }, - "DataTypeDefXsd": { - "type": "string", - "enum": [ - "xs:anyURI", - "xs:base64Binary", - "xs:boolean", - "xs:byte", - "xs:date", - "xs:dateTime", - "xs:decimal", - "xs:double", - "xs:duration", - "xs:float", - "xs:gDay", - "xs:gMonth", - "xs:gMonthDay", - "xs:gYear", - "xs:gYearMonth", - "xs:hexBinary", - "xs:int", - "xs:integer", - "xs:long", - "xs:negativeInteger", - "xs:nonNegativeInteger", - "xs:nonPositiveInteger", - "xs:positiveInteger", - "xs:short", - "xs:string", - "xs:time", - "xs:unsignedByte", - "xs:unsignedInt", - "xs:unsignedLong", - "xs:unsignedShort" - ] - }, - "DataTypeIec61360": { - "type": "string", - "enum": [ - "BLOB", - "BOOLEAN", - "DATE", - "FILE", - "HTML", - "INTEGER_COUNT", - "INTEGER_CURRENCY", - "INTEGER_MEASURE", - "IRDI", - "IRI", - "RATIONAL", - "RATIONAL_MEASURE", - "REAL_COUNT", - "REAL_CURRENCY", - "REAL_MEASURE", - "STRING", - "STRING_TRANSLATABLE", - "TIME", - "TIMESTAMP" - ] - }, - "Direction": { - "type": "string", - "enum": [ - "input", - "output" - ] - }, - "EmbeddedDataSpecification": { - "type": "object", - "properties": { - "dataSpecification": { - "$ref": "#/definitions/Reference" - }, - "dataSpecificationContent": { - "$ref": "#/definitions/DataSpecificationContent_choice" - } - }, - "required": [ - "dataSpecification", - "dataSpecificationContent" - ] - }, - "Entity": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "statements": { - "type": "array", - "items": { - "$ref": "#/definitions/SubmodelElement_choice" - }, - "minItems": 1 - }, - "entityType": { - "$ref": "#/definitions/EntityType" - }, - "globalAssetId": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "specificAssetIds": { - "type": "array", - "items": { - "$ref": "#/definitions/SpecificAssetId" - }, - "minItems": 1 - }, - "modelType": { - "const": "Entity" - } - }, - "required": [ - "entityType" - ] - } - ] - }, - "EntityType": { - "type": "string", - "enum": [ - "CoManagedEntity", - "SelfManagedEntity" - ] - }, - "Environment": { - "type": "object", - "properties": { - "assetAdministrationShells": { - "type": "array", - "items": { - "$ref": "#/definitions/AssetAdministrationShell" - }, - "minItems": 1 - }, - "submodels": { - "type": "array", - "items": { - "$ref": "#/definitions/Submodel" - }, - "minItems": 1 - }, - "conceptDescriptions": { - "type": "array", - "items": { - "$ref": "#/definitions/ConceptDescription" - }, - "minItems": 1 - } - } - }, - "EventElement": { - "$ref": "#/definitions/SubmodelElement" - }, - "EventPayload": { - "type": "object", - "properties": { - "source": { - "$ref": "#/definitions/Reference" - }, - "sourceSemanticId": { - "$ref": "#/definitions/Reference" - }, - "observableReference": { - "$ref": "#/definitions/Reference" - }, - "observableSemanticId": { - "$ref": "#/definitions/Reference" - }, - "topic": { - "type": "string", - "minLength": 1, - "maxLength": 255, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "subjectId": { - "$ref": "#/definitions/Reference" - }, - "timeStamp": { - "type": "string", - "pattern": "^-?(([1-9][0-9][0-9][0-9]+)|(0[0-9][0-9][0-9]))-((0[1-9])|(1[0-2]))-((0[1-9])|([12][0-9])|(3[01]))T(((([01][0-9])|(2[0-3])):[0-5][0-9]:([0-5][0-9])(\\.[0-9]+)?)|24:00:00(\\.0+)?)(Z|\\+00:00|-00:00)$" - }, - "payload": { - "type": "string", - "contentEncoding": "base64" - } - }, - "required": [ - "source", - "observableReference", - "timeStamp" - ] - }, - "Extension": { - "allOf": [ - { - "$ref": "#/definitions/HasSemantics" - }, - { - "properties": { - "name": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "valueType": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "value": { - "type": "string" - }, - "refersTo": { - "type": "array", - "items": { - "$ref": "#/definitions/Reference" - }, - "minItems": 1 - } - }, - "required": [ - "name" - ] - } - ] - }, - "File": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "value": { - "type": "string" - }, - "contentType": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 100 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" - } - ] - }, - "modelType": { - "const": "File" - } - }, - "required": [ - "contentType" - ] - } - ] - }, - "HasDataSpecification": { - "type": "object", - "properties": { - "embeddedDataSpecifications": { - "type": "array", - "items": { - "$ref": "#/definitions/EmbeddedDataSpecification" - }, - "minItems": 1 - } - } - }, - "HasExtensions": { - "type": "object", - "properties": { - "extensions": { - "type": "array", - "items": { - "$ref": "#/definitions/Extension" - }, - "minItems": 1 - } - } - }, - "HasKind": { - "type": "object", - "properties": { - "kind": { - "$ref": "#/definitions/ModellingKind" - } - } - }, - "HasSemantics": { - "type": "object", - "properties": { - "semanticId": { - "$ref": "#/definitions/Reference" - }, - "supplementalSemanticIds": { - "type": "array", - "items": { - "$ref": "#/definitions/Reference" - }, - "minItems": 1 - } - } - }, - "Identifiable": { - "allOf": [ - { - "$ref": "#/definitions/Referable" - }, - { - "properties": { - "administration": { - "$ref": "#/definitions/AdministrativeInformation" - }, - "id": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - } - }, - "required": [ - "id" - ] - } - ] - }, - "Key": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/KeyTypes" - }, - "value": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - } - }, - "required": [ - "type", - "value" - ] - }, - "KeyTypes": { - "type": "string", - "enum": [ - "AnnotatedRelationshipElement", - "AssetAdministrationShell", - "BasicEventElement", - "Blob", - "Capability", - "ConceptDescription", - "DataElement", - "Entity", - "EventElement", - "File", - "FragmentReference", - "GlobalReference", - "Identifiable", - "MultiLanguageProperty", - "Operation", - "Property", - "Range", - "Referable", - "ReferenceElement", - "RelationshipElement", - "Submodel", - "SubmodelElement", - "SubmodelElementCollection", - "SubmodelElementList" - ] - }, - "LangStringDefinitionTypeIec61360": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 1023 - } - } - } - ] - }, - "LangStringNameType": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 128 - } - } - } - ] - }, - "LangStringPreferredNameTypeIec61360": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 255 - } - } - } - ] - }, - "LangStringShortNameTypeIec61360": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 18 - } - } - } - ] - }, - "LangStringTextType": { - "allOf": [ - { - "$ref": "#/definitions/AbstractLangString" - }, - { - "properties": { - "text": { - "maxLength": 1023 - } - } - } - ] - }, - "LevelType": { - "type": "object", - "properties": { - "min": { - "type": "boolean" - }, - "nom": { - "type": "boolean" - }, - "typ": { - "type": "boolean" - }, - "max": { - "type": "boolean" - } - }, - "required": [ - "min", - "nom", - "typ", - "max" - ] - }, - "ModelType": { - "type": "string", - "enum": [ - "AnnotatedRelationshipElement", - "AssetAdministrationShell", - "BasicEventElement", - "Blob", - "Capability", - "ConceptDescription", - "DataSpecificationIec61360", - "Entity", - "File", - "MultiLanguageProperty", - "Operation", - "Property", - "Range", - "ReferenceElement", - "RelationshipElement", - "Submodel", - "SubmodelElementCollection", - "SubmodelElementList" - ] - }, - "ModellingKind": { - "type": "string", - "enum": [ - "Instance", - "Template" - ] - }, - "MultiLanguageProperty": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringTextType" - }, - "minItems": 1 - }, - "valueId": { - "$ref": "#/definitions/Reference" - }, - "modelType": { - "const": "MultiLanguageProperty" - } - } - } - ] - }, - "Operation": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "inputVariables": { - "type": "array", - "items": { - "$ref": "#/definitions/OperationVariable" - }, - "minItems": 1 - }, - "outputVariables": { - "type": "array", - "items": { - "$ref": "#/definitions/OperationVariable" - }, - "minItems": 1 - }, - "inoutputVariables": { - "type": "array", - "items": { - "$ref": "#/definitions/OperationVariable" - }, - "minItems": 1 - }, - "modelType": { - "const": "Operation" - } - } - } - ] - }, - "OperationVariable": { - "type": "object", - "properties": { - "value": { - "$ref": "#/definitions/SubmodelElement_choice" - } - }, - "required": [ - "value" - ] - }, - "Property": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "valueType": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "value": { - "type": "string" - }, - "valueId": { - "$ref": "#/definitions/Reference" - }, - "modelType": { - "const": "Property" - } - }, - "required": [ - "valueType" - ] - } - ] - }, - "Qualifiable": { - "type": "object", - "properties": { - "qualifiers": { - "type": "array", - "items": { - "$ref": "#/definitions/Qualifier" - }, - "minItems": 1 - }, - "modelType": { - "$ref": "#/definitions/ModelType" - } - }, - "required": [ - "modelType" - ] - }, - "Qualifier": { - "allOf": [ - { - "$ref": "#/definitions/HasSemantics" - }, - { - "properties": { - "kind": { - "$ref": "#/definitions/QualifierKind" - }, - "type": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "valueType": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "value": { - "type": "string" - }, - "valueId": { - "$ref": "#/definitions/Reference" - } - }, - "required": [ - "type", - "valueType" - ] - } - ] - }, - "QualifierKind": { - "type": "string", - "enum": [ - "ConceptQualifier", - "TemplateQualifier", - "ValueQualifier" - ] - }, - "Range": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "valueType": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "min": { - "type": "string" - }, - "max": { - "type": "string" - }, - "modelType": { - "const": "Range" - } - }, - "required": [ - "valueType" - ] - } - ] - }, - "Referable": { - "allOf": [ - { - "$ref": "#/definitions/HasExtensions" - }, - { - "properties": { - "category": { - "type": "string", - "minLength": 1, - "maxLength": 128, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "idShort": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 128 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^[a-zA-Z][a-zA-Z0-9_]*$" - } - ] - }, - "displayName": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringNameType" - }, - "minItems": 1 - }, - "description": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringTextType" - }, - "minItems": 1 - }, - "modelType": { - "$ref": "#/definitions/ModelType" - } - }, - "required": [ - "modelType" - ] - } - ] - }, - "Reference": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/ReferenceTypes" - }, - "referredSemanticId": { - "$ref": "#/definitions/Reference" - }, - "keys": { - "type": "array", - "items": { - "$ref": "#/definitions/Key" - }, - "minItems": 1 - } - }, - "required": [ - "type", - "keys" - ] - }, - "ReferenceElement": { - "allOf": [ - { - "$ref": "#/definitions/DataElement" - }, - { - "properties": { - "value": { - "$ref": "#/definitions/Reference" - }, - "modelType": { - "const": "ReferenceElement" - } - } - } - ] - }, - "ReferenceTypes": { - "type": "string", - "enum": [ - "ExternalReference", - "ModelReference" - ] - }, - "RelationshipElement": { - "allOf": [ - { - "$ref": "#/definitions/RelationshipElement_abstract" - }, - { - "properties": { - "modelType": { - "const": "RelationshipElement" - } - } - } - ] - }, - "RelationshipElement_abstract": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "first": { - "$ref": "#/definitions/Reference" - }, - "second": { - "$ref": "#/definitions/Reference" - } - }, - "required": [ - "first", - "second" - ] - } - ] - }, - "RelationshipElement_choice": { - "oneOf": [ - { - "$ref": "#/definitions/RelationshipElement" - }, - { - "$ref": "#/definitions/AnnotatedRelationshipElement" - } - ] - }, - "Resource": { - "type": "object", - "properties": { - "path": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 2000 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^file:(//((localhost|(\\[((([0-9A-Fa-f]{1,4}:){6}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|::([0-9A-Fa-f]{1,4}:){5}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|([0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){4}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){3}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){2}[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:){2}([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){3}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}:([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){4}[0-9A-Fa-f]{1,4})?::([0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))|(([0-9A-Fa-f]{1,4}:){5}[0-9A-Fa-f]{1,4})?::[0-9A-Fa-f]{1,4}|(([0-9A-Fa-f]{1,4}:){6}[0-9A-Fa-f]{1,4})?::)|[vV][0-9A-Fa-f]+\\.([a-zA-Z0-9\\-._~]|[!$&'()*+,;=]|:)+)\\]|([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])|([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=])*)))?/((([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))+(/(([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))*)*)?|/((([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))+(/(([a-zA-Z0-9\\-._~]|%[0-9A-Fa-f][0-9A-Fa-f]|[!$&'()*+,;=]|[:@]))*)*)?)$" - } - ] - }, - "contentType": { - "type": "string", - "allOf": [ - { - "minLength": 1, - "maxLength": 100 - }, - { - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - { - "pattern": "^([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+/([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+([ \\t]*;[ \\t]*([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+=(([!#$%&'*+\\-.^_`|~0-9a-zA-Z])+|\"(([\\t !#-\\[\\]-~]|[\u0080-\u00ff])|\\\\([\\t !-~]|[\u0080-\u00ff]))*\"))*$" - } - ] - } - }, - "required": [ - "path" - ] - }, - "SpecificAssetId": { - "allOf": [ - { - "$ref": "#/definitions/HasSemantics" - }, - { - "properties": { - "name": { - "type": "string", - "minLength": 1, - "maxLength": 64, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "value": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "externalSubjectId": { - "$ref": "#/definitions/Reference" - } - }, - "required": [ - "name", - "value" - ] - } - ] - }, - "StateOfEvent": { - "type": "string", - "enum": [ - "off", - "on" - ] - }, - "Submodel": { - "allOf": [ - { - "$ref": "#/definitions/Identifiable" - }, - { - "$ref": "#/definitions/HasKind" - }, - { - "$ref": "#/definitions/HasSemantics" - }, - { - "$ref": "#/definitions/Qualifiable" - }, - { - "$ref": "#/definitions/HasDataSpecification" - }, - { - "properties": { - "submodelElements": { - "type": "array", - "items": { - "$ref": "#/definitions/SubmodelElement_choice" - }, - "minItems": 1 - }, - "modelType": { - "const": "Submodel" - } - } - } - ] - }, - "SubmodelElement": { - "allOf": [ - { - "$ref": "#/definitions/Referable" - }, - { - "$ref": "#/definitions/HasSemantics" - }, - { - "$ref": "#/definitions/Qualifiable" - }, - { - "$ref": "#/definitions/HasDataSpecification" - } - ] - }, - "SubmodelElementCollection": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "value": { - "type": "array", - "items": { - "$ref": "#/definitions/SubmodelElement_choice" - }, - "minItems": 1 - }, - "modelType": { - "const": "SubmodelElementCollection" - } - } - } - ] - }, - "SubmodelElementList": { - "allOf": [ - { - "$ref": "#/definitions/SubmodelElement" - }, - { - "properties": { - "orderRelevant": { - "type": "boolean" - }, - "semanticIdListElement": { - "$ref": "#/definitions/Reference" - }, - "typeValueListElement": { - "$ref": "#/definitions/AasSubmodelElements" - }, - "valueTypeListElement": { - "$ref": "#/definitions/DataTypeDefXsd" - }, - "value": { - "type": "array", - "items": { - "$ref": "#/definitions/SubmodelElement_choice" - }, - "minItems": 1 - }, - "modelType": { - "const": "SubmodelElementList" - } - }, - "required": [ - "typeValueListElement" - ] - } - ] - }, - "SubmodelElement_choice": { - "oneOf": [ - { - "$ref": "#/definitions/RelationshipElement" - }, - { - "$ref": "#/definitions/AnnotatedRelationshipElement" - }, - { - "$ref": "#/definitions/BasicEventElement" - }, - { - "$ref": "#/definitions/Blob" - }, - { - "$ref": "#/definitions/Capability" - }, - { - "$ref": "#/definitions/Entity" - }, - { - "$ref": "#/definitions/File" - }, - { - "$ref": "#/definitions/MultiLanguageProperty" - }, - { - "$ref": "#/definitions/Operation" - }, - { - "$ref": "#/definitions/Property" - }, - { - "$ref": "#/definitions/Range" - }, - { - "$ref": "#/definitions/ReferenceElement" - }, - { - "$ref": "#/definitions/SubmodelElementCollection" - }, - { - "$ref": "#/definitions/SubmodelElementList" - } - ] - }, - "ValueList": { - "type": "object", - "properties": { - "valueReferencePairs": { - "type": "array", - "items": { - "$ref": "#/definitions/ValueReferencePair" - }, - "minItems": 1 - } - }, - "required": [ - "valueReferencePairs" - ] - }, - "ValueReferencePair": { - "type": "object", - "properties": { - "value": { - "type": "string", - "minLength": 1, - "maxLength": 2000, - "pattern": "^([\\t\\n\\r -\ud7ff\ue000-\ufffd]|\\ud800[\\udc00-\\udfff]|[\\ud801-\\udbfe][\\udc00-\\udfff]|\\udbff[\\udc00-\\udfff])*$" - }, - "valueId": { - "$ref": "#/definitions/Reference" - } - }, - "required": [ - "value", - "valueId" - ] - } - } -} \ No newline at end of file diff --git a/test/adapter/json/test_json_serialization.py b/test/adapter/json/test_json_serialization.py index 90f67b0b4..3453b2adb 100644 --- a/test/adapter/json/test_json_serialization.py +++ b/test/adapter/json/test_json_serialization.py @@ -18,7 +18,7 @@ example_aas_mandatory_attributes, example_submodel_template, create_example -JSON_SCHEMA_FILE = os.path.join(os.path.dirname(__file__), 'aasJSONSchema.json') +JSON_SCHEMA_FILE = os.path.join(os.path.dirname(__file__), '../schemas/aasJSONSchema.json') class JsonSerializationTest(unittest.TestCase): @@ -48,6 +48,11 @@ def test_random_object_serialization(self) -> None: class JsonSerializationSchemaTest(unittest.TestCase): + @classmethod + def setUpClass(cls): + if not os.path.exists(JSON_SCHEMA_FILE): + raise unittest.SkipTest(f"JSON Schema does not exist at {JSON_SCHEMA_FILE}, skipping test") + def test_random_object_serialization(self) -> None: aas_identifier = "AAS1" submodel_key = (model.Key(model.KeyTypes.SUBMODEL, "SM1"),) diff --git a/test/adapter/xml/aasXMLSchema.xsd b/test/adapter/xml/aasXMLSchema.xsd deleted file mode 100644 index 25d7a52b9..000000000 --- a/test/adapter/xml/aasXMLSchema.xsd +++ /dev/null @@ -1,1344 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/test/adapter/xml/test_xml_serialization.py b/test/adapter/xml/test_xml_serialization.py index 178c130f6..0ca44a7e5 100644 --- a/test/adapter/xml/test_xml_serialization.py +++ b/test/adapter/xml/test_xml_serialization.py @@ -17,7 +17,7 @@ example_submodel_template, example_aas_mandatory_attributes -XML_SCHEMA_FILE = os.path.join(os.path.dirname(__file__), 'aasXMLSchema.xsd') +XML_SCHEMA_FILE = os.path.join(os.path.dirname(__file__), '../schemas/aasXMLSchema.xsd') class XMLSerializationTest(unittest.TestCase): @@ -48,6 +48,11 @@ def test_random_object_serialization(self) -> None: class XMLSerializationSchemaTest(unittest.TestCase): + @classmethod + def setUpClass(cls): + if not os.path.exists(XML_SCHEMA_FILE): + raise unittest.SkipTest(f"XSD schema does not exist at {XML_SCHEMA_FILE}, skipping test") + def test_random_object_serialization(self) -> None: aas_identifier = "AAS1" submodel_key = (model.Key(model.KeyTypes.SUBMODEL, "SM1"),)