admin-shell-io / aas-specs-api

Repository of the Asset Administration Shell Specification DTA-01002 API
https://admin-shell-io.github.io/aas-specs-antora/index/home/index.html
Creative Commons Attribution 4.0 International
12 stars 5 forks source link

Different result formats #335

Open MichaelHoffmeisterFesto opened 1 month ago

MichaelHoffmeisterFesto commented 1 month ago

What is missing?

GetAllAssetAdministrationShellDescriptors() and GetAllAssetAdministrationShellIdsByAssetLink() return lists of AAS, but in different formats. Any chance to harmonize that?

How should it be fixed?

Return both time the descriptors

mjacoby commented 1 month ago

GetAllAssetAdministrationShellDescriptors aka /shell-descriptors returns elements of type AssetAdministrationShellDescriptor while GetAllAssetAdministrationShellIdsByAssetLink aka /lookup/shells returns simple strings which represent the identifiers of an AAS.

You are asking to harmonize the output which could be done in two ways - always return AssetAdministrationShellDescriptor or string. Returning only string would make the AAS registry useless so this is out of the question. Always return AssetAdministrationShellDescriptor also does not work, as both operations are part of different service definitions, i.e., can be implemented completely independent of each other which means that the service implementing GetAllAssetAdministrationShellIdsByAssetLink does not have the required information to return descriptor objects.

However, I assume I can see where you are coming from as I guess you assume that the AAS Basic Discovery API might be implemented together with the AAS Registry API, in which case, all the information would be present to return AssetAdministrationShellDescriptor. However, this would be an assumption that is not backed by the specification. There might also be other implementations, for example, FA³ST Service combines the AAS Basic Discovery API with the AAS Repository API.

Does this resolve your issue? If not, could you please provide a more detailed explanation what you think the problem is exactly and how you think it should be harmonized?

Disclaimer This is just my personal opinion and not the official opinion of the REST API working group.

MichaelHoffmeisterFesto commented 1 month ago

Yes, intention was to always get shell descriptors. If you see blocking points to not harmonize in this direction, I am fine. Closing the issue is fine. Just wanted to point to that possibility. Best Michael

mjacoby commented 1 month ago

The issue is that this is conceptually not possible because the operation GetAllAssetAdministrationShellIdsByAssetLink is not part of the AAS Registry Service Specification (see Table 1 at https://admin-shell-io.github.io/aas-specs-antora/IDTA-01002/v3.1/http-rest-api/service-specifications-and-profiles.html) and therefore might be part of a different implementation (or even implemented as stand-alone).

However, it would be possible to change this definition and make the AAS Basic Discovery API part of the AAS Registry Service Specification. This would have the following consequences

  1. Removal of Discovery Service Specification, i.e., there could no longer any stand-alone implementations of that service
  2. Every AAS registry needs to implement GetAllAssetAdministrationShellIdsByAssetLink

With these changes, it would be possible to change the return type to AssetAdministrationShellDescriptor.

Is this something you would like/propose?

MichaelHoffmeisterFesto commented 1 month ago

Hi, this is nothing that I could decide. And: it is just optimization and it changes interfaces, therefore it is only to be considerated for the next major version. However, in my case, a list of simple ids from GetAllAssetAdministrationShellIdsByAssetLink results in dozens of calls to GetConceptDescriptionById just in order to get the AdministrativeInformation, therefore there is an severe performance penalty. Again: I am fine if you put it on hold or closed.

BirgitBoss commented 3 weeks ago

It would also be possible to extend the Registry Service with GetAllAssetAdministrationShellIDescriptorsdsByAssetLink A disadvantage might be a more complex access control implementation.

However, probably these kinds of problems are solved as soon as we support a query language.