This is a proof-of-concept implementation for a simple semantic matcher for an AAS Repository.
Here's what it does:
- It connects to an existing AAS Repository Server
- It queries and indexes all the
semanticIDs
of the Submodels stored in that Repository Server - It returns the semantically equivalent
semanticIDs
in a specific format needed forSubmodel Conformance Checking
In order to run this script directly, you first need to install the dependencies:
Note
We advise you to create a virtual environment to install the dependencies and run the script.
pip install -r requirements.txt
Then, you can run the script via:
python aas_repository_semantic_matcher/matcher.py "http://localhost:8080/api/v3.0"
where "http://localhost:8080/api/v3.0"
is the endpoint of the AAS Repository Server.
You can find then a created file with links between submodel elements based on the found semantic matches on the top level of this repository: semanticLinks.xml
In order to run the script via Docker, you first need to build the container from the Dockerfile
:
sudo docker build -t aas_repository_matcher .
Hereby, aas_repository_matcher
is the name you want to give the image.
Then, you can run a container based on this image:
sudo docker run -e REPOSITORY_ENDPOINT="http://host.docker.internal:8080/api/v3.0" --name aas_repository_matcher_container aas_repository_matcher
where REPOSITORY_ENDPOINT
specifies the endpoint of the AAS Repository Server,
aas_repository_matcher_container
is the name you want to give your container and
aas_repository_matcher
is the name you gave the image in the command above.
You can get a created file with links between submodel elements based on the found semantic matches via:
sudo docker cp aas_repository_matcher_container:/app/semanticLinks.xml ./
where aas_repository_matcher_container
is the name you gave the container in the command above (not the image!)
and the last argument is the path where you want to place the file on your host.
Note
Your http://localhost
on the Docker Host is accessible via http://host.docker.internal
inside the container,
so you need to adapt the endpoint accordingly. All other endpoints e.g. https://iat.rwth-aachen.de
should work without adjustment.