Lehrstuhl für Informations- und Automatisierungssysteme issueshttps://git.rwth-aachen.de/groups/acplt/-/issues2021-01-25T16:24:07+01:00https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/130Add property.setter for attributes of type NamespaceSet2021-01-25T16:24:07+01:00Igor GarmaevAdd property.setter for attributes of type NamespaceSetAll classes that inherit from class Namespace should have property.setter for each NamespaceSet attribute, so that each NamespaceSet attribute can be set with iterable object.
Example:
```
shell = AssetAdministrationShell(asset, identif...All classes that inherit from class Namespace should have property.setter for each NamespaceSet attribute, so that each NamespaceSet attribute can be set with iterable object.
Example:
```
shell = AssetAdministrationShell(asset, identification)
...
shell.view = [view1, view2, view3]
...
shell.view = (view1, view2)
```https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/129Add remove_file() in AbstractSupplementaryFileContainer class2021-01-25T14:41:25+01:00Igor GarmaevAdd remove_file() in AbstractSupplementaryFileContainer classAdd function `remove_file(self, name: str)` to the class `AbstractSupplementaryFileContainer` as it needs a functionality to delete files that are already placed in a container.Add function `remove_file(self, name: str)` to the class `AbstractSupplementaryFileContainer` as it needs a functionality to delete files that are already placed in a container.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/128Add reprs for classes GDay, GMonth, GMonthDay, GYearMonth, GYear2021-01-25T14:25:23+01:00Igor GarmaevAdd reprs for classes GDay, GMonth, GMonthDay, GYearMonth, GYearAdd reprs for classes GDay, GMonth, GMonthDay, GYearMonth, GYear in model/datatypes.pyAdd reprs for classes GDay, GMonth, GMonthDay, GYearMonth, GYear in model/datatypes.pyhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/126model: Add Iterable[...] with correct specialization as base class of Namespa...2021-01-12T13:30:48+01:00Michael Thiesmodel: Add Iterable[...] with correct specialization as base class of Namespace and inheriting classeshttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/124model: Fix docstring of AASReference.__init__ w.r.t. to target_type parameter2021-10-28T21:12:49+02:00Igor Garmaevmodel: Fix docstring of AASReference.__init__ w.r.t. to target_type parameterDelete `target_type` parameter in `__init__` of `AASReference`. Use for `type` type of last element of `key`.
If it is not possible, please fix doc of `__init__`: replace "type_" with "target_type"Delete `target_type` parameter in `__init__` of `AASReference`. Use for `type` type of last element of `key`.
If it is not possible, please fix doc of `__init__`: replace "type_" with "target_type"https://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/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/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/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/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/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/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.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/102Add optional serialization of `Referable.source`-attribute in JSON and XML2021-01-12T13:35:39+01:00Sebastian Heppners.heppner@iat.rwth-aachen.deAdd optional serialization of `Referable.source`-attribute in JSON and XMLIt is advantageous to be able to store source information in backends, for example for a Property with a deviating source (e.g. a sensor) compared to the rest of the AAS this property is part of.
Both the JSON and XML (de-)serializatio...It is advantageous to be able to store source information in backends, for example for a Property with a deviating source (e.g. a sensor) compared to the rest of the AAS this property is part of.
Both the JSON and XML (de-)serialization offer the option of adding optional additional content. The JSON schema specifically allows this, while the XML schema allows the adding of attributes to already existing elements. Therefore we would not loose schema compliance by adding the source information to the JSON and XML files.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/101model: Add string serialization/deserialization of Reference objects accordin...2021-01-12T13:36:19+01:00Michael Thiesmodel: Add string serialization/deserialization of Reference objects according to DotAAS sec. 5.2.1In Details of the Asset Administration Shell, section 5.2.1 (p. 95), a cannonical string representation of `Reference` objects is presented:
> In some mapping or serializations the Type “Reference” is converted into a single string. In ...In Details of the Asset Administration Shell, section 5.2.1 (p. 95), a cannonical string representation of `Reference` objects is presented:
> In some mapping or serializations the Type “Reference” is converted into a single string. In this case we recommend to use the following serilization:
>
> ```
> <Reference> ::= <Key>{,<Key>}*
> <Key> ::= (<KeyType>)(<Local>)[<KeyIdType>]<KeyValue>
> <KeyType> ::= value of AAS:Key/type
> <Local> ::= local | no-local
> <KeyIdType> ::= value of AAS:Key/.idType
> <KeyValue> ::= value of AAS:Key/value
> ```
>
> With `<Local> == local` if `AAS:Key/local = True` and `no-local` if `AAS:Key/local == False`.
>
> Examples:
> * `(ConceptDescription)(local)[IRDI]0173-1#02-BAA120#008`
> * `(GlobalReference)(no-local)[IRDI]0173-1#01-AFZ615#016`
> * `(Submodel)(local)[IRI]http://customer.com/demo/aas/1/1/1234859590,(Property)(local)[IdShort]Temperature`
(Plattform Industrie 4.0: "Details of the Asset Administration Shell – Part 1 - The exchange of information between partners in the value chain of Industrie 4.0 (Version 2.0.1)", CC BY-ND 4.0)
We could perfectly implement this representation as the `__str__` method of the `Reference` class and add a parser/constructor method like this:
```python3
@classmethod
def from_string(cls, value: str) -> "Reference":
# probably something with regex parsing here
```https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/91json/xml adapter: support serializing and deserializing stripped objects2021-01-12T13:36:29+01:00Leon Mauritz Möllerjson/xml adapter: support serializing and deserializing stripped objectsThe REST API requires serializing and deserializing stripped objects, without attributes for which a separate endpoint exists:
- `Qualifiable` (`SubmodelElement`, `DataElement`, `Submodel`) objects without the `qualifier` attribute
- `An...The REST API requires serializing and deserializing stripped objects, without attributes for which a separate endpoint exists:
- `Qualifiable` (`SubmodelElement`, `DataElement`, `Submodel`) objects without the `qualifier` attribute
- `AnnotatedRelationshipElement` without `annotation`
- `Entity` without `statements`
- `SubmodelElementCollection` without `value`
- `AssetAdministrationShell` without `views` and `submodel`
- `Submodel` without `submodel_element`
- **new in V3:** `HasExtension` (all `Referable`) objects without the `extension` attribute
Progress Tracker:
- [x] JSON Serialization
- [x] JSON Deserialization
- [ ] XML Serialization
- [x] XML Deserialization