From 35bc834e59ed8b0d5c83d7905536dff14c5c1085 Mon Sep 17 00:00:00 2001 From: Igor Garmaev <56840636+zrgt@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:51:48 +0200 Subject: [PATCH] Remove DataSpecificationPhysicalUnit (#137) As the DataSpecificationPhysicalUnit is not part of V3.0 it was removed from the SDK. Fixes #136 --- basyx/aas/adapter/json/aasJSONSchema.json | 72 ------------- .../aas/adapter/json/json_deserialization.py | 32 ------ basyx/aas/adapter/json/json_serialization.py | 38 ------- basyx/aas/adapter/xml/AAS.xsd | 102 ------------------ basyx/aas/adapter/xml/xml_deserialization.py | 45 -------- basyx/aas/adapter/xml/xml_serialization.py | 41 ------- basyx/aas/examples/data/_helper.py | 26 ----- basyx/aas/examples/data/example_aas.py | 29 +---- basyx/aas/model/base.py | 54 ---------- .../files/test_demo_full_example.json | 76 ------------- .../files/test_demo_full_example.xml | 78 -------------- .../files/test_demo_full_example_json.aasx | Bin 17975 -> 17721 bytes ...est_demo_full_example_wrong_attribute.json | 76 ------------- ...test_demo_full_example_wrong_attribute.xml | 78 -------------- .../files/test_demo_full_example_xml.aasx | Bin 18124 -> 18346 bytes ...demo_full_example_xml_wrong_attribute.aasx | Bin 18122 -> 18347 bytes 16 files changed, 2 insertions(+), 745 deletions(-) diff --git a/basyx/aas/adapter/json/aasJSONSchema.json b/basyx/aas/adapter/json/aasJSONSchema.json index e5e2716d3..5e0ca1faa 100644 --- a/basyx/aas/adapter/json/aasJSONSchema.json +++ b/basyx/aas/adapter/json/aasJSONSchema.json @@ -337,77 +337,6 @@ } ] }, - "DataSpecificationPhysicalUnit": { - "allOf": [ - { - "$ref": "#/definitions/DataSpecificationContent" - }, - { - "properties": { - "unitName": { - "type": "string", - "minLength": 1 - }, - "unitSymbol": { - "type": "string", - "minLength": 1 - }, - "definition": { - "type": "array", - "items": { - "$ref": "#/definitions/LangStringDefinitionTypeIec61360" - }, - "minItems": 1 - }, - "siNotation": { - "type": "string", - "minLength": 1 - }, - "siName": { - "type": "string", - "minLength": 1 - }, - "dinNotation": { - "type": "string", - "minLength": 1 - }, - "eceName": { - "type": "string", - "minLength": 1 - }, - "eceCode": { - "type": "string", - "minLength": 1 - }, - "nistName": { - "type": "string", - "minLength": 1 - }, - "sourceOfDefinition": { - "type": "string", - "minLength": 1 - }, - "conversionFactor": { - "type": "string", - "minLength": 1 - }, - "registrationAuthorityId": { - "type": "string", - "minLength": 1 - }, - "supplier": { - "type": "string", - "minLength": 1 - } - }, - "required": [ - "unitName", - "unitSymbol", - "definition" - ] - } - ] - }, "DataTypeDefXsd": { "type": "string", "enum": [ @@ -869,7 +798,6 @@ "Capability", "ConceptDescription", "DataSpecificationIEC61360", - "DataSpecificationPhysicalUnit", "Entity", "File", "MultiLanguageProperty", diff --git a/basyx/aas/adapter/json/json_deserialization.py b/basyx/aas/adapter/json/json_deserialization.py index 0eb7866c6..cfdafe1e1 100644 --- a/basyx/aas/adapter/json/json_deserialization.py +++ b/basyx/aas/adapter/json/json_deserialization.py @@ -187,7 +187,6 @@ def object_hook(cls, dct: Dict[str, object]) -> object: 'Range': cls._construct_range, 'ReferenceElement': cls._construct_reference_element, 'DataSpecificationIEC61360': cls._construct_data_specification_iec61360, - 'DataSpecificationPhysicalUnit': cls._construct_data_specification_physical_unit, } # Get modelType and constructor function @@ -460,37 +459,6 @@ def _construct_concept_description(cls, dct: Dict[str, object], object_class=mod ret.is_case_of.add(cls._construct_reference(case_data)) return ret - @classmethod - def _construct_data_specification_physical_unit(cls, dct: Dict[str, object], - object_class=model.base.DataSpecificationPhysicalUnit)\ - -> model.base.DataSpecificationPhysicalUnit: - ret = object_class( - unit_name=_get_ts(dct, 'unitName', str), - unit_symbol=_get_ts(dct, 'unitSymbol', str), - definition=cls._construct_lang_string_set(_get_ts(dct, 'definition', list), model.DefinitionTypeIEC61360) - ) - if 'siNotation' in dct: - ret.si_notation = _get_ts(dct, 'siNotation', str) - if 'siName' in dct: - ret.si_name = _get_ts(dct, 'siName', str) - if 'dinNotation' in dct: - ret.din_notation = _get_ts(dct, 'dinNotation', str) - if 'eceName' in dct: - ret.ece_name = _get_ts(dct, 'eceName', str) - if 'eceCode' in dct: - ret.ece_code = _get_ts(dct, 'eceCode', str) - if 'nistName' in dct: - ret.nist_name = _get_ts(dct, 'nistName', str) - if 'sourceOfDefinition' in dct: - ret.source_of_definition = _get_ts(dct, 'sourceOfDefinition', str) - if 'conversionFactor' in dct: - ret.conversion_factor = _get_ts(dct, 'conversionFactor', str) - if 'registrationAuthorityId' in dct: - ret.registration_authority_id = _get_ts(dct, 'registrationAuthorityId', str) - if 'supplier' in dct: - ret.supplier = _get_ts(dct, 'supplier', str) - return ret - @classmethod def _construct_data_specification_iec61360(cls, dct: Dict[str, object], object_class=model.base.DataSpecificationIEC61360)\ diff --git a/basyx/aas/adapter/json/json_serialization.py b/basyx/aas/adapter/json/json_serialization.py index 3a057de0e..fa3586b4f 100644 --- a/basyx/aas/adapter/json/json_serialization.py +++ b/basyx/aas/adapter/json/json_serialization.py @@ -72,7 +72,6 @@ def default(self, obj: object) -> object: model.Capability: self._capability_to_json, model.ConceptDescription: self._concept_description_to_json, model.DataSpecificationIEC61360: self._data_specification_iec61360_to_json, - model.DataSpecificationPhysicalUnit: self._data_specification_physical_unit_to_json, model.Entity: self._entity_to_json, model.Extension: self._extension_to_json, model.File: self._file_to_json, @@ -367,43 +366,6 @@ def _data_specification_iec61360_to_json( data_spec['levelType'] = {v: k in obj.level_types for k, v in _generic.IEC61360_LEVEL_TYPES.items()} return data_spec - @classmethod - def _data_specification_physical_unit_to_json( - cls, obj: model.base.DataSpecificationPhysicalUnit) -> Dict[str, object]: - """ - serialization of an object from class DataSpecificationPhysicalUnit to json - - :param obj: object of class DataSpecificationPhysicalUnit - :return: dict with the serialized attributes of this object - """ - data_spec: Dict[str, object] = { - 'modelType': 'DataSpecificationPhysicalUnit', - 'unitName': obj.unit_name, - 'unitSymbol': obj.unit_symbol, - 'definition': obj.definition - } - if obj.si_notation is not None: - data_spec['siNotation'] = obj.si_notation - if obj.si_name is not None: - data_spec['siName'] = obj.si_name - if obj.din_notation is not None: - data_spec['dinNotation'] = obj.din_notation - if obj.ece_name is not None: - data_spec['eceName'] = obj.ece_name - if obj.ece_code is not None: - data_spec['eceCode'] = obj.ece_code - if obj.nist_name is not None: - data_spec['nistName'] = obj.nist_name - if obj.source_of_definition is not None: - data_spec['sourceOfDefinition'] = obj.source_of_definition - if obj.conversion_factor is not None: - data_spec['conversionFactor'] = obj.conversion_factor - if obj.registration_authority_id is not None: - data_spec['registrationAuthorityId'] = obj.registration_authority_id - if obj.supplier is not None: - data_spec['supplier'] = obj.supplier - return data_spec - @classmethod def _asset_administration_shell_to_json(cls, obj: model.AssetAdministrationShell) -> Dict[str, object]: """ diff --git a/basyx/aas/adapter/xml/AAS.xsd b/basyx/aas/adapter/xml/AAS.xsd index 47cf861a8..1c9a6e209 100644 --- a/basyx/aas/adapter/xml/AAS.xsd +++ b/basyx/aas/adapter/xml/AAS.xsd @@ -192,7 +192,6 @@ <xs:group name="dataSpecificationContent_choice"> <xs:choice> <xs:element name="dataSpecificationIec61360" type="dataSpecificationIec61360_t"/> - <xs:element name="dataSpecificationPhysicalUnit" type="dataSpecificationPhysicalUnit_t"/> </xs:choice> </xs:group> <xs:group name="dataSpecificationIec61360"> @@ -254,102 +253,6 @@ <xs:element name="levelType" type="levelType_t" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:group> - <xs:group name="dataSpecificationPhysicalUnit"> - <xs:sequence> - <xs:group ref="dataSpecificationContent"/> - <xs:element name="unitName"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="unitSymbol"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="definition"> - <xs:complexType> - <xs:sequence> - <xs:element name="langStringDefinitionTypeIec61360" type="langStringDefinitionTypeIec61360_t" minOccurs="1" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="siNotation" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="siName" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="dinNotation" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="eceName" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="eceCode" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="nistName" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="sourceOfDefinition" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="conversionFactor" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="registrationAuthorityId" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="supplier" minOccurs="0" maxOccurs="1"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - </xs:sequence> - </xs:group> <xs:group name="embeddedDataSpecification"> <xs:sequence> <xs:element name="dataSpecification" type="reference_t"/> @@ -1226,11 +1129,6 @@ <xs:group ref="dataSpecificationIec61360"/> </xs:sequence> </xs:complexType> - <xs:complexType name="dataSpecificationPhysicalUnit_t"> - <xs:sequence> - <xs:group ref="dataSpecificationPhysicalUnit"/> - </xs:sequence> - </xs:complexType> <xs:complexType name="embeddedDataSpecification_t"> <xs:sequence> <xs:group ref="embeddedDataSpecification"/> diff --git a/basyx/aas/adapter/xml/xml_deserialization.py b/basyx/aas/adapter/xml/xml_deserialization.py index a1913261d..d3d65ce0c 100644 --- a/basyx/aas/adapter/xml/xml_deserialization.py +++ b/basyx/aas/adapter/xml/xml_deserialization.py @@ -1093,53 +1093,11 @@ def construct_data_specification_content(cls, element: etree.Element, **kwargs: data_specification_contents: Dict[str, Callable[..., model.DataSpecificationContent]] = \ {NS_AAS + k: v for k, v in { "dataSpecificationIec61360": cls.construct_data_specification_iec61360, - "dataSpecificationPhysicalUnit": cls.construct_data_specification_physical_unit, }.items()} if element.tag not in data_specification_contents: raise KeyError(f"{_element_pretty_identifier(element)} is not a valid DataSpecificationContent!") return data_specification_contents[element.tag](element, **kwargs) - @classmethod - def construct_data_specification_physical_unit(cls, element: etree.Element, - object_class=model.DataSpecificationPhysicalUnit, **_kwargs: Any) \ - -> model.DataSpecificationPhysicalUnit: - dspu = object_class(_child_text_mandatory(element, NS_AAS + "unitName"), - _child_text_mandatory(element, NS_AAS + "unitSymbol"), - _child_construct_mandatory(element, NS_AAS + "definition", - cls.construct_definition_type_iec61360)) - si_notation = _get_text_or_none(element.find(NS_AAS + "siNotation")) - if si_notation is not None: - dspu.si_notation = si_notation - si_name = _get_text_or_none(element.find(NS_AAS + "siName")) - if si_name is not None: - dspu.si_name = si_name - din_notation = _get_text_or_none(element.find(NS_AAS + "dinNotation")) - if din_notation is not None: - dspu.din_notation = din_notation - ece_name = _get_text_or_none(element.find(NS_AAS + "eceName")) - if ece_name is not None: - dspu.ece_name = ece_name - ece_code = _get_text_or_none(element.find(NS_AAS + "eceCode")) - if ece_code is not None: - dspu.ece_code = ece_code - nist_name = _get_text_or_none(element.find(NS_AAS + "nistName")) - if nist_name is not None: - dspu.nist_name = nist_name - source_of_definition = _get_text_or_none(element.find(NS_AAS + "sourceOfDefinition")) - if source_of_definition is not None: - dspu.source_of_definition = source_of_definition - conversion_factor = _get_text_or_none(element.find(NS_AAS + "conversionFactor")) - if conversion_factor is not None: - dspu.conversion_factor = conversion_factor - registration_authority_id = _get_text_or_none(element.find(NS_AAS + "registrationAuthorityId")) - if registration_authority_id is not None: - dspu.registration_authority_id = registration_authority_id - supplier = _get_text_or_none(element.find(NS_AAS + "supplier")) - if supplier is not None: - dspu.supplier = supplier - cls._amend_abstract_attributes(dspu, element) - return dspu - @classmethod def construct_data_specification_iec61360(cls, element: etree.Element, object_class=model.DataSpecificationIEC61360, **_kwargs: Any) -> model.DataSpecificationIEC61360: @@ -1319,7 +1277,6 @@ class XMLConstructables(enum.Enum): EMBEDDED_DATA_SPECIFICATION = enum.auto() DATA_SPECIFICATION_CONTENT = enum.auto() DATA_SPECIFICATION_IEC61360 = enum.auto() - DATA_SPECIFICATION_PHYSICAL_UNIT = enum.auto() def read_aas_xml_element(file: IO, construct: XMLConstructables, failsafe: bool = True, stripped: bool = False, @@ -1415,8 +1372,6 @@ def read_aas_xml_element(file: IO, construct: XMLConstructables, failsafe: bool constructor = decoder_.construct_embedded_data_specification elif construct == XMLConstructables.DATA_SPECIFICATION_IEC61360: constructor = decoder_.construct_data_specification_iec61360 - elif construct == XMLConstructables.DATA_SPECIFICATION_PHYSICAL_UNIT: - constructor = decoder_.construct_data_specification_physical_unit # the following constructors decide which constructor to call based on the elements tag elif construct == XMLConstructables.DATA_ELEMENT: constructor = decoder_.construct_data_element diff --git a/basyx/aas/adapter/xml/xml_serialization.py b/basyx/aas/adapter/xml/xml_serialization.py index cabec85bb..0b0cf176b 100644 --- a/basyx/aas/adapter/xml/xml_serialization.py +++ b/basyx/aas/adapter/xml/xml_serialization.py @@ -413,8 +413,6 @@ def data_specification_content_to_xml(obj: model.DataSpecificationContent, et_data_specification_content = abstract_classes_to_xml(tag, obj) if isinstance(obj, model.DataSpecificationIEC61360): et_data_specification_content.append(data_specification_iec61360_to_xml(obj)) - elif isinstance(obj, model.DataSpecificationPhysicalUnit): - et_data_specification_content.append(data_specification_physical_unit_to_xml(obj)) else: raise TypeError(f"Serialization of {obj.__class__} to XML is not supported!") return et_data_specification_content @@ -464,45 +462,6 @@ def data_specification_iec61360_to_xml(obj: model.DataSpecificationIEC61360, return et_data_specification_iec61360 -def data_specification_physical_unit_to_xml(obj: model.DataSpecificationPhysicalUnit, - tag: str = NS_AAS+"dataSpecificationPhysicalUnit") -> etree.Element: - """ - Serialization of objects of class :class:`~aas.model.base.DataSpecificationPhysicalUnit` to XML - - :param obj: Object of class :class:`~aas.model.base.DataSpecificationPhysicalUnit` - :param tag: Namespace+Tag of the ElementTree object. Default is "aas:dataSpecificationPhysicalUnit" - :return: Serialized ElementTree object - """ - et_data_specification_physical_unit = abstract_classes_to_xml(tag, obj) - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "unitName", text=obj.unit_name)) - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "unitSymbol", text=obj.unit_symbol)) - et_data_specification_physical_unit.append(lang_string_set_to_xml(obj.definition, NS_AAS + "definition")) - if obj.si_notation is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "siNotation", text=obj.si_notation)) - if obj.si_name is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "siName", text=obj.si_name)) - if obj.din_notation is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "dinNotation", text=obj.din_notation)) - if obj.ece_name is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "eceName", text=obj.ece_name)) - if obj.ece_code is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "eceCode", text=obj.ece_code)) - if obj.nist_name is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "nistName", text=obj.nist_name)) - if obj.source_of_definition is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "sourceOfDefinition", - text=obj.source_of_definition)) - if obj.conversion_factor is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "conversionFactor", - text=obj.conversion_factor)) - if obj.registration_authority_id is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "registrationAuthorityId", - text=obj.registration_authority_id)) - if obj.supplier is not None: - et_data_specification_physical_unit.append(_generate_element(NS_AAS + "supplier", text=obj.supplier)) - return et_data_specification_physical_unit - - def asset_administration_shell_to_xml(obj: model.AssetAdministrationShell, tag: str = NS_AAS+"assetAdministrationShell") -> etree.Element: """ diff --git a/basyx/aas/examples/data/_helper.py b/basyx/aas/examples/data/_helper.py index 978b8597f..414247da4 100644 --- a/basyx/aas/examples/data/_helper.py +++ b/basyx/aas/examples/data/_helper.py @@ -804,8 +804,6 @@ def check_data_specification_content_equal( .format(repr(object_), repr(expected_value))) if isinstance(object_, model.base.DataSpecificationIEC61360): self._check_data_specification_iec61360_equal(object_, expected_value) # type: ignore - elif isinstance(object_, model.base.DataSpecificationPhysicalUnit): - self._check_data_specification_physical_unit_equal(object_, expected_value) # type: ignore def _check_data_specification_iec61360_equal(self, object_: model.base.DataSpecificationIEC61360, expected_value: model.base.DataSpecificationIEC61360): @@ -839,30 +837,6 @@ def _check_data_specification_iec61360_equal(self, object_: model.base.DataSpeci "ValueList must contain 0 ValueReferencePairs", value=len(object_.value_list)): self._check_value_list_equal(object_.value_list, expected_value.value_list) # type: ignore - def _check_data_specification_physical_unit_equal( - self, object_: model.base.DataSpecificationPhysicalUnit, - expected_value: model.base.DataSpecificationPhysicalUnit): - """ - Checks if the given DataSpecificationPhysicalUnit objects are equal - - :param object_: Given DataSpecificationPhysicalUnit object to check - :param expected_value: expected DataSpecificationPhysicalUnit object - :return: - """ - self.check_attribute_equal(object_, 'unit_name', expected_value.unit_name) - self.check_attribute_equal(object_, 'unit_symbol', expected_value.unit_symbol) - self.check_attribute_equal(object_, 'definition', expected_value.definition) - self.check_attribute_equal(object_, 'si_notation', expected_value.si_notation) - self.check_attribute_equal(object_, 'si_name', expected_value.si_name) - self.check_attribute_equal(object_, 'din_notation', expected_value.din_notation) - self.check_attribute_equal(object_, 'ece_name', expected_value.ece_name) - self.check_attribute_equal(object_, 'ece_code', expected_value.ece_code) - self.check_attribute_equal(object_, 'nist_name', expected_value.nist_name) - self.check_attribute_equal(object_, 'source_of_definition', expected_value.source_of_definition) - self.check_attribute_equal(object_, 'conversion_factor', expected_value.conversion_factor) - self.check_attribute_equal(object_, 'registration_authority_id', expected_value.registration_authority_id) - self.check_attribute_equal(object_, 'supplier', expected_value.supplier) - def _check_value_list_equal(self, object_: model.ValueList, expected_value: model.ValueList): """ Checks if the given ValueList objects are equal diff --git a/basyx/aas/examples/data/example_aas.py b/basyx/aas/examples/data/example_aas.py index eb84b02c7..180d00c67 100644 --- a/basyx/aas/examples/data/example_aas.py +++ b/basyx/aas/examples/data/example_aas.py @@ -48,30 +48,6 @@ value="TEST", level_types={model.IEC61360LevelType.MIN, model.IEC61360LevelType.MAX}) ) -_embedded_data_specification_physical_unit = model.EmbeddedDataSpecification( - data_specification=model.ExternalReference((model.Key(type_=model.KeyTypes.GLOBAL_REFERENCE, - value='https://admin-shell.io/DataSpecificationTemplates/' - 'DataSpecificationPhysicalUnit/3/0'),)), - data_specification_content=model.DataSpecificationPhysicalUnit( - unit_name='TestPhysicalUnit', - unit_symbol='TPU', - definition=model.DefinitionTypeIEC61360({ - 'de': 'Dies ist eine DataSpecificationPhysicalUnit für Testzwecke', - 'en-US': 'This is a DataSpecificationPhysicalUnit for testing purposes' - }), - si_notation='t', - si_name='test', - din_notation='v', - ece_name='vest', - ece_code='ECE', - nist_name='nest', - source_of_definition='http://acplt.org/DataSpec/ExamplePUDef', - conversion_factor='1000', - registration_authority_id='DIN', - supplier='IAT' - ) -) - def create_full_example() -> model.DictObjectStore: """ @@ -745,7 +721,7 @@ def create_example_submodel() -> model.Submodel: kind=model.ModellingKind.INSTANCE, extension=(), supplemental_semantic_id=(), - embedded_data_specifications=(_embedded_data_specification_physical_unit,) + embedded_data_specifications=() ) return submodel @@ -777,8 +753,7 @@ def create_example_concept_description() -> model.ConceptDescription: 'Templates/Test_ConceptDescription', embedded_data_specifications=( _embedded_data_specification_iec61360, - )), - embedded_data_specifications=(_embedded_data_specification_physical_unit,) + )) ) return concept_description diff --git a/basyx/aas/model/base.py b/basyx/aas/model/base.py index 5f22e470e..64372f55d 100644 --- a/basyx/aas/model/base.py +++ b/basyx/aas/model/base.py @@ -2369,57 +2369,3 @@ def _get_symbol(self): def __repr__(self): return f"DataSpecificationIEC61360[unit={self.unit}]" - - -class DataSpecificationPhysicalUnit(DataSpecificationContent): - """ - A specialized :class:`~.DataSpecificationContent` to define descriptions - for physical units conformant to IEC 61360. - - :ivar unit_name: Name of the physical unit - :ivar unit_symbol: Symbol for the physical unit - :ivar definition: Definition in different languages - :ivar si_notation: Notation of SI physical unit - :ivar si_name: Name of SI physical unit - :ivar din_notation: Notation of physical unit conformant to DIN - :ivar ece_name: Name of physical unit conformant to ECE - :ivar ece_code: Code of physical unit conformant to ECE - :ivar nist_name: Name of NIST physical unit - :ivar source_of_definition: Source of definition - :ivar conversion_factor: Conversion factor - :ivar registration_authority_id: Registration authority ID - :ivar supplier: Supplier - """ - - def __init__( - self, - unit_name: str, - unit_symbol: str, - definition: DefinitionTypeIEC61360, - si_notation: Optional[str] = None, - si_name: Optional[str] = None, - din_notation: Optional[str] = None, - ece_name: Optional[str] = None, - ece_code: Optional[str] = None, - nist_name: Optional[str] = None, - source_of_definition: Optional[str] = None, - conversion_factor: Optional[str] = None, - registration_authority_id: Optional[str] = None, - supplier: Optional[str] = None, - ) -> None: - self.unit_name: str = unit_name - self.unit_symbol: str = unit_symbol - self.definition: DefinitionTypeIEC61360 = definition - self.si_notation: Optional[str] = si_notation - self.si_name: Optional[str] = si_name - self.din_notation: Optional[str] = din_notation - self.ece_name: Optional[str] = ece_name - self.ece_code: Optional[str] = ece_code - self.nist_name: Optional[str] = nist_name - self.source_of_definition: Optional[str] = source_of_definition - self.conversion_factor: Optional[str] = conversion_factor - self.registration_authority_id: Optional[str] = registration_authority_id - self.supplier: Optional[str] = supplier - - def __repr__(self): - return f"DataSpecificationPhysicalUnit[unit_name={self.unit_name}]" diff --git a/test/compliance_tool/files/test_demo_full_example.json b/test/compliance_tool/files/test_demo_full_example.json index 3c2a65bc3..fa3e4683f 100644 --- a/test/compliance_tool/files/test_demo_full_example.json +++ b/test/compliance_tool/files/test_demo_full_example.json @@ -1654,44 +1654,6 @@ } ] } - ], - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationPhysicalUnit", - "unitName": "TestPhysicalUnit", - "unitSymbol": "TPU", - "definition": [ - { - "language": "de", - "text": "Dies ist eine DataSpecificationPhysicalUnit für Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecificationPhysicalUnit for testing purposes" - } - ], - "siNotation": "t", - "siName": "test", - "dinNotation": "v", - "eceName": "vest", - "eceCode": "ECE", - "nistName": "nest", - "sourceOfDefinition": "http://acplt.org/DataSpec/ExamplePUDef", - "conversionFactor": "1000", - "registrationAuthorityId": "DIN", - "supplier": "IAT" - } - } ] }, { @@ -3243,44 +3205,6 @@ } ] } - ], - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationPhysicalUnit", - "unitName": "TestPhysicalUnit", - "unitSymbol": "TPU", - "definition": [ - { - "language": "de", - "text": "Dies ist eine DataSpecificationPhysicalUnit für Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecificationPhysicalUnit for testing purposes" - } - ], - "siNotation": "t", - "siName": "test", - "dinNotation": "v", - "eceName": "vest", - "eceCode": "ECE", - "nistName": "nest", - "sourceOfDefinition": "http://acplt.org/DataSpec/ExamplePUDef", - "conversionFactor": "1000", - "registrationAuthorityId": "DIN", - "supplier": "IAT" - } - } ] }, { diff --git a/test/compliance_tool/files/test_demo_full_example.xml b/test/compliance_tool/files/test_demo_full_example.xml index e5fc6d966..81cd70cca 100644 --- a/test/compliance_tool/files/test_demo_full_example.xml +++ b/test/compliance_tool/files/test_demo_full_example.xml @@ -680,45 +680,6 @@ </aas:key> </aas:keys> </aas:semanticId> - <aas:embeddedDataSpecifications> - <aas:embeddedDataSpecification> - <aas:dataSpecification> - <aas:type>ExternalReference</aas:type> - <aas:keys> - <aas:key> - <aas:type>GlobalReference</aas:type> - <aas:value>https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0</aas:value> - </aas:key> - </aas:keys> - </aas:dataSpecification> - <aas:dataSpecificationContent> - <aas:dataSpecificationPhysicalUnit> - <aas:unitName>TestPhysicalUnit</aas:unitName> - <aas:unitSymbol>TPU</aas:unitSymbol> - <aas:definition> - <aas:langStringDefinitionTypeIec61360> - <aas:language>de</aas:language> - <aas:text>Dies ist eine DataSpecificationPhysicalUnit für Testzwecke</aas:text> - </aas:langStringDefinitionTypeIec61360> - <aas:langStringDefinitionTypeIec61360> - <aas:language>en-US</aas:language> - <aas:text>This is a DataSpecificationPhysicalUnit for testing purposes</aas:text> - </aas:langStringDefinitionTypeIec61360> - </aas:definition> - <aas:siNotation>t</aas:siNotation> - <aas:siName>test</aas:siName> - <aas:dinNotation>v</aas:dinNotation> - <aas:eceName>vest</aas:eceName> - <aas:eceCode>ECE</aas:eceCode> - <aas:nistName>nest</aas:nistName> - <aas:sourceOfDefinition>http://acplt.org/DataSpec/ExamplePUDef</aas:sourceOfDefinition> - <aas:conversionFactor>1000</aas:conversionFactor> - <aas:registrationAuthorityId>DIN</aas:registrationAuthorityId> - <aas:supplier>IAT</aas:supplier> - </aas:dataSpecificationPhysicalUnit> - </aas:dataSpecificationContent> - </aas:embeddedDataSpecification> - </aas:embeddedDataSpecifications> <aas:submodelElements> <aas:relationshipElement> <aas:category>PARAMETER</aas:category> @@ -3073,45 +3034,6 @@ <aas:templateId>http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription</aas:templateId> </aas:administration> <aas:id>https://acplt.org/Test_ConceptDescription</aas:id> - <aas:embeddedDataSpecifications> - <aas:embeddedDataSpecification> - <aas:dataSpecification> - <aas:type>ExternalReference</aas:type> - <aas:keys> - <aas:key> - <aas:type>GlobalReference</aas:type> - <aas:value>https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0</aas:value> - </aas:key> - </aas:keys> - </aas:dataSpecification> - <aas:dataSpecificationContent> - <aas:dataSpecificationPhysicalUnit> - <aas:unitName>TestPhysicalUnit</aas:unitName> - <aas:unitSymbol>TPU</aas:unitSymbol> - <aas:definition> - <aas:langStringDefinitionTypeIec61360> - <aas:language>de</aas:language> - <aas:text>Dies ist eine DataSpecificationPhysicalUnit für Testzwecke</aas:text> - </aas:langStringDefinitionTypeIec61360> - <aas:langStringDefinitionTypeIec61360> - <aas:language>en-US</aas:language> - <aas:text>This is a DataSpecificationPhysicalUnit for testing purposes</aas:text> - </aas:langStringDefinitionTypeIec61360> - </aas:definition> - <aas:siNotation>t</aas:siNotation> - <aas:siName>test</aas:siName> - <aas:dinNotation>v</aas:dinNotation> - <aas:eceName>vest</aas:eceName> - <aas:eceCode>ECE</aas:eceCode> - <aas:nistName>nest</aas:nistName> - <aas:sourceOfDefinition>http://acplt.org/DataSpec/ExamplePUDef</aas:sourceOfDefinition> - <aas:conversionFactor>1000</aas:conversionFactor> - <aas:registrationAuthorityId>DIN</aas:registrationAuthorityId> - <aas:supplier>IAT</aas:supplier> - </aas:dataSpecificationPhysicalUnit> - </aas:dataSpecificationContent> - </aas:embeddedDataSpecification> - </aas:embeddedDataSpecifications> <aas:isCaseOf> <aas:reference> <aas:type>ExternalReference</aas:type> diff --git a/test/compliance_tool/files/test_demo_full_example_json.aasx b/test/compliance_tool/files/test_demo_full_example_json.aasx index 96e20e7182ea9a49e6c78a85788afe5ac55b466b..ff6bfc7d2c9ff073a703993e4e597c9f38bb8c7c 100644 GIT binary patch delta 8309 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 XMHT_^AC;KMua`R-76eKb`G@{L=nT>5 delta 8525 zcmbW7Ra9QvvgbeC-7UC;4|j(^aDuzL1$PSzC%C%>cY?dSB)B`lg9UeJ_CEXE+kN`> zORpMp)vPsU%~22Q;aB5dE#VMNkr36Kq?jNOIVcLMg1Zd_0ue!gKm?!!J~1LdFS-Y{ zmkj;mnJ>)Nv`VfQ%b=7u`}yX;EZSnCt!#maX8pshv2mnVX4)Ee-RIK;Gww*!c9j8T zRT!}aPutaR;m&Q$+~O+CZnX8W7YI=_=wrgs*rY0mI`2z~93e4<zKuzrZ9~5w;~566 z!N4Y#muZjP{oK4pOK3oclM5dc2}<-bQG#A`cAE?z3a`7t_@lxzQ3nzv(3t)@kGM?@ zS_6>u)uk8E8GybReT%^!>PS?ZcVu07Pts*Min37934j=39XHum2&f`knS@^QBdAR~ znYwBUZb$$U1P_W$#M6L6;ipM?2LhF9LV{31#2_OhXAfpmBNrnkYiD~qHB|%<R1D{y zDc#$0^*{naKp#MXK!3kZ^p5Pdd6HjpiqQqS$78~_W$6zOAqkN*el4RGDJMl|LBjHX zAk%T_4P&sP;w`-*Q)q-bj`95VC78N20-!#UP{td(vHIrkl=LxfpV(JGK;UWo^?Bm; z<x-0L)m3%q!>N>xF%*AQW$Pjbje^ud*0|(u*AnGb7Z3s%GaK1nm@YGU7O;y)^N(8Q zI}-z+#Ku<#ai4EBj}8qG3})1}9Semh9(YY%&S;2ELeN?d;Era76$gc93kxZO0oPAq zx1Wr%RB($bn-!!SN8qvNYFz{@URR|#UVIs5)KGA)og-0pv3jF}<JO;}k2TcXH3svy zf8?l6-wtf3Kff5;f#Hdyasy7IBQ;DdchVB&2VeGl#ja#k#2&7G8VhdE;mse+C{%ss zCG{3`wL3fwvl70s)OhDXq+}8k3&1Ai9kr9KoWImuI)_j4ae4LhKt0#P?QtpV&B)uX zVYLWfoulC`g_LdN!PLgFPRvfRdpRpdacn?hl0Gr7W#RyKj0kE5xgx(=b0x)}1FDdX zJ7sC6Aze*<&jhaxPCYAfG+EO0$|9;bYC7egZ;9jNyJ!vjX)3LAY@O5W0D1r8@1;}w zVL}FDON6Lh-Mk33YMGguTAxs7IMZf-eX06`zb?rU&-CGD)}Xp)*4vDyDxJJr(tN#Q zf}jySx-{jc(<GNyf3syHAdwB(H7ua;fcYRw_U3Bo>{xPqW*9DF#QMga;}&+9_r%jN zgw+1dp_uB$VRMqIsz$%K8tA!Qr9G{KpqJ!C)h-K(*#DLg;@XQO`rcVj49T^yZKin6 z$-G2!Lcfx6?n@q&o*_w`|INW!_UD_`%{i=yW)TAL?J9?^X|sP_U`jvfk=6jy42?2h zIl*N*F@`~s_hISmNa~#)&IOaQPir-aQZc!S4;PMKR6W9mO;UQP4^UU{5t5vm<;gyi za<F`U?oKn1H=a{;n~4<%oYjgIWzZWJ4{c6_c@XDRR{=V@SS>4>l|wi}#76p7&}xVD z2{p2IxD?IMI!Hneh+6pgPXieW!yr_)qh&F&6U1+1+^Ye}>;+a*ZK`^l4&$j3!I=oQ zmnTq~f@wDgr%gwbfZiDbmp1}=)xO-XoT@>*{lJ+^-?RFK?;bbA&h&@9m%^8>I1xi; z(G&`f>VBC99VhlyC{6=RD%+_p(eE9_e&RhlCVlydgka&OQP8v$5}*Ih8rR>~ekh+A zZDD(A=hQ8;Sh@B?FYGvS40q9lY$P!ZR#t5{d&79M+d`ZbJutdqF!e;xptG%ziYld) z)USFO4Kd78eO{soUST8InKeR36=b!V(p?LCuN_LEZW_+I->bZT5dA{ufp07~8<!XF z<n=k%miE}9>X`STu{n~$toC~k0~*)L&ba_Jzx`NRDSJjUIPx7}9_Re<2W>xpdzptF zv%z;C31Y^W2r!NbA#78s(JM6zDihCE4Da0-N#UgtrA`pF3-}sQ&>Pmr8`kM<jC?%( zx`gr2&wo2}tE<o%kt(t|U19rL5^yu7`3GID8HPq+)tRWuh*2j;Jeqc<ml`@VcJi+M z8x^<Pd@espN6^YGWFZ6VwUVxPFk)i0D)2|pvbsGq7%1ZxSHKj6R!A0_T7mZ<Dg64L zU-r2CP=2x~f6Y*Ny05|7l0)pEawfzF{(H`m{578gX4<<N5(y5tA@01bQ+l(eu^B*f z;z?Kr4?RVS%wC-*yJ5q#4sBu4F}^2=@WNsxg%rOcG#i>s$${DD`ip{0e)4(R(|!Lm zZf1)m22g)I)kH=awUKl_RU;(1M`uhykT<SB&V9kv*yQ(^%Nk5xA7HYk9H7)-i-J~g zd%P><LTe;^q&>=h%wFpvTO{6df>(II!kk1^!s&5d*xZG1Frg6h`Ohd4T<t=_4UN|f zHK?s7I=R3#S3H5wB_tv3`v5PJDC=EYnd2n=1TdA6LU1VelP^>7^mxQ+AK%yl-^@-8 zA$_Zod1Vuu^6n=P-s2wNXfVIO3-M#eQ$h)}v;k+EZl=cDfzfrK&8d#$dRk>;TDOzJ zAem;^Ly0mG>ux8}lz(*Y;*)Xh5XV2jD=5ycD!Q?Y<fZER{E2*eC|%SmkQ8O2hYjyX zB|y=o-dG0iAA5L|>2sEQvB7|%RA?94y2tt{K3)B(F}whWh!+=vP#`}SX@mK4SwNj( zWmesJnd82W4^StyN{_d;46hoGl?P%K%6gm;9m_183ycOhagO;$k*7k<8(X}5@?Pa% zyrNI;Wh_X94u^>W_~8Z?-uKwQX|MPxfIQZ(7EN0>7*-EmVHq+(V$~6&b2OWNBoBDp za`i(W3*t7>o>{ed`MjtY-+{a0Ep!9O>+f;mHr!2B{HJrG?`5(JCt~!TB6aa7GhPIr zoAXx{r-ZPie-&PUxy%dDCc;~_>C%7G0qtyGZ*L;Aj|s9ohVLl9ARArKn$pc~0w}=( zBFU#3Y~(Hq*LG@`40}`YzL;3fb$NvC+<R`q5zWGPhxPn-V!$FvRA<)f)ePywvk`k~ z_p2s`h$i|`>ELIcBj@|E%=ajT$^`w%zF|*@_ld#jwYK34w~uTHiD5|@WX}7k_9{vE z`}Y28Fq9~-#+vw_u1uQ!h2M2*0Ykm$*4C47Gq5vE7R&9)UyLwwb(ms|kQh62?IiHH z4Qemkn}2wqeeW1ewNNW(v5&?BOxX$duP0iE4Gn3b_z4zAy5)=9G&w8pdv&LtaIE)_ znFdSTJ?Drrk-bt5U?vEbuW63s+iJAOFK}CM&)h?vx2&38b5~xi_;_ADfSb#qIy73~ zrBoO{JD|>kWt^hMiDN)kHE_sd^oWfOVs4-1<!L6T4S1LBdocZ~AdKAOzACs;BgeG^ z3m&;~hA}S?n|;)N(6hG91|?+@$k-K6LtiB6i>HeuNzQoo^M*Qe{1hXd-6?f}77NJd zr?|6`Bxua5#tE*pOslj6UY-J?EM>X!qGe;5h~#;TH8J%Ar9N)4%3xbDcYeu|lQbw6 zKl=k&wP>dt?oN5?c&~57;xS+<eey~F3b%-R2_!h7ryJ94V8hR8vHkU9&BqTretmeI zROjge?1{GCqWF3B(CBr`IjL$G5q|9pDIHWj;m}~r3aM&}^Y2pC02#@0fa;%QGU-Yx zr|`H%b!$r}SXw&|974lZaxRH*uwAncEJHO}F%b${sol$OTCv&;OQlGcCdi2R3x4G< z=t}YW(sODY>KMYT&dp{LWA=BDdz2p#Gk+C0CqOrizLe48th*vrCMGr$K<&}8+R@&S zK<_m4D1MYmRx!Y(0)AKg&`7+++m-uf+*M<UMJe}-!JhF+K6g{KJQSMm9!E&|z-22U z?qhLNk2qo0OBr;Si+Hkbh-s_p$2>R15?Hd)h-QgROEOGll&WDPxv;_xx@o7`?%VRr zII+}tI2P(q7Fze8O<UA3-))QoW`1zDKuZs;Sn50#?2bs$(*j|h7vl2Dm;Di|RQpzL zN>W}-#o4zZ1Ppb`*cf9n$j-BIoz3bf*BDm!hvC$p8@$`{cuFmN*D3#0s-x=g4>Zxc z_VFbz2?fo%N!cpk(HAs=W0yN$OHa-lUV0<HU(M;unZm&naIZHyFxFHyp%=p+RhZ~> zc%+IYqfqrzZvr3EgFF~t!g)u{m~}7UTd%TYeYX(xI<7jped6qHPj?wFd?@x2bUyH% z33-%%XmlODL&W-?;STxS|GR!1cTY3rPd0QS^KThPXLgNK$$M3+6bvYA*Ft6W!bEkV z^Gw`DCLR%6|6$%EQ|wLJ{fj;f7VHDQeb)ewh2ZI3@Y`=4zE_m%|Gs`1yKL{El7o<w z4LM<*b^hkd)C7^Gx5n$L{=y;b@ZvyjuzH>v9;PUw;IpoDKo=+i`VPqu(e(j|pz)hm zvuY!@Vzex|bAH=!j+8;AM;8_F#YHyd*Fpr`Ii=!rz|MmlA_|`u!ye<UG9zCgsz%G* zxK@H$O#%@ADuFEXGYtE<2#+|rtb^&SHNy3wDfqXbt_2tNr-R<A;JM+^Ae7I$z8ba_ z<1VTQQ0$>}g$UB^_n#s)G&X{mVi8tv8J#n%v7n$4NTQF3BPMs7pjB1nKlS8VBHR$< z!hC~)r5Kl(aTAL(EG`{4HYHYz!zsD4rs`xHd0!9ggb%cMC7D%ksrcOF(eTh>x|Rja z+x4_r_O@IZDiodtaazf;-HNY+FRFefA?Xu&*lsrXFTnoyM(3!5%f@d5)|cqccC*R< zzc=&rU6s?BAxLw|7MdF=z1BU5t?$&m>j){nRIpd(YW9U@ETE49G_~5|J9EFNo)yXh z_qXwkIUZBfa`5%MEgWmhUFFT~8c0tw&8HD8oRtlucED-ua7)ba7iBOVB^`1#w~IDD zLJ-W&^CRHX;df&{M0F{K$Q?L283kgHM;^0Y$7xr5ByNlr3z(CS7Ke$HnyUCtvkLFS ziEl#tP7NnXkc<0(nHY=bn7)~Wo<CQ8OZPbs&oR%wMWfY@X6SM>l&14SCplM#K%ks@ zT;T)d&EV$uzN4A3!%%~Xs)=U>dA=k*a{nSGIlWs(pPcqs=}b{0!O<Hp$|b$38Suyx zy$7w<F)4x)wWUaWuMKoZK$V8a<31LKA>*y;vVLD2s*gKx#9g~?pYKK)(;>1pNKufh ztZN@wBBi6$X@82tjpRaN#B-#z9Prq<e$Z4trjXxeklx~aOK@~Rh7tLejuCn7O9Ve? z!t7@#4lhxNPl1nR)rL4;+YEQIfB@%&v#D>w;^yw{Dz#hB99M3<hA<pTU{KE%?)Z@& zOWQ*Aeg&{zB=u3G$jnR(S1A<kKqzLQ%UsNjIzxVkIJ&7C#^z@?>Fd=CU+{-tqHzq7 zm;xDu1kz#chNbfU{{1^G2X|i~Re|19E|8bI{&OzW_YBwSH#^kSnB&>B52uUDT;}>u z>!NK7G`%lJXXz14H7`tcFLtXBZ9g8`xXVsZ>5_rh{l31);YYj(u5Evgq;a7A$*B>E z1?ZU8dm0EuCK!y;gM04w{)E$i+FEzmw-f?^&5Znp#62=;=B3O<TW5)W6d)r8D3Gx# zi?%I=#dYWyRO<{|mzx&akzUnhdtM7q8(}&2nU5ty>?d6b?<LJ(7`r<Mt%cyi#wE@} z^#fN?S97VXh`Y7PH?2hHf=86ppWEt2Bs$y13m2Ykc@lJKpvFxwCRtcRs)A`}Z*2Cr zSN$^E{l3WScYo;G_%Y6>s^xpLn+>H$1|7`J+tl$b1%Ff>q&QgyLPDx>5X<|lxr*&t z4w((vx+6bfBNqp0l|f91E%hE(1aBl4p#UJH4W)5E@}|vv77;eETpQf}1!-o}B}R&B zo<pa=F8(9xcA@FGS&4le5@d;z;&CJ)H!~mmCBo$@kBu4^Z*5({z=l#QQTyi9%fu>h zDMUDV8qHy3ltLz4u}(R=YbP0EJ;X$Psh?TgX`4JAdMc{lN{T=zfukUP(~rl_*ajes zCrKqnK+TzR5>fx%N+a@>vZ1}9KXnJ*$!(;B3c<OoiAn2%I8Ci4eoo0QDN)5syxbh> zr8(6Rn>jP!vUIzGVT|2W&A<YU!ztTf@aqnW^mr;g7oAl;#rm?gfyVMT%BMs3T<%jH z(54}C($ZM9_>J<RHQm@_gD*jHZ!Ms%nT%$WF=hxWjK9BP$t#u~QZGBFMvI%i9h{@B zd&E~}>-%Zg4;;GSgbqfl;}o%-p41ZeOiy2TwUl`Ht93Jj69|^S_}_cCGbz_Yy}L^9 znlN|W={u(OCof*2NLzEZLRynp^;kkMaZ2eho2;#{N>kny04*P;;KQ51w_e0x+KZC* zt3;IW7nWQv@nJne9n#=`b#V+P%Y@p7P)MO)wLdSU^aE-KQ;=;F5=vxtyGOIyWfy;U zaU_kq!bbEg;%b<&BUMuIg~QbPk;auaV=l2XdtqCX2aoTJIYjE((Fs}Gar_nC8ZAqm z0T)R?ii@Jzzv3qx^I2#Ldtv(1dB9KFxy%_Iu+jtnnX>&lDJRPSe{@Uj{=v#Gw$=+; zGmHw@9{EfGCX?Cm6(@7H!Pb#1mx9eYD`qtfbB!#U2oho03D)_KmSNoVjZJ)FqaQ2i zqf9wrW#%ANUCS&%&4iKP)FM9bvQ$B)07Z17?)AYhv#gh)EZ0WAX^URa_k0<hy9R{x zEh%QsP3ceQd(2HUGBCKjN!--(t_au7b>^mI@f%Y(xXwh49FslVppJ`-!eEh|r3p1l zS}9i`YrcOAPLEmGSkcribqP5^SGL)ur7Tz!4L|WEz<Klf7zK;T>9MhF@9kBAzNk!T zsk92q1cXU9`1c8BXMxGgtzL=jL?2Z++3A_W3iVGV8#3eH$8sy!qu%GsD_BI#kb%qp z&?FRT#zy0lNM}P@Df@M)nWdpqoPFx8TR8l*zEv)Ti62@C&ws%?qLap^g8TY{2cT-) zw+6BCvt$#O-=zj!RyxTENN%74FV?LPJ1$NqUj=^ake+B(VHi;^|CU{^vy2WfH$Y6M zj?s@z>yJI7U>>LuBj^fLj|xzyP9U>8y_g}R`*4R;OCs~WYFuyT=6>v=HkzNy3%O-f z5_~&SU-LM)nm4{Xx3H?DNQzaL9+Oo*Ro|zRc1K5oL|I2AM44yAowtnuEGOFX_4V$F zX+|(Y9omSXEtGu#r3{*I>AU|DfE4{~OSqJA%DAMkNMF*}_F;eEc^z^EriDh4vQciq zy;!0m5S~S(Wiya1Smtw0G;&~7rBp&NV;U@|>t9CS{oTGG)LQ@NCcb86PE|b?URmLI zbu{|`@tOF}xlG$RAWhBRd5#33j{(~E9n0h$_Wi)31JQg~w0bipoAA!CPuna#YWsou z<mW(MHs1xWoOjw&Zg0a7b?M7*x=0eAj_MiRtbO}J2yOmo!f^sRnm>6qHJtwJ@Kz8G zs&sOAe!~&|6j4c4XZ}A-N5d=OXnM}ls~|@BbUy7=b21}O0nD<g1y>jbQIPxZWt0Q! zgN4BQnkLUm$!Oqjl+3S5oz;2`Uz21?#Kd}WpbHf8VvepjLU39LchRQ7PQ;;k+4-C1 zF%bpLb8xhM!y{pu6N@O1kqUU!&E|9ox6K>^6j9iFsN<gP+mp2Y(I1n(f>q4DdtG@t z<Wr&&M^EK3fO)MUu5xpgdsoRpFk8La@@R67obv7zfm`Oz+CelSI5d+G@8GUD`3fvt zELCWdk4G#}9p`r5=_#L*Q%|2b98c=H`PKdpZG}U1#&>oVF7)u*oogWjhZVj}Y%Spy zm31U_)~TTIL{YV{a~$)!G3HiLX-2EUlK3n}7gn};U@=^wl-K#kE#<3CezdBnRGhN1 zGz1rBO`sU}*R|eUBH~uHY9OBXazk2!%>LWSHG-43Ua>Qo3En1kfhR&sJhVH+JiG&5 zH+DKV%v@lh=&8q+$R**KM_H@voGCW*yBsIQfOl~}wSs-RwSu22(g=5QgFL~-$#}Jj zQR+QyKz462@F^3FO_P68fb|!FzWa+nTmL3dgTDy0XRknezJ{#^yZ)>!YA!8WhEX0; zZBCY2SLz%FVby|J>_j=5vg9HB_cS&WHLpJp;(!yKc08O^IFzL<EXB~{jJa6c&VA{i zv8hU_smB)?EQ7BJ`cfAIiIi<6X?;NP2bs2UcJs$`c?TPYdN(A@GWdj2Kfxp#d8_GU z(^|TX|3C0FvdhSlv(`i_@6bYt6Piz(SFG6T`}rB(3`?u>;vnO0&lZdKVYOZ!;OG5< zmH+vSLEf!leB?*vO<&fG9N(6WJYq$h4>g%e!e!n~j@(bADxA7fGxj9%|BElpD>mQ^ z6CgZQZFZtcbTmkA$ESV7Q6Kw^+*uA#LuR%Phw5I2whl)OJs!4>pA?>7hU7xr)6ISV z;Y;A(fGHFCKLO@%qXTf!!iqFARl<5v$GVhT%F&ff&=M}%0{;lMS^&{UKh;v1t1|z| z_`r6hQ@(IZxg7RA8lo`;JCot=7L&U<i~{L_6BReE`dhX0v@l(UUp06=i$0}1Wtzxp zc{Eu*z%d7$RSEXO3K{)$*|_c~&z-nje!KgKM3<hPFX7tr^p6uh)SJ2Ik1TwD*2G!n zA8pC-V>&<qIOO<A#$OHP3MxgatNR#EKRmkj`s>yrkE!*hA}7?!^@<-EF{+`rML3)C zEPg_^AnK-l<F+7isZ^Tz;kYC!PR|6xB_U)(Kv3mJaGrTL#II~&#y+UO7;TU<BN}}z zi=td;=i2%<rKGY-rW#$X0X^x{X}NdH{gBMuIV9yusna`)0#}lV!avkO_d1hHBFS3@ zvx5BTxjUukPe<EP*8Ep>ac4}Y-fJ7M2hM58WWE@`*jcL%E7KHL>gv$ToUs&}u6av= z71(EAu>%_QE^`HcCiH;bjLQZ6Nm*nwFo@1l%`Z4uvzdGf{;13HzL>^@`3>U6AFSUX zZprWs;)YeR|Asi+sR%S%{*~_+?rNiny#WC#X%Po@IGLl(pW$$d-3orG_GC$yNKqf$ zi;9;KGviu+a^NXqtdJV;tRa*El!lwL6vH9qjF{yh=rum<(wFEqu&?*ufHnMeAU-2B z;}{~MwBjh<!6CkiY~@s9zijE9xL1pyvuJU-{eqQC?lygo>Koc`YE|JvG8zUNg!;$C z&LKoR|81U$aAg<9hA?GL-{|-KswGNCJp*e*ti}a@0{+tiCeu)bo?EN-FonEl(#VQA zW4yj1Ur=ZFMZQ!W<6qz79h+)%%+Z_7e?x=O)Qe`~U&myzXbR(9spmA^pdjfek>f{F zbDw;7xuv4BN<iZ?zXZ$s=h6XU@r+V*G`&O4uhPlJEbTnk0Tz3F6AFbcv!-thSYuIs zslY5@1$ZY6{0QrgTPPJx8lwqS{>Uk93OJVki0!sQ%e=W3rE*w?D(={1wImUN!)_Mw zN5XDi5h<Hj-jr!^VM}Zw7Bbw<Y*9rK>;9MZg`CHxh-UsWr?iBpcFXN&N?f!hgxAqF z*1(2cQB23AKNbzvE2&=L@N1~=wTqI(0c^YZ=x!l*^{p3IMO#w(m~JT?7{~z~b^}S> zQaiC>S8z*#NR^J3VSp|-)4_X3jCy~httozdu{Q*waF5!Whgog))4{`(MOtmO+#<F+ ztVDWIc9g`p{6_S^Te~`TZ4(8i=t^G||8;^pn{*jk@KI>35z|?^WlqDoN>j205Z@0s z_}=+jcNEH*sI)5W3zQbVdpK(`==W|l4V;Ap25;v#aNy$cG*YG6`@CopdR9#|r8g-_ zzv}be`4Y+_zV>)*5&4O->s(myp2wDgT&cF-vN<?7m*B7(8IY2QHIrk)#^MHZMU`f^ zj$=(<W7*tbLh6@;&lNPbBQAS@L(eYv<)f77o)I1`X>olI$9>~3gWs5)O~pqWZ0G?Z zD}y=eGVlxd9a|xmY#7m9a&L!n&1ZE$z52EgvVAtP_wLl=YIn;^AboW$IwJ5DDZtTn z@MXXi2#d>~d<I>jm6#1N8l8wJvcA5A?@d@XRcs^7K+u=Pr#5CkN`wHxQIZ4NOUZ|1 z#dh0{CHX7U_gx7yop!;M!--}Y+Ok>s{11WKFg%?jPLie2S?k)Vl{^KGKavC`H*iyw zg5+-mMPdyz<liw1OnB>z%Siz2E!!7c!t6ubzGgA|g1D5MwY)bTC38eLD-D`TmXI&7 z>A~K?wo-mdP4Uvy!acxFzv_Aac4p9q;1sOe@#`@>u%~wr<?X9(pu~<*@B`;bUaOom zV5w>GI26wEmh*dYE@IL4NaE*v$k6u-mK_Hv=<*AdCT{`<IR@&0rv}HHzTxrpZb=Yj zJQT$_4d`tyE#Ewp(V9yDi15xH&0SVo6iI$Lg%cYb`?By6!~!SOl&#q{3z(_nf*a_O zgcfwt4BG9aa2eE;eg6<IchJDp)~Kd~SzZrJ+~$GQ1-6t4v@iNs7`Bh=89_RuZ@`<a zOtn621ny-m%EUJ*`jI%$^*TUm%`maXfED};fpKt%irD-I>pAfk{yT6b<e4P%fAKEx z{{~*C_1xls59Jac%Htg~Guob{P(NAxiAfhOcRp)RT`!&B|8ux_z$(!3u5y)jX7Dt_ z{lU}on$sN{oG#t%QNyp1Zxz~<?51u$$SS!EGj$GaJKDI1^&0wlZt~#VJLp45d0i}} z6W%voiodlQj447V@#yK$V+&rAj#uG?WKka)Y!LR_902^=`p>C=w@?2(eh>*fVk8Nk zV)PIs2?b(gWN!+)27$+*N5k6z{I?MTA`sO-N6FrN3wgp6If()y=&t|-f&k%zK9J$? z+dnQr{M#Ss`EmXgE6PGZlKxY{n_RE4*J)j`{+2WKb}7>TacOaa;zvSU7_Edfhqt_c z`?HDDc!$RXzmE(MRSA_J3C-U@VT1l>xgY<ZVnCn*|J}E8|5N;j`Iq?rAHu()EDY>l QiSTcx2MGf8i~SY-FSwjN2mk;8 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 index 0bd00b497..af711187a 100644 --- a/test/compliance_tool/files/test_demo_full_example_wrong_attribute.json +++ b/test/compliance_tool/files/test_demo_full_example_wrong_attribute.json @@ -1654,44 +1654,6 @@ } ] } - ], - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationPhysicalUnit", - "unitName": "TestPhysicalUnit", - "unitSymbol": "TPU", - "definition": [ - { - "language": "de", - "text": "Dies ist eine DataSpecificationPhysicalUnit für Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecificationPhysicalUnit for testing purposes" - } - ], - "siNotation": "t", - "siName": "test", - "dinNotation": "v", - "eceName": "vest", - "eceCode": "ECE", - "nistName": "nest", - "sourceOfDefinition": "http://acplt.org/DataSpec/ExamplePUDef", - "conversionFactor": "1000", - "registrationAuthorityId": "DIN", - "supplier": "IAT" - } - } ] }, { @@ -3243,44 +3205,6 @@ } ] } - ], - "embeddedDataSpecifications": [ - { - "dataSpecification": { - "type": "ExternalReference", - "keys": [ - { - "type": "GlobalReference", - "value": "https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0" - } - ] - }, - "dataSpecificationContent": { - "modelType": "DataSpecificationPhysicalUnit", - "unitName": "TestPhysicalUnit", - "unitSymbol": "TPU", - "definition": [ - { - "language": "de", - "text": "Dies ist eine DataSpecificationPhysicalUnit für Testzwecke" - }, - { - "language": "en-US", - "text": "This is a DataSpecificationPhysicalUnit for testing purposes" - } - ], - "siNotation": "t", - "siName": "test", - "dinNotation": "v", - "eceName": "vest", - "eceCode": "ECE", - "nistName": "nest", - "sourceOfDefinition": "http://acplt.org/DataSpec/ExamplePUDef", - "conversionFactor": "1000", - "registrationAuthorityId": "DIN", - "supplier": "IAT" - } - } ] }, { 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 index ab3c230e8..475b5ff0b 100644 --- a/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml +++ b/test/compliance_tool/files/test_demo_full_example_wrong_attribute.xml @@ -680,45 +680,6 @@ </aas:key> </aas:keys> </aas:semanticId> - <aas:embeddedDataSpecifications> - <aas:embeddedDataSpecification> - <aas:dataSpecification> - <aas:type>ExternalReference</aas:type> - <aas:keys> - <aas:key> - <aas:type>GlobalReference</aas:type> - <aas:value>https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0</aas:value> - </aas:key> - </aas:keys> - </aas:dataSpecification> - <aas:dataSpecificationContent> - <aas:dataSpecificationPhysicalUnit> - <aas:unitName>TestPhysicalUnit</aas:unitName> - <aas:unitSymbol>TPU</aas:unitSymbol> - <aas:definition> - <aas:langStringDefinitionTypeIec61360> - <aas:language>de</aas:language> - <aas:text>Dies ist eine DataSpecificationPhysicalUnit für Testzwecke</aas:text> - </aas:langStringDefinitionTypeIec61360> - <aas:langStringDefinitionTypeIec61360> - <aas:language>en-US</aas:language> - <aas:text>This is a DataSpecificationPhysicalUnit for testing purposes</aas:text> - </aas:langStringDefinitionTypeIec61360> - </aas:definition> - <aas:siNotation>t</aas:siNotation> - <aas:siName>test</aas:siName> - <aas:dinNotation>v</aas:dinNotation> - <aas:eceName>vest</aas:eceName> - <aas:eceCode>ECE</aas:eceCode> - <aas:nistName>nest</aas:nistName> - <aas:sourceOfDefinition>http://acplt.org/DataSpec/ExamplePUDef</aas:sourceOfDefinition> - <aas:conversionFactor>1000</aas:conversionFactor> - <aas:registrationAuthorityId>DIN</aas:registrationAuthorityId> - <aas:supplier>IAT</aas:supplier> - </aas:dataSpecificationPhysicalUnit> - </aas:dataSpecificationContent> - </aas:embeddedDataSpecification> - </aas:embeddedDataSpecifications> <aas:submodelElements> <aas:relationshipElement> <aas:category>PARAMETER</aas:category> @@ -3073,45 +3034,6 @@ <aas:templateId>http://acplt.org/AdministrativeInformationTemplates/Test_ConceptDescription</aas:templateId> </aas:administration> <aas:id>https://acplt.org/Test_ConceptDescription</aas:id> - <aas:embeddedDataSpecifications> - <aas:embeddedDataSpecification> - <aas:dataSpecification> - <aas:type>ExternalReference</aas:type> - <aas:keys> - <aas:key> - <aas:type>GlobalReference</aas:type> - <aas:value>https://admin-shell.io/DataSpecificationTemplates/DataSpecificationPhysicalUnit/3/0</aas:value> - </aas:key> - </aas:keys> - </aas:dataSpecification> - <aas:dataSpecificationContent> - <aas:dataSpecificationPhysicalUnit> - <aas:unitName>TestPhysicalUnit</aas:unitName> - <aas:unitSymbol>TPU</aas:unitSymbol> - <aas:definition> - <aas:langStringDefinitionTypeIec61360> - <aas:language>de</aas:language> - <aas:text>Dies ist eine DataSpecificationPhysicalUnit für Testzwecke</aas:text> - </aas:langStringDefinitionTypeIec61360> - <aas:langStringDefinitionTypeIec61360> - <aas:language>en-US</aas:language> - <aas:text>This is a DataSpecificationPhysicalUnit for testing purposes</aas:text> - </aas:langStringDefinitionTypeIec61360> - </aas:definition> - <aas:siNotation>t</aas:siNotation> - <aas:siName>test</aas:siName> - <aas:dinNotation>v</aas:dinNotation> - <aas:eceName>vest</aas:eceName> - <aas:eceCode>ECE</aas:eceCode> - <aas:nistName>nest</aas:nistName> - <aas:sourceOfDefinition>http://acplt.org/DataSpec/ExamplePUDef</aas:sourceOfDefinition> - <aas:conversionFactor>1000</aas:conversionFactor> - <aas:registrationAuthorityId>DIN</aas:registrationAuthorityId> - <aas:supplier>IAT</aas:supplier> - </aas:dataSpecificationPhysicalUnit> - </aas:dataSpecificationContent> - </aas:embeddedDataSpecification> - </aas:embeddedDataSpecifications> <aas:isCaseOf> <aas:reference> <aas:type>ExternalReference</aas:type> diff --git a/test/compliance_tool/files/test_demo_full_example_xml.aasx b/test/compliance_tool/files/test_demo_full_example_xml.aasx index e75a75ac65d2cf36322f42bc7a0faebf65ed82e7..b513a52cd3b21f2985718d79a2cb7bcd06ca6bf6 100644 GIT binary patch delta 8924 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 delta 8703 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
b0Ir1g^VjJ96y zKxdAlfc2cA)o`1ki?(>R*45snLL4L`PqJ>&wq6_mU3`2&<pY<!ZRkpN48oqw)88Aw zt71Hqm1>q6d7T<cPlg2>kt0S*lcB=HB9EO#WXtE5PfYKv1m6~2KD}X#jn6f(CbIN9 z{vf`NYY|8k6wYL(x?t-pD8RjTR@02pn5WR>9#;8qspN*HEFo@IgjqK<`q^c_uOJ7@ zR`-lP9PXpq0E5I`dM-E-#-bOA&5J34Zwifyt`Isvbjcya`g^>tMP2LWM|4<NajuqF z2R9hV%Q~cE`M9e0slyi^i;jBjzT{-tWP0`u281Z(M~e->{v%X)_h<a4Y~fGoUtb^; zs8Wg;bRxw7MGV4~CjUnQz%NY%-9iDHrXT?#0m%PZ3H3+pz&HBM$mwYX>VIMuv5)rO zxrzc5G}*s;{ZS5RA9UGPZT{Ic^G70q450p3r@uJGlmLLStA+g+R+hj1e}fBSFV;E# z0sEgwG}l|@{Pga>(Xj!bDk?(ce<1+^p{hV+GK3bSFxY_qw?YB`pQV5L1B!yy|D51I f^a^nQtylODt%8aI9Q@yX@BWxRGytG4`FHkTU8uiF diff --git a/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute.aasx b/test/compliance_tool/files/test_demo_full_example_xml_wrong_attribute.aasx index 00c3427eadf7082f1e8662ce204179757b0dccc0..06bc98b3105f9288c9c1bbe94724239e2414e765 100644 GIT binary patch delta 8956 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 b{YO@mfrEdm?+yF$9xC!36ciHZAL;)9U#vQ< delta 8682 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 UKtTMv5BU%DVL>2WslVNS0ouTNY5)KL