Skip to content

Extend Query Language to also support administrative Data #562

@BirgitBoss

Description

@BirgitBoss

What is missing?

So far <FieldIdentifierAAS> and <FieldIdentifierAasDescriptor> do not support administrativeData

So no queries for the attributes "createdAt" and "updatedAt" are possible.
Also no queries considering the order of versioning are possible: "version" and "revision".

Example to be supported: Find all AAS created or updated before 01.03.2025

$and(
   $aas#administration.updatedAt   $le "2025-03-01",
   $aas#administration.createdAt   $le "2025-03-01",
)

or (see also request in #176): Find all AAS created in range between 01.01.2025 and 01.03.2025.

$and(
   $aas#administration.createdAt   $ge "2025-01-01",
   $aas#administration.createdAt   $le "2025-03-01",
)

same for AASDescriptor, here find all AASDescriptors that were created after 01.01.2025

$aasdesc#administration.createdAt   $ge "2025-01-01",

To Be Done

FieldIdentifierAAS

change
<FieldIdentifierAAS> ::= "$aas#" ( "idShort" | "id" | "assetInformation.assetKind" | "assetInformation.assetType" | "assetInformation.globalAssetId" | "assetInformation." <SpecificAssetIdsClause> | "submodels." <ReferenceClause> )
to
<FieldIdentifierAAS> ::= "$aas#" ( "idShort" | "id" | "assetInformation.assetKind" | "assetInformation.assetType" | "assetInformation.globalAssetId" | "assetInformation." <SpecificAssetIdsClause> | "submodels." <ReferenceClause> )

FieldIdentifierAasDescriptor

change

<FieldIdentifierAasDescriptor> ::= "$aasdesc#" ( "idShort" | "administration".createdAt" | "administration".updatedAt" | "administration".version" | "administration".revision" | "id" | "assetKind" | "assetType" | "globalAssetId" | <SpecificAssetIdsClause> | "endpoints" ( "[" ( [0-9]* ) "]" ) "." <EndpointClause> | "submodelDescriptors" ( "[" ( [0-9]* ) "]" ) "." <SmDescriptorClause> )

to

<FieldIdentifierAasDescriptor> ::= "$aasdesc#" ( "idShort" | "administration".createdAt" | "administration".updatedAt" | "administration".version" | "administration".revision" | "id" | "assetKind" | "assetType" | "globalAssetId" | <SpecificAssetIdsClause> | "endpoints" ( "[" ( [0-9]* ) "]" ) "." <EndpointClause> | "submodelDescriptors" ( "[" ( [0-9]* ) "]" ) "." <SmDescriptorClause> )

Update Table 2

Add new fields to table 2: Attribute Elements for Field Identifiers. is an optional nonNegativeInteger value. No shall be interpreted as 'anywhere in the list'.

Update Comparison table

Add example for comparison of dates in Table in chapter https://industrialdigitaltwin.io/aas-specifications/IDTA-01002/v3.1.1/query-language.html#_example

add examples

Add examples as sketched above

Open Question

Do we need Casting $dateTime() for these comparisons?
For example

$aasdesc#administration.createdAt   $ge $dateTime("2025-01-01")

The specification is saying the following:

Implicite casting is used together with FieldIdentifiers. FieldIdentifiers are generally treated as xs:string in the query language.
If a FieldIdentifier is used in a logicalExpression, it will be implicitely casted to xs:boolean, which can only create a valid result for the values true and false.
If a FieldIdentifier is used in a comparison, the second parameter decides implicite casting. If the second parameter is a constant (string, number, hex, boolean, dateTime, time) or a corresponding explicite casting operator, the value of the FieldIdentifier will be implicitely casted to the corresponding data type.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions