A Graph-Native Approach to Normalization
Welcome to the online documentation accompanying the paper "A Graph-Native Approach to Normalization".
This documentation provides details on the performed evaluation and provides a documentation for our Python implementation of LPG normalization.
Details on the repository structure and the source code can be found in the Source Code Documentation.
Detailed results of the evaluation presented in the paper can be found here.
Getting Started
-
To get started with the evaluation and the implementation of LPG normalization, first clone the repository. Since this repository contains a submodule for the Northwind graph dataset, the command
git clone https://github.com/dmki-tuwien/lpg-normalization.git --recurse-submodules
needs to be used to clone the repository. -
Download all datasets as described in the
graphs/folder before running the evaluation. -
Prepare the containers for the evaluation by running the command
docker compose build. -
Prepare evaluation scenarios and you local environment.
The evaluation scenarios are described here, and are defined the filesetup.yaml. For available configuration options, please refer to the comments insetup.yaml.
Also adjust theGRAPHS_PATHenvironment variable in the file.envto be the absolute path to yourgraphsfolder. Relative paths cannot be used due to a limitation of Docker.
In case Docker Desktop is used, please uncomment theTC_HOSTenvironment variable. -
The command
docker compose --profile eval up --abort-on-container-exitautomatically sets up the databases, runs the evaluation, and shuts down the database containers after the evaluation finished.
After running the Docker containers,
the output of the evaluation,
which is the basis for the figures and tables used in the paper,
can be found in the directory out/.
REST API
A REST API service for graph-native normalization can be started using
docker compose --profile rest up --build
Development
For the generation of the parser of the dependencies, ANTLR
is used.
On macOS, ANTLR can be installed using Homebrew:
brew install antlr.