Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

adapter.xml: Update XSD to v3.0 #161

Merged
merged 7 commits into from
Nov 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
184 changes: 102 additions & 82 deletions basyx/aas/adapter/xml/AAS.xsd

Large diffs are not rendered by default.

7 changes: 5 additions & 2 deletions basyx/aas/adapter/xml/xml_deserialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -692,8 +692,11 @@ def construct_extension(cls, element: etree.Element, object_class=model.Extensio
value = _get_text_or_none(element.find(NS_AAS + "value"))
if value is not None:
extension.value = model.datatypes.from_xsd(value, extension.value_type)
extension.refers_to = _failsafe_construct_multiple(element.findall(NS_AAS + "refersTo"),
cls._construct_referable_reference, cls.failsafe)
refers_to = element.find(NS_AAS + "refersTo")
if refers_to is not None:
for ref in _child_construct_multiple(refers_to, NS_AAS + "reference", cls._construct_referable_reference,
cls.failsafe):
extension.refers_to.add(ref)
cls._amend_abstract_attributes(extension, element)
return extension

Expand Down
18 changes: 10 additions & 8 deletions basyx/aas/adapter/xml/xml_serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,11 @@ def extension_to_xml(obj: model.Extension, tag: str = NS_AAS+"extension") -> etr
text=model.datatypes.XSD_TYPE_NAMES[obj.value_type]))
if obj.value:
et_extension.append(_value_to_xml(obj.value, obj.value_type)) # type: ignore # (value_type could be None)
for refers_to in obj.refers_to:
et_extension.append(reference_to_xml(refers_to, NS_AAS+"refersTo"))

if len(obj.refers_to) > 0:
refers_to = _generate_element(NS_AAS+"refersTo")
for reference in obj.refers_to:
refers_to.append(reference_to_xml(reference, NS_AAS+"reference"))
et_extension.append(refers_to)
return et_extension


Expand Down Expand Up @@ -677,11 +679,6 @@ def submodel_element_list_to_xml(obj: model.SubmodelElementList,
tag: str = NS_AAS+"submodelElementList") -> etree.Element:
et_submodel_element_list = abstract_classes_to_xml(tag, obj)
et_submodel_element_list.append(_generate_element(NS_AAS + "orderRelevant", boolean_to_xml(obj.order_relevant)))
if len(obj.value) > 0:
et_value = _generate_element(NS_AAS + "value")
for se in obj.value:
et_value.append(submodel_element_to_xml(se))
et_submodel_element_list.append(et_value)
if obj.semantic_id_list_element is not None:
et_submodel_element_list.append(reference_to_xml(obj.semantic_id_list_element,
NS_AAS + "semanticIdListElement"))
Expand All @@ -690,6 +687,11 @@ def submodel_element_list_to_xml(obj: model.SubmodelElementList,
if obj.value_type_list_element is not None:
et_submodel_element_list.append(_generate_element(NS_AAS + "valueTypeListElement",
model.datatypes.XSD_TYPE_NAMES[obj.value_type_list_element]))
if len(obj.value) > 0:
et_value = _generate_element(NS_AAS + "value")
for se in obj.value:
et_value.append(submodel_element_to_xml(se))
et_submodel_element_list.append(et_value)
return et_submodel_element_list


Expand Down
4 changes: 2 additions & 2 deletions basyx/aas/examples/data/example_aas.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,9 @@ def create_example_asset_identification_submodel() -> model.Submodel:
name='ExampleExtension',
value_type=model.datatypes.String,
value="ExampleExtensionValue",
refers_to=(model.ModelReference((model.Key(type_=model.KeyTypes.ASSET_ADMINISTRATION_SHELL,
refers_to=[model.ModelReference((model.Key(type_=model.KeyTypes.ASSET_ADMINISTRATION_SHELL,
value='http://acplt.org/RefersTo/ExampleRefersTo'),),
model.AssetAdministrationShell),))
model.AssetAdministrationShell)],)

# Property-Element conform to 'Verwaltungssschale in der Praxis' page 41 ManufacturerName:
# https://www.plattform-i40.de/PI40/Redaktion/DE/Downloads/Publikation/2019-verwaltungsschale-in-der-praxis.html
Expand Down
2 changes: 1 addition & 1 deletion basyx/aas/model/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -1468,7 +1468,7 @@ def __init__(self,
self.value_type: Optional[DataTypeDefXsd] = value_type
self._value: Optional[ValueDataType]
self.value = value
self.refers_to: Iterable[ModelReference] = refers_to
self.refers_to: Set[ModelReference] = set(refers_to)
self.semantic_id: Optional[Reference] = semantic_id
self.supplemental_semantic_id: ConstrainedList[Reference] = ConstrainedList(supplemental_semantic_id)

Expand Down
Loading