This repository contains an educational demonstrator application for a schema matching approach.
It provides a full-stack web application that offers a short interactive introduction to schema matching and allows users to experiment with automated schema matching between heterogeneous data schemas.
The frontend includes several interactive and explanatory elements, such as:
- introductory explanations of schema matching
- visual diagrams illustrating preprocessing and matching workflows
- interactive demonstrations of preprocessing and matching techniques
- puzzle- and game-like UI components for illustrating matching concepts
- example data schemas used throughout the demonstrator
Note: The original research prototype for schema matching is not included in this public repository. This version only contains the demonstrator interface and example data used for the interactive tutorial.
The system follows a client–server architecture.
- Frontend framework: Vue.js with Quasar
- Backend Framework: Flask
- Docker / Docker Compose for containerized execution
- Separate configurations for production and development
Many of the interactive visualizations rely on the great VueFlow library.
schema-matching-demo/
├── server/ # Flask backend and demo data generation
│ ├── app.py # Backend entry point
│ ├── data_gen/ # Demo data generation and preprocessing logic
│ ├── utils/ # Backend utility functions
│ ├── env.yaml # Conda environment definition
│ └── pyproject.toml # Python project metadata
│
├── webapp/ # Quasar/Vue frontend
│ ├── src/
│ │ ├── pages/ # Main application pages
│ │ ├── components/ # Reusable UI components
│ │ ├── layouts/ # Application layouts
│ │ ├── router/ # Frontend routing
│ │ └── assets/ # Images and visual assets for the demonstrator
│ └── nginx/ # Nginx configuration for containerized deployment
│
├── docker-compose.yml # Production setup
├── docker-compose.dev.yml # Development setup
├── LICENSE
└── README.md
- Docker
- Docker Compose
- Python (via Conda)
- Miniconda
- Node.js 20
- npm
- Java 11
- Quasar CLI
Install:
Move to the project directory:
cd .../schema-matchingdocker compose upThe application runs on:
http://localhost:6060/docker compose -f docker-compose.dev.yml upServices:
Frontend
http://localhost:9000/Backend
http://localhost:5000/# Start in background
docker compose -f docker-compose.dev.yml up -d
# Start with rebuild
docker compose -f docker-compose.dev.yml up --build
#Stop containers
docker compose -f docker-compose.dev.yml down
# Remove all containers
docker rm -fv $(docker ps -aq)sudo apt updateInstall Miniconda:
https://docs.anaconda.com/miniconda/
cd .../schema-matching/server
conda env create -f env.yml
conda activate smd-envCheck installation:
java -versionInstall if necessary:
sudo apt install openjdk-11-jreVerify installation:
java -versionflask run --port=5000 --debugBackend endpoint:
Backend endpoint:cd .../schema-matching/webapp/
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh
| bash
nvm install 20
node -v
npm -vInstall Quasar CLI:
npm install -g @quasar/cliInstall project dependencies:
npm installquasar devFrontend endpoint:
Frontend endpoint:Container configuration is managed through Docker Compose and the corresponding Dockerfiles.
docker-compose.yml– production setupdocker-compose.dev.yml– development setup
The container images are defined in the following Dockerfiles:
server/Dockerfile_prod– backend production imageserver/Dockerfile_dev– backend development imagewebapp/Dockerfile– frontend image
BSD 3-Clause License