This repository is for the paper titled Constructing Digital Twin Services: Applying an Ontologically-Based Workflow Approach in Practice.
It includes the Digital Twin Deployment Workflow (DTDW) Ontology in OML, and two cases described in the paper. These contain Jupyter notebooks, Modelica models executed via OpenModelica, and a RabbitMQ server used for inter-process communication.
There are two cases in this reproducibility package.
- The wind turbine case, first described in Towards Ontological Service-Driven Engineering of Digital Twins. This case has Jupyter notebooks to follow and execute.
- The concrete mixing case described in the paper. As this case is industrially-sensitive, only the Jupyter notebook skeleton and empty files are provided.
Ensure you have the following installed:
- Python 3.8+
- Jupyter Notebook
- OpenModelica (Tested with version v1.20 on Windows)
- Docker + Docker Compose
git
For the ontological loading/querying/etc., please see the README in the dtdw_ontology folder.
For the instructions below, please run them in the wind_turbine_case folder.
Python packages (listed in requirements.txt):
pip install -r requirements.txt-
Clone the repository:
git clone <repository-url> cd <repository-name>
-
Set up the RabbitMQ Docker container: Navigate to rabbit_server and run:
docker compose up -d
This will launch RabbitMQ and expose it on the default ports.
-
Verify that RabbitMQ is running:
- Management UI: http://localhost:15672 (username:
incubator, password:incubator) - AMQP URL:
amqp://localhost:5672
- Management UI: http://localhost:15672 (username:
-
Install OpenModelica and check that OpenModelica (
omc) is in your PATH:
```bash
omc --version
```
If not, add it to your PATH environment variable.
-
Start Jupyter Notebook:
jupyter notebook
-
Navigate to the current directory and open the notebooks. They need to be run in order: first the modelling_workflow and then the service_deployment_workflow.
-
The notebooks will:
- Compile and simulate Modelica models using
omc. - Interact with RabbitMQ for communication or data collection.
- Save results in
results/. - Illustrate the methodology discussed in the paper.
- Compile and simulate Modelica models using
-
If RabbitMQ is not reachable, ensure the Docker container is running:
docker ps
-
If
omcis not found:- Make sure OpenModelica is installed.
- Ensure your system PATH includes the directory containing
omc.
-
Ports in use? Stop other services using ports
5672or15672.
Cite this work as follows, or download the BibTeX entry here:
Pambo, C., Andersen, M., Gomes, C., Kamburjan, E. and Oakes, B. (2025).
Constructing Digital Twin Services: Applying an Ontologically-Based Workflow Approach in Practice.
This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.