Lehrstuhl für Informations- und Automatisierungssysteme issueshttps://git.rwth-aachen.de/groups/acplt/-/issues2021-01-20T11:08:21+01:00https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/122XSD: change `xs:sequence` to `xs:all`2021-01-20T11:08:21+01:00Leon Mauritz MöllerXSD: change `xs:sequence` to `xs:all`The XSD currently uses `xs:sequence` to define attributes of types. This requires the children of elements in XML documents to be in the exact same order as defined in the XSD, which results in the unnecessary work of re-ordering code-bl...The XSD currently uses `xs:sequence` to define attributes of types. This requires the children of elements in XML documents to be in the exact same order as defined in the XSD, which results in the unnecessary work of re-ordering code-blocks in serialization adapters, as seen in !67. Changing `xs:sequence` to `xs:all` would remove this limitation, allowing children in any order to be valid against the schema.
On the other hand I could see why you would want a certain order of elements. For example when manually inspecting XML documents (which can get quite large), a fixed order of elements would make objects easier to grasp.
But then again, you would most likely use XPath or good XML viewers to view such documents anyways.
What's your opinion on this?
forwarded to DotAAS-Group: [Issue 20](https://github.com/admin-shell-io/aas-specs/issues/20)https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/121model: Implement CustomSet() with Objekts unique by definied attribute2021-01-12T13:32:15+01:00Torben Minymodel: Implement CustomSet() with Objekts unique by definied attributeFor HasExtension and Qualifiable custom sets are needed that contain objects that are unique based on an attribute.
The sets have to be similar to the namespace set, which contains referable objects unique by idshort.
Maybe there is an...For HasExtension and Qualifiable custom sets are needed that contain objects that are unique based on an attribute.
The sets have to be similar to the namespace set, which contains referable objects unique by idshort.
Maybe there is an elegant way to make it generic, so that dublicated code can be avoid.
In conjunction with #118Torben MinyTorben Minyhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/120aasx.writer: Add searching and adding referenced ConceptDescriptions to write...2021-01-12T13:38:58+01:00Michael Thiesaasx.writer: Add searching and adding referenced ConceptDescriptions to write_aashttps://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/118model: Implement Constraint AASd-026: check for duplicate semanticID in Colle...2021-01-12T13:33:19+01:00Michael Thiesmodel: Implement Constraint AASd-026: check for duplicate semanticID in Collections with allowDuplicates=falseSooner or later, we need to implement some look-up mechanism for SubmodelElements by semanticId to provide the relevant API methods. When we implemented this, we can use it to check the constraint as well.
In conjunction with #121Sooner or later, we need to implement some look-up mechanism for SubmodelElements by semanticId to provide the relevant API methods. When we implemented this, we can use it to check the constraint as well.
In conjunction with #121Torben MinyTorben Minyhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/117model: Implement Constraint AASd-003: idShort shall be compared case-insensitive2021-01-12T13:33:24+01:00Michael Thiesmodel: Implement Constraint AASd-003: idShort shall be compared case-insensitiveThis can be implemented by adding a `.lower()` to the idShort in all places in `NamespaceSet` where the idShort is used as key for the internal dict, including item access, `.get()`, item deletion and item insertion.This can be implemented by adding a `.lower()` to the idShort in all places in `NamespaceSet` where the idShort is used as key for the internal dict, including item access, `.get()`, item deletion and item insertion.Torben MinyTorben Minyhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/116JSON schema: missing DataElement type2021-04-10T17:34:32+02:00Leon Mauritz MöllerJSON schema: missing DataElement typeThe JSON schema currently doesn't have any type for `DataElement`s. We suggest to add this missing type, so schema validators can spot incorrectly placed `SubmodelElement`s, e.g. where a `DataElement` is expected.
Additionally, the XML...The JSON schema currently doesn't have any type for `DataElement`s. We suggest to add this missing type, so schema validators can spot incorrectly placed `SubmodelElement`s, e.g. where a `DataElement` is expected.
Additionally, the XML Schema Definition has such a type, so adding this type would improve the consistency between the two schemas.
forwarded to DotAAS-Group: [Issue 21](https://github.com/admin-shell-io/aas-specs/issues/21)Leon Mauritz MöllerLeon Mauritz Möllerhttps://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/114Update to Version 3.0RC012021-01-12T13:34:29+01:00Torben MinyUpdate to Version 3.0RC01The following changes have been made compared to version 2.0.1:
- Strings must not be empty
- Constraints are now included in the respective class descriptions (Go through here, what is missing in our implementation)
- AssetIdentificatio...The following changes have been made compared to version 2.0.1:
- Strings must not be empty
- Constraints are now included in the respective class descriptions (Go through here, what is missing in our implementation)
- AssetIdentificationModel was added to the AAS
- ConceptDictionaries were removed
- SemanticID only optional
- Key.local was removed
- Entity.asset => Entity.globalAssetId and Entity.externalAssetId
- New classes Extension, HasExtension, IdentifierKeyValuePair
- DisplayName for referables introduced
- allowDuplicates in SMC is now clarified: Allow duplicates of semanticIdsTorben MinyTorben Minyhttps://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/112adapter: Allow passing a list of Identifiable objects to be ignored to read_a...2021-01-12T13:38:29+01:00Michael Thiesadapter: Allow passing a list of Identifiable objects to be ignored to read_aas_*_file()This feature is required by the AASXReader to silently ignore objects that are serialized redundantly in different formats (XML / JSON).
It should be implemented as an additional optional parameter, taking a `Set[Identifier]`.This feature is required by the AASXReader to silently ignore objects that are serialized redundantly in different formats (XML / JSON).
It should be implemented as an additional optional parameter, taking a `Set[Identifier]`.https://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`.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/109read_aas_json_file(file) supports only file-like object2021-10-31T23:26:01+01:00Igor Garmaevread_aas_json_file(file) supports only file-like object`read_aas_json_file(file: IO, **kwargs)` in json_deserialization.py currently supports only file-like objects, but it should also support filenames`read_aas_json_file(file: IO, **kwargs)` in json_deserialization.py currently supports only file-like objects, but it should also support filenamesStable library APIhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/108aasx.writer: Add function for writing a complete object store and file store ...2021-01-12T13:34:55+01:00Torben Minyaasx.writer: Add function for writing a complete object store and file store into an AASX-file as a convenience functionhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/107aasx: OPCPackageWriter.write_relationships() is called twice when submodel_sp...2020-11-02T15:02:36+01:00Leon Mauritz Mölleraasx: OPCPackageWriter.write_relationships() is called twice when submodel_split_parts is TrueThe following warnings are logged when running the AASX tests:
```
/usr/lib/python3.8/zipfile.py:1517: UserWarning: Duplicate name: 'aasx/https___acplt_org_Test_AssetAdministrationShell/_rels/https___acplt_org_Test_AssetAdministrationShe...The following warnings are logged when running the AASX tests:
```
/usr/lib/python3.8/zipfile.py:1517: UserWarning: Duplicate name: 'aasx/https___acplt_org_Test_AssetAdministrationShell/_rels/https___acplt_org_Test_AssetAdministrationShell.aas.xml.rels'
return self._open_to_write(zinfo, force_zip64=force_zip64)
/usr/lib/python3.8/zipfile.py:1517: UserWarning: Duplicate name: 'aasx/https___acplt_org_Test_AssetAdministrationShell/_rels/https___acplt_org_Test_AssetAdministrationShell.aas.json.rels'
return self._open_to_write(zinfo, force_zip64=force_zip64)
```
These are caused by `AASXWriter.write_aas()` calling `write_relationships()` by itself when `submodel_split_parts` is `True`. Since `write_aas()` also calls `write_aas_objects()`, which also writes relationships, this results in two calls to `write_relationships()` for the same AAS, which in turn results in duplicate names being written to the file.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/106examples.tutorial_dynamic_model: Adapt tutorial for new Referable.update/comm...2021-01-12T13:43:08+01:00Sebastian Heppners.heppner@iat.rwth-aachen.deexamples.tutorial_dynamic_model: Adapt tutorial for new Referable.update/commit-functionalityhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/105object store: Add functionality to get a referable object by path (Identifica...2020-10-28T16:44:53+01:00Torben Minyobject store: Add functionality to get a referable object by path (Identification, List(IdShort))https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/104backends: Allow multiple backends per source URI schema2021-01-12T13:35:11+01:00Michael Thiesbackends: Allow multiple backends per source URI schemaThis is a follow up to the !49 MR.This is a follow up to the !49 MR.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/103model/backends: Implement max_age parameter of Referable.update()2021-01-12T13:35:28+01:00Michael Thiesmodel/backends: Implement max_age parameter of Referable.update()This is a follow up to the !49 MR.This is a follow up to the !49 MR.