Lehrstuhl für Informations- und Automatisierungssysteme issueshttps://git.rwth-aachen.de/groups/acplt/-/issues2022-01-10T14:58:04+01:00https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/149ConceptDescription will not be saved2022-01-10T14:58:04+01:00Igor GarmaevConceptDescription will not be savedConceptDescription will not be saved
Steps to reproduce the bug:
- Create Asset
- Create ConceptDescription
- Create Submodel with semantic_id Ref to ConceptDescription
- Create Shell with Ref to Asset and Ref to Submodel
- Save Shell i...ConceptDescription will not be saved
Steps to reproduce the bug:
- Create Asset
- Create ConceptDescription
- Create Submodel with semantic_id Ref to ConceptDescription
- Create Shell with Ref to Asset and Ref to Submodel
- Save Shell in .aasx in xml (AASXWriter.write_aas)
- Open Shell: ConceptDescription does not existhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/144AASX package explorer could not find submodels in example generated by test/a...2021-10-29T17:31:38+02:00Igor GarmaevAASX package explorer could not find submodels in example generated by test/adapter/aasx/test_aasx.pyI've generated an AASX-file with test/adapter/aasx/test_aasx.py und tried to load it to AASX package explorer. AASX package explorer opened the file, but it could not find submodels. [test.aasx](/uploads/927fcd07feb259bb9c6087f68e233162/...I've generated an AASX-file with test/adapter/aasx/test_aasx.py und tried to load it to AASX package explorer. AASX package explorer opened the file, but it could not find submodels. [test.aasx](/uploads/927fcd07feb259bb9c6087f68e233162/test.aasx)Leon Mauritz MöllerTorben MinyIgor GarmaevLeon Mauritz Möller2021-11-03https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/142model.aas: Initializing an AssetAdministrationShell does not add the submodel...2021-10-06T09:47:01+02:00Sebastian Heppners.heppner@iat.rwth-aachen.demodel.aas: Initializing an AssetAdministrationShell does not add the submodel to the proper NamespaceWhen initializing an AssetAdministrationShell (like in the examples):
```
submodel = model.Submodel(
identification=model.Identifier(
id_="https://example.com/resources/sm/testSubmodel",
id_type=model.Identif...When initializing an AssetAdministrationShell (like in the examples):
```
submodel = model.Submodel(
identification=model.Identifier(
id_="https://example.com/resources/sm/testSubmodel",
id_type=model.IdentifierType.IRI
),
id_short="SimulationModels"
)
aas = model.AssetAdministrationShell(
asset=model.AASReference.from_referable(model.Asset(
kind=model.AssetKind.INSTANCE,
identification=model.Identifier(
id_="https://example.com/resources/asset/{}".format(id_short),
id_type=model.IdentifierType.IRI
)
)),
identification=model.Identifier(
id_="https://example.com/resources/aas/{}".format(id_short),
id_type=model.IdentifierType.IRI
),
submodel={model.AASReference.from_referable(submodel)}
)
```
the submodel is not added to the AAS namespace:
```
s = aas.get_referable(id_short="SimulationModels")
>> KeyError: 'Referable with id_short SimulationModels not found in this namespace'
```https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/140submodels should be local in "create_example_asset_administration_shell'2021-06-21T11:40:52+02:00Ghost Usersubmodels should be local in "create_example_asset_administration_shell'When opening example_aas.create_full_example() output with AASX package explore, the submodels do not appare.
It seems the the submodels should be local(local=True) in create_example_asset_administration_shell
By manually changing it t...When opening example_aas.create_full_example() output with AASX package explore, the submodels do not appare.
It seems the the submodels should be local(local=True) in create_example_asset_administration_shell
By manually changing it to local, the AASX package explore can read the all the trees.
**The original create_full_example output:**
![full_example_original](/uploads/3977a971cbfaf8ee48624923f887dd90/full_example_original.png)
**After making submodels local:**
![full_example_edited](/uploads/6e3b98a3220bc8ae719e62f91438cce5/full_example_edited.png)
```
submodel={model.AASReference((model.Key(type_=model.KeyElements.SUBMODEL,
local=True,
value='http://acplt.org/Submodels/Assets/TestAsset/Identification',
id_type=model.KeyType.IRI),),
model.Submodel),
model.AASReference((model.Key(type_=model.KeyElements.SUBMODEL,
local=True,
value='http://acplt.org/Submodels/Assets/TestAsset/OperationalData',
id_type=model.KeyType.IRI),),
model.Submodel)
},
```https://git.rwth-aachen.de/acplt/rte-tools/rte/-/issues/3Document building with MSVC2021-05-21T10:56:53+02:00Michael ThiesDocument building with MSVChttps://git.rwth-aachen.de/acplt/rte-tools/rte/-/issues/2Document building and debugging with valgrind2021-05-19T08:51:43+02:00Michael ThiesDocument building and debugging with valgrindLars NothdurftLars Nothdurfthttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/138Missing <?xml Tag in docProps/core.xml in an AASX-Package2021-08-13T13:16:50+02:00Ghost UserMissing <?xml Tag in docProps/core.xml in an AASX-PackageBecause of missing XML tag <?xml version='1.0' encoding='UTF-8'?> some libraries (including .NET standard XML serializer) is unable to deserialize the file. Exception: Unknown content type.Because of missing XML tag <?xml version='1.0' encoding='UTF-8'?> some libraries (including .NET standard XML serializer) is unable to deserialize the file. Exception: Unknown content type.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/137json adapter: Qualifiable in aasJSONSchema.json seems wrong2021-04-13T02:23:59+02:00Ghost Userjson adapter: Qualifiable in aasJSONSchema.json seems wrongIt seems "items" in Qualifialbe/qualifiers should be #/definitions/Qualifier" instead of 'Constraint'
Reason: some example json serialization is not consistent with the json-scheme
```
"submodelElements": [{"idShort": "E...It seems "items" in Qualifialbe/qualifiers should be #/definitions/Qualifier" instead of 'Constraint'
Reason: some example json serialization is not consistent with the json-scheme
```
"submodelElements": [{"idShort": "ExampleProperty",
"modelType": {"name": "Property"},
"semanticId": {"keys": [{"type": "GlobalReference", "idType": "IRI", "value": "http://acplt.org/Properties/SimpleProperty", "local": false}]},
"value": "exampleValue",
"valueType": "string"}]}],
```
```json
"Qualifiable": {
"type": "object",
"properties": {
"qualifiers": {
"type": "array",
"items": {
"$ref": "#/definitions/Constraint"
}
}
}
},
```https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/136Update project structure in README.md2021-04-12T11:47:43+02:00Igor GarmaevUpdate project structure in README.mdAdd submodul `aas.backends` and his description to `Project Structure` part in README.MDAdd submodul `aas.backends` and his description to `Project Structure` part in README.MDhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/135Get back Namespace base class in V30RC012021-04-09T17:13:29+02:00Igor GarmaevGet back Namespace base class in V30RC01The `get_referable`/`get_object_by_semantic_id` and `remove_referable`/`remove_object_by_semantic_id` functions are almost the same in classes `UniqueIdShortNamespace` and `UniqueSemanticIdNamespace`. It would be reasonable to add `Name...The `get_referable`/`get_object_by_semantic_id` and `remove_referable`/`remove_object_by_semantic_id` functions are almost the same in classes `UniqueIdShortNamespace` and `UniqueSemanticIdNamespace`. It would be reasonable to add `Namespace` base class with private methods that would generalize the get/remove funcs. These would then be reused in subclasses `UniqueIdShortNamespace` and `UniqueSemanticIdNamespace`Torben MinyTorben Minyhttps://git.rwth-aachen.de/acplt/rte-tools/rte/-/issues/1Build with OV_VALGRIND fails2021-03-18T23:01:03+01:00Michael ThiesBuild with OV_VALGRIND failsWhen enabling OV_VALGRIND, the OV build fails with the following error.
Compiler: gcc (Debian 8.3.0-6) 8.3.0
```txt
rte/core/ov/source/ov_vendortree.c:113:28: error: ‘ov_vendortree_getUseMalloc’ undeclared here (not in a function); did...When enabling OV_VALGRIND, the OV build fails with the following error.
Compiler: gcc (Debian 8.3.0-6) 8.3.0
```txt
rte/core/ov/source/ov_vendortree.c:113:28: error: ‘ov_vendortree_getUseMalloc’ undeclared here (not in a function); did you mean ‘ov_vendortree_getRTAlloc’?
{ "use_malloc", NULL, ov_vendortree_getUseMalloc, ov_vendortree_setUseMalloc },
^~~~~~~~~~~~~~~~~~~~~~~~~~
ov_vendortree_getRTAlloc
rte/core/ov/source/ov_vendortree.c:113:56: error: ‘ov_vendortree_setUseMalloc’ undeclared here (not in a function); did you mean ‘ov_vendortree_getRTAlloc’?
{ "use_malloc", NULL, ov_vendortree_getUseMalloc, ov_vendortree_setUseMalloc },
^~~~~~~~~~~~~~~~~~~~~~~~~~
ov_vendortree_getRTAlloc
```https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/132xml: IndexError when parsing XML with empty <qualifier/> tags2021-02-01T17:58:25+01:00Ghost Userxml: IndexError when parsing XML with empty <qualifier/> tagsI used the AASX Package Explorer (version 2021-01-16.alpha) to create a minimal AASX file with one asset, one AAS, one submodel and one property (see [test1.aasx](/uploads/d8346c248f78415c28e5a5f025cfe7f7/test1.aasx)). When opening the ...I used the AASX Package Explorer (version 2021-01-16.alpha) to create a minimal AASX file with one asset, one AAS, one submodel and one property (see [test1.aasx](/uploads/d8346c248f78415c28e5a5f025cfe7f7/test1.aasx)). When opening the file with PyI40AAS, I get an `IndexError`:
```
Traceback (most recent call last):
File "open-aas.py", line 16, in <module>
reader.read_into(object_store, file_store)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\aasx.py", line 139, in read_into
self._read_aas_part_into(aas_part, object_store, file_store, read_identifiables, override_existing)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\aasx.py", line 180, in _read_aas_part_into
for obj in self._parse_aas_part(part_name):
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\aasx.py", line 210, in _parse_aas_part
return read_aas_xml_file(p)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 1398, in read_aas_xml_file
read_aas_xml_file_into(object_store, file, **kwargs)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 1366, in read_aas_xml_file_into
for element in _child_construct_multiple(list_, element_tag, constructor, decoder_.failsafe):
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 326, in _failsafe_construct_multiple
parsed = _failsafe_construct(element, constructor, failsafe, **kwargs)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 280, in _failsafe_construct
return constructor(element, **kwargs)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 982, in construct_submodel
constructed = _failsafe_construct(submodel_element[0], cls.construct_submodel_element, cls.failsafe)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 280, in _failsafe_construct
return constructor(element, **kwargs)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 665, in construct_submodel_element
return cls.construct_data_element(element, abstract_class_name="SubmodelElement", **kwargs)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 685, in construct_data_element
return data_elements[element.tag](element, **kwargs)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 851, in construct_property
cls._amend_abstract_attributes(property_, element)
File "c:\users\krahlro\venv\aas\src\pyi40aas\aas\adapter\xml\xml_deserialization.py", line 446, in _amend_abstract_attributes
constructed = _failsafe_construct(constraint[0], cls.construct_constraint, cls.failsafe)
File "src\lxml\etree.pyx", line 1161, in lxml.etree._Element.__getitem__
IndexError: list index out of range
```
This is the code I used to open the file:
```python
filename = sys.argv[1]
try:
object_store = model.DictObjectStore()
file_store = aasx.DictSupplementaryFileContainer()
with aasx.AASXReader(filename) as reader:
reader.read_into(object_store, file_store)
cp = reader.get_core_properties()
print(filename, "SUCCESS", cp, sep="\t")
except:
print(filename, "ERROR", sep="\t", flush=True)
traceback.print_exc()
```
The error occurs both with the 0.2.0 release and the current development version 852c6f0a2571407030d9d49c8d72189a52dc9a85.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/127model: Referable.update_from() not working properly for contained Referable o...2021-01-27T13:47:54+01:00Ghost Usermodel: Referable.update_from() not working properly for contained Referable objectsHi there,
I was testing the examples folder - especially the backend couchdb part - and there is a problem with the line `example_submodel1.update()`. Lines above that work fine. Seems like there is something wrong with `.update()` and ...Hi there,
I was testing the examples folder - especially the backend couchdb part - and there is a problem with the line `example_submodel1.update()`. Lines above that work fine. Seems like there is something wrong with `.update()` and `.commit()` ?
I'm receiving these errors:
```
PS C:\Users\samed\Desktop\pyi40aas\aas\examples> & "C:/Program Files/Python37/python.exe" "c:/Users/samed/Desktop/pyi40aas/aas/examples/tutorial_backend_couchdb.py"
Traceback (most recent call last):
File "C:\Users\samed\AppData\Roaming\Python\Python37\site-packages\aas\backend\backends.py", line 154, in get_backend
return _backends_map[scheme]
KeyError: 'couchdb'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "c:/Users/samed/Desktop/pyi40aas/aas/examples/tutorial_backend_couchdb.py", line 118, in <module>
example_submodel1.update()
File "C:\Users\samed\AppData\Roaming\Python\Python37\site-packages\aas\model\base.py", line 507, in update
backends.get_backend(self.source).update_object(updated_object=self,
File "C:\Users\samed\AppData\Roaming\Python\Python37\site-packages\aas\backend\backends.py", line 156, in get_backend
raise UnknownBackendException("Could not find Backend for source '{}'".format(url)) from e
aas.backend.backends.UnknownBackendException: Could not find Backend for source 'couchdb://localhost:5984/aas_test/IRI-http%3A%2F%2Facplt.org%2FSubmodels%2FAssets%2FTestAsset%2FIdentification'
```
Thanks and kind regards,
Samedhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/125model: Refereable._set_id_short should change the id_short entry in the Names...2021-02-01T10:35:36+01:00Michael Thiesmodel: Refereable._set_id_short should change the id_short entry in the Namespace's _backend dictCurrently we only check for duplicate id_shorts in the same Namespace, when an id_short is changed (#100). However, we must also update the NamespaceSet with the new id_short of the Referable object to ensure correct duplicate checking a...Currently we only check for duplicate id_shorts in the same Namespace, when an id_short is changed (#100). However, we must also update the NamespaceSet with the new id_short of the Referable object to ensure correct duplicate checking and id_short-resolving in the future.
This must also be implemented for other unique attributes in the future (see #121).Torben MinyTorben Minyhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/123Add typehint to SubmodelElementCollection.ordered2021-11-09T12:37:27+01:00Igor GarmaevAdd typehint to SubmodelElementCollection.orderedAdd typehint to SubmodelElementCollection.orderedAdd typehint to SubmodelElementCollection.orderedhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/119Remove Asset object2021-10-28T21:15:44+02:00Michael ThiesRemove Asset objectAfter updating to DotAAS version 3.0-rc1, we can remove the Asset object from our model, since it does not provide any information anymore.
To do so, we should:
* remove class `Asset`
* drop Assets in deserialized files silently
* still...After updating to DotAAS version 3.0-rc1, we can remove the Asset object from our model, since it does not provide any information anymore.
To do so, we should:
* remove class `Asset`
* drop Assets in deserialized files silently
* still, add an empty `Assets` list to serlized files to stay compliant to the schemas
* remove KeyElements.ASSET
* change Keys with type==Asset to type==GlobalReference in deserialized files silently
* Mention how we handled assets in (module) docstring(s)https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/115These docstrings may need a rework2021-02-25T11:11:48+01:00Sebastian Heppners.heppner@iat.rwth-aachen.deThese docstrings may need a reworkThis is a collection of docstrings that may need some reformulating. I am happy to provide it, though would like to discuss the content beforhand.
* [x] `model.__init__`: Update docstring
* [x] `aas` module docstring and `aas.Asset` sho...This is a collection of docstrings that may need some reformulating. I am happy to provide it, though would like to discuss the content beforhand.
* [x] `model.__init__`: Update docstring
* [x] `aas` module docstring and `aas.Asset` should have a note about how `Assets` are handled now
* [x] `aas.View`: Resolve "Todo: What does this do exactly?" and with resolving, update docstring to be clear about what it does.
* [x] `base.Qualifiable`: Unclear formulation
* [x] `base.HasExtension`: Unclear explanation of attribute `namespace_element_sets`
* [x] `base.Referable.parent`: Confusing by mentioning a `Reference`, even though it is actually a `Namespace`
* [x] `base.Reference.key`: Unclear formulation
* [x] `base.UnexpectedTypeError`: `base.Reference` does not have a method `resolve()`
* [x] `base.ValueReferencePair`: Unclear formulation, does not have any reference to any other part of the meta-model
* [x] `provider.AbstractObjectProvider.get_identifiable`:
* Docstring says "find identifiable by id_short", parameter is of type `base.Identifier` though.
* Missing docstring for ":param: identifier"
* ":raises: KeyError: Mentioning `Referable` here, while correct, may be confusing to some. Maybe use `Identifiable` here?
* [x] `provider.AbstractObjectStore.update`: Missing docstring
* [x] `submodel.OperationVariable`: is in fact, not a `SubmodelElement`
* [x] `submodel.RelationshipElement`: The mentioned subject-object relation is unclear to me. Disregard this, if this a concept I simply don't know
* [x] `Referable.display_name` description is unclear
* [x] `base.Formula`: If we don't support it anymore (in V30RC1, because formulas are not unambiguously identifiable), mention this somewhere where it makes sense
* [x] `aas.adapter.__init__`: Update docstring
* [x] `adapter.json.json_deserialization`: Second paragraph of module docstring seems outdated
* [x] `model.base.LangStringSet`: Has no Entry in the documentation (Due to it being Dict[str, str]) and no class
* [x] `model.base.ValueList`: Has not Entry in the documentation
* [x] `backend.__init__`: Missing module docstring
* [x] `backend.couchdb`: Missing module docstringSebastian Heppners.heppner@iat.rwth-aachen.deSebastian Heppners.heppner@iat.rwth-aachen.dehttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/113Make DictSupplementaryFileContainer iterable2020-11-25T10:42:59+01:00Igor GarmaevMake DictSupplementaryFileContainer iterableThe class `DictSupplementaryFileContainer` which will be used as file store is currently not iterable. I think it would make sense make it iterable through `_name_map`. Now it is not possible to get any file stored in `DictSupplementaryF...The class `DictSupplementaryFileContainer` which will be used as file store is currently not iterable. I think it would make sense make it iterable through `_name_map`. Now it is not possible to get any file stored in `DictSupplementaryFileContainer` with public methods or members without filenamehttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/111compliance tool: Delete function "check if a given xml or json file is compli...2020-11-19T14:26:00+01:00Torben Minycompliance tool: Delete function "check if a given xml or json file is compliant to the official schema"This function suggests that a file conforms to the schema, but this is not true since many constraints are not included in the schema.This function suggests that a file conforms to the schema, but this is not true since many constraints are not included in the schema.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/110make `Namespace` iterable2020-11-25T10:42:59+01:00Leon Mauritz Möllermake `Namespace` iterable@zrgt suggested on Zulip, that classes like `Submodel` and `SubmodelElementCollection` should be iterable.
@mhthies suggested to make Namespaces iterable with an implementation similar to the following:
```py
class Namespace:
[…]
...@zrgt suggested on Zulip, that classes like `Submodel` and `SubmodelElementCollection` should be iterable.
@mhthies suggested to make Namespaces iterable with an implementation similar to the following:
```py
class Namespace:
[…]
def __iter__(self):
return itertools.chain.from_iterable(self.namespace_element_sets)
```
This would make all classes which inherit from `Namespace` iterable over their contained `NamespaceSet`s, namely `AssetAdministrationShell`, `Submodel`, `SubmodelElementCollection`, `AnnotatedRelationshipElement` and `Entity`.