Lehrstuhl für Informations- und Automatisierungssysteme issueshttps://git.rwth-aachen.de/groups/acplt/-/issues2020-07-29T10:54:53+02:00https://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/141Does compliance_tool check consistency between model.Reference's value and id...2021-07-08T08:16:48+02:00Ghost UserDoes compliance_tool check consistency between model.Reference's value and id_type?example_aas.py
It seems that the semantic_id of "ManufactureName" has reference to ELCASS.
But the code in example_aas.py uses IRI instead of IRDI for its id_type.
Do you think this kind of inconsistency can be detected by the compl...example_aas.py
It seems that the semantic_id of "ManufactureName" has reference to ELCASS.
But the code in example_aas.py uses IRI instead of IRDI for its id_type.
Do you think this kind of inconsistency can be detected by the complience_tool?
semantic_id=model.Reference((model.Key(type_=model.KeyElements.GLOBAL_REFERENCE,
local=False,
value='0173-1#02-AAO677#002',
id_type=model.KeyType.IRI),)), <--- should be IRDIhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/152Example AAS with constraint violation2022-01-20T18:13:00+01:00Igor GarmaevExample AAS with constraint violationOperationVariable in ExampleOperation-Object from create_full_example() has kind=ModelingType.INSTANCE. It is a Constraint violation.OperationVariable in ExampleOperation-Object from create_full_example() has kind=ModelingType.INSTANCE. It is a Constraint violation.https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/131examples: These tutorials need updating2021-01-27T14:10:14+01:00Sebastian Heppners.heppner@iat.rwth-aachen.deexamples: These tutorials need updating- [ ] `tutorial_dynamic_model`: does not exist
- [ ] `docs/source/tutorials/tutorial_serialization_deserialization.rst`: Fix missing link to `tutorial_dynamic_model`
- [ ] `tutorial_create_simple_aas`: Introduction is outdated
- [ ] `tut...- [ ] `tutorial_dynamic_model`: does not exist
- [ ] `docs/source/tutorials/tutorial_serialization_deserialization.rst`: Fix missing link to `tutorial_dynamic_model`
- [ ] `tutorial_create_simple_aas`: Introduction is outdated
- [ ] `tutorial_serialization_deserialization`: Step 1 is outdated
One problem, that we currently have with the tutorials, is that we have to maintain two versions. Firstly, the `examples.tutorial` python modules and secondly the `docs/source/tutorials/*.rst` restructured text files. When we begin to host the documentation, I would propose we only keep the restructured text ones.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/145Fix id_short checks and default values2021-11-10T17:23:25+01:00Michael ThiesFix id_short checks and default valuesid_short constraint checks are broken on multiple branches. Additionally, they seem not to be standard compliant w.r.t. optional/mandatory-ness. And, the default value for optional id_short attributes in the constructor arguments (on V3....id_short constraint checks are broken on multiple branches. Additionally, they seem not to be standard compliant w.r.t. optional/mandatory-ness. And, the default value for optional id_short attributes in the constructor arguments (on V3.0RC02) should not be "NotSet", but None.
For mandatory id_short (according to the standard) we could still allow `id_short == None` as long as the object is not part of a Namespace (i.e. as long as `parent is None`).https://git.rwth-aachen.de/acplt/pyi40aas/-/issues/150IEC61360ConceptDescription recognized as ConceptDescription2022-01-19T07:38:33+01:00Igor GarmaevIEC61360ConceptDescription recognized as ConceptDescription"Weight" IEC61360ConceptDescription in [17_ABB.aasx](http://www.admin-shell-io.com/samples/aasx/17_ABB.aasx) is recognized as ConceptDescription."Weight" IEC61360ConceptDescription in [17_ABB.aasx](http://www.admin-shell-io.com/samples/aasx/17_ABB.aasx) is recognized as ConceptDescription.Leon Mauritz MöllerLeon Mauritz Möllerhttps://git.rwth-aachen.de/acplt/pyi40aas/-/issues/146invalid ValueType langString2021-12-03T10:11:31+01:00janfelixkleininvalid ValueType langStringHello,
I just came across your asset administration implementation in python and wanted to try it out by using the commonly used example:
`Example_AAS_ServoDCMotor_21.xml`
However, when using the xml adapter, some submodel elements can...Hello,
I just came across your asset administration implementation in python and wanted to try it out by using the commonly used example:
`Example_AAS_ServoDCMotor_21.xml`
However, when using the xml adapter, some submodel elements cannot be created due to the following problem:
`ValueError: aas:valueType on line 108 has invalid text: langString`
As it seems like langString is not a supported valueType since it is not part of the dictionary where it is searched for during the deseialization process:
`{'duration': <class 'dateutil.relativedelta.relativedelta'>, 'dateTime': <class 'datetime.datetime'>, 'date': <class 'aas.model.datatypes.Date'>, 'time': <class 'datetime.time'>, 'gYearMonth': <class 'aas.model.datatypes.GYearMonth'>, 'gYear': <class 'aas.model.datatypes.GYear'>, 'gMonthDay': <class 'aas.model.datatypes.GMonthDay'>, 'gMonth': <class 'aas.model.datatypes.GMonth'>, 'gDay': <class 'aas.model.datatypes.GDay'>, 'boolean': <class 'bool'>, 'base64Binary': <class 'aas.model.datatypes.Base64Binary'>, 'heyBinary': <class 'aas.model.datatypes.HexBinary'>, 'float': <class 'aas.model.datatypes.Float'>, 'double': <class 'float'>, 'decimal': <class 'decimal.Decimal'>, 'integer': <class 'int'>, 'long': <class 'aas.model.datatypes.Long'>, 'int': <class 'aas.model.datatypes.Int'>, 'short': <class 'aas.model.datatypes.Short'>, 'byte': <class 'aas.model.datatypes.Byte'>, 'nonPositiveInteger': <class 'aas.model.datatypes.NonPositiveInteger'>, 'negativeInteger': <class 'aas.model.datatypes.NegativeInteger'>, 'nonNegativeInteger': <class 'aas.model.datatypes.NonNegativeInteger'>, 'positiveInteger': <class 'aas.model.datatypes.PositiveInteger'>, 'unsignedLong': <class 'aas.model.datatypes.UnsignedLong'>, 'unsignedShort': <class 'aas.model.datatypes.UnsignedShort'>, 'unsignedByte': <class 'aas.model.datatypes.UnsignedInt'>, 'anyURI': <class 'aas.model.datatypes.AnyURI'>, 'string': <class 'str'>, 'normalizedString': <class 'aas.model.datatypes.NormalizedString'>}`
Is this correct or am I missing something?https://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/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/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/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/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/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/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/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/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/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/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/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.