Lehrstuhl für Informations- und Automatisierungssysteme issueshttps://git.rwth-aachen.de/groups/acplt/-/issues2021-01-18T17:28:12+01:00https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/11Add factory and / or manager module for simple construction of AASes2021-01-18T17:28:12+01:00Michael ThiesAdd factory and / or manager module for simple construction of AASesThe factory functions (which may be methods of a manager, that also includes an ObjectStore) should encapsulate all the boilerplate code required for constructing an AAS, constructing and adding a submodule, etc.The factory functions (which may be methods of a manager, that also includes an ObjectStore) should encapsulate all the boilerplate code required for constructing an AAS, constructing and adding a submodule, etc.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/17model: Subclass Identifier for different id types and use native types for id2021-01-12T13:37:57+01:00Michael Thiesmodel: Subclass Identifier for different id types and use native types for idStable library APIhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/18model: Merge KeyType and IdentifierType2021-01-12T13:37:45+01:00Michael Thiesmodel: Merge KeyType and IdentifierTypeStable library APIhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/19model: Remove Key.type2021-01-12T13:42:20+01:00Michael Thiesmodel: Remove Key.typeThis attribute is not required for resolving references.This attribute is not required for resolving references.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/28model: Operation should be a Namespace with three NameSpaceSets for its Opera...2021-01-12T13:42:15+01:00Michael Thiesmodel: Operation should be a Namespace with three NameSpaceSets for its OperationVariablesThis implementation has been reverted in https://git.rwth-aachen.de/acplt/pyi40aas/-/commit/0fee9b12537ed7b49ce3586d870bbc9cca93f636. We are currently awaiting feedback on this.
If this class stays in the metamodel, we could remove `Ope...This implementation has been reverted in https://git.rwth-aachen.de/acplt/pyi40aas/-/commit/0fee9b12537ed7b49ce3586d870bbc9cca93f636. We are currently awaiting feedback on this.
If this class stays in the metamodel, we could remove `OperationVariable` in our implementation and attach `SubmodelElement`s to the `Operation` directly, so we can make `Operation` a `Namespace`.
Adapters would then just "emulate" `OperationVariable`s.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/57XSD: unneccesary wrapper elements2021-01-20T11:07:04+01:00Sebastian Heppners.heppner@iat.rwth-aachen.deXSD: unneccesary wrapper elementsThe current version of the schema (v3.0 RC01) has unnecessary wrapper elements around each Submodel Element and Data Element.
forwarded to DotAAS-Group: [Issue 22](https://github.com/admin-shell-io/aas-specs/issues/22)
### Submodel E...The current version of the schema (v3.0 RC01) has unnecessary wrapper elements around each Submodel Element and Data Element.
forwarded to DotAAS-Group: [Issue 22](https://github.com/admin-shell-io/aas-specs/issues/22)
### Submodel Element
```xml
<submodelElements>
<submodelElement> <!-- this is unnecessary -->
<entity/>
</submodelElement>
<submodelElement> <!-- this is unnecessary -->
<property/>
</submodelElement>
[...]
</submodelElements>
```
We suggest the removal of the wrapper element:
```xml
<submodelElements>
<entity/>
<property/>
[...]
</submodelElements>
```
### Data Element
```xml
<annotations>
<dataElement> <!-- this is unnecessary -->
<property/>
</dataElement>
<dataElement> <!-- this is unnecessary -->
<range/>
</dataElement>
[...]
</annotations>
```
Again, we suggest the removal of the wrapper element:
```xml
<annotations>
<property/>
<range/>
[...]
</annotations>
```https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/73adapter.json: Use error handling pattern from xml_deserialization for json_de...2021-01-12T13:37:17+01:00Michael Thiesadapter.json: Use error handling pattern from xml_deserialization for json_deserializationIn the `aas.adapter.xml.xml_deserialization` we introduced an elegant error handling pattern to reduce code dupliction, consisting of the `_failsafe_construct()` and `_failsafe_construct_multiple()`, which wrap a constructor function to ...In the `aas.adapter.xml.xml_deserialization` we introduced an elegant error handling pattern to reduce code dupliction, consisting of the `_failsafe_construct()` and `_failsafe_construct_multiple()`, which wrap a constructor function to handle its raised Exceptions. We should apply the same pattern to the JSON deserialization.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/76Add HTTP API Server Implementation2021-01-12T13:39:11+01:00Michael ThiesAdd HTTP API Server Implementation… according to the current draft of DotAAS Part 2.
Our API Spec: https://git.rwth-aachen.de/leon.moeller/pyi40aas-oas… according to the current draft of DotAAS Part 2.
Our API Spec: https://git.rwth-aachen.de/leon.moeller/pyi40aas-oasBaSys interoperabilityLeon Mauritz MöllerLeon Mauritz Möllerhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/77Add HTTP API Client2021-01-12T13:39:07+01:00Michael ThiesAdd HTTP API Client… according to the current draft of DotAAS Part 2.
The client should allow to create "connected objects", which behave just like normal PyI40AAS objects but reflect the server's objects via their `update()` and `commit()` methods.… according to the current draft of DotAAS Part 2.
The client should allow to create "connected objects", which behave just like normal PyI40AAS objects but reflect the server's objects via their `update()` and `commit()` methods.BaSys interoperabilityhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/79Make DictObjectStore thread-safe (including object attribute access)2021-01-12T13:37:07+01:00Michael ThiesMake DictObjectStore thread-safe (including object attribute access)We need a concept for thread-safe object and attribute access to allow building multi-threaded applications. This is especially required to build a scalable web API using WSGI.We need a concept for thread-safe object and attribute access to allow building multi-threaded applications. This is especially required to build a scalable web API using WSGI.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/84aasx: Add more failsafe error handling2021-01-12T13:37:00+01:00Michael Thiesaasx: Add more failsafe error handlingCurrently, AASX reading raises an uncaught exception when an OPC part, referred to by a `File` object is not found or a duplicate `Identification` is found. We should handle those exceptions to make AASX reading more failsafe.Currently, AASX reading raises an uncaught exception when an OPC part, referred to by a `File` object is not found or a duplicate `Identification` is found. We should handle those exceptions to make AASX reading more failsafe.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/86sample data: Create an Asset and a ConceptDescription, referenced by multiple...2021-01-12T13:36:55+01:00Michael Thiessample data: Create an Asset and a ConceptDescription, referenced by multiple AAShttps://git.rwth-aachen.de/acplt/basys4.2/ccProfilesUA/-/issues/4Deploy docker build on server and make it public available2020-07-29T10:54:53+02:00Julian Grothoffj.grothoff@plt.rwth-aachen.deDeploy docker build on server and make it public availableDocker Build:
- [ ] Create a docker build in gitlab ci
- [ ] Deploy docker build to public docker repository on successful build from gitlab ci
Deploy on public available server
- [ ] Create or use server, that can run a docker containe...Docker Build:
- [ ] Create a docker build in gitlab ci
- [ ] Deploy docker build to public docker repository on successful build from gitlab ci
Deploy on public available server
- [ ] Create or use server, that can run a docker container in DMZ
- [ ] Make the server public available (firewall, routes, etc.)
- [ ] Update and restart docker container daily
Infos:
* https://www.innoq.com/de/articles/2018/10/continuous-integration-mit-docker-und-gitlab/#paketierendesdocker-images
* Host on dockerhub: `docker push acplt/basys:tagname`https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/89backend: Add a local file-based backend2021-01-12T13:36:48+01:00Sebastian Heppners.heppner@iat.rwth-aachen.debackend: Add a local file-based backendAdd a local backend for storing identifiable objects locally as json or xml filesAdd a local backend for storing identifiable objects locally as json or xml fileshttps://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 Deserializationhttps://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/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/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/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/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-functionality