Skip to content

[DO-NOT-MERGE]: AAS Demonstrator#542

Draft
zrgt wants to merge 12 commits into
eclipse-basyx:developfrom
rwth-iat:aas-demonstrator
Draft

[DO-NOT-MERGE]: AAS Demonstrator#542
zrgt wants to merge 12 commits into
eclipse-basyx:developfrom
rwth-iat:aas-demonstrator

Conversation

@zrgt
Copy link
Copy Markdown
Contributor

@zrgt zrgt commented May 12, 2026

No description provided.

zrgt and others added 12 commits May 12, 2026 19:18
- Fix SUBMODEL_READ/SUBMODEL_VALUE names (were swapped: SSP-002=Read, SSP-003=Value)
- Rename AAS_REPOSITORY_BULK -> AAS_REPOSITORY_QUERY (SSP-003 is Query, no Bulk exists)
- Rename SUBMODEL_REPOSITORY_BULK -> SUBMODEL_REPOSITORY_TEMPLATE (SSP-003 is Template)
- Rename CONCEPT_DESCRIPTION_REPOSITORY_READ -> CONCEPT_DESCRIPTION_REPOSITORY_QUERY (SSP-002)
- Remove CONCEPT_DESCRIPTION_REPOSITORY_BULK (SSP-003 does not exist in spec)
- Add AAS_REGISTRY_QUERY (SSP-004), AAS_REGISTRY_MINIMAL_READ (SSP-005)
- Add SUBMODEL_REGISTRY_QUERY (SSP-004)
- Add SUBMODEL_REPOSITORY_TEMPLATE_READ (SSP-004), SUBMODEL_REPOSITORY_QUERY (SSP-005)
…d get_concept_description_all

Closes eclipse-basyx#539

Both handlers called response_t(..., cursor=cursor) but APIResponse.__init__
accepts paging_metadata, not cursor. _get_slice() already returns
Optional[PagingMetadata] as its second value, so the variable just needs
to be passed under the correct keyword argument name.
- server/app/backend/neo4j.py: factory building Neo4jObjectStore from env vars
  (NEO4J_URI, NEO4J_USER, NEO4J_PASSWORD)
- run_repository.py: detect STORAGE_BACKEND=neo4j, load input files into Neo4j
  on startup via load_directory(); skip already-existing identifiables
- repository.py: POST /query/submodels (SSP-005) and POST /query/shells (SSP-003)
  accept AASQL JSON, compile to Cypher via convert_aasql_to_cypher(), execute
  against Neo4j, return QueryResultSubmodel / QueryResultAssetAdministrationShell
- service_specification.py: add AAS_REPOSITORY_QUERY and SUBMODEL_REPOSITORY_QUERY
  profile enum values; include both in SUPPORTED_PROFILES
load_directory() accumulates all files into one DictIdentifiableStore
which raises KeyError on duplicate identifiable IDs. Load each file
into a separate store, then add to Neo4j skipping duplicates.
Docker container DNS resolution may transiently fail with [Errno -3]
immediately after container start before the network namespace is
fully configured. Retry up to 10 times with 3s delay on ServiceUnavailable
before giving up.
…plugin

Neo4j-specific logic moved to aas_mapping/server/ in aas4graph (neo4aas):
- Delete server/app/backend/neo4j.py (now in aas4graph, copied by Dockerfile)
- run_repository.py: replace inline Neo4j block with plugin call
  build_neo4j_storage(env_input, logger) from app.backend.neo4j
- repository.py: remove _query_neo4j / query_shells / query_submodels methods,
  remove /query/shells and /query/submodels URL rules,
  remove AAS_REPOSITORY_QUERY / SUBMODEL_REPOSITORY_QUERY from SUPPORTED_PROFILES
  (advertised only by Neo4jWSGIApp in aas4graph)
… routes

Introduce @runtime_checkable QueryableObjectStore Protocol in base.py so
object stores can opt into AASQL query support without explicit inheritance.

WSGIApp gains POST /query/shells and /query/submodels endpoints that delegate
to object_store.query(). get_description() dynamically advertises query
profiles when the store satisfies the protocol.
@s-heppner s-heppner marked this pull request as draft May 13, 2026 12:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant