Mapping algebra provides operational semantics to the mapping process, opening the door to study of complexity and expressiveness of existing mapping languages. This project provides the CLI translator from RML and ShExML to mapping algebra.
To compile the project on your own, you’ll need to have Rust toolchain installed.
For Linux-based users:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
For the visualization of the generated mapping plans, you’ll need python version >= 3.10 and the following packages:
cd {repo dir}
cargo build --release
cd ./target/release/
./translator file <RML_DOCUMENT>
For more information/options of CLI app:
./translator -h
dot -Tpng {generated dot file} > output.png
dot -Tplain {generated dot file} > output.txt
The JSON schema describing the structure of the mapping plan generated by translating the input mapping document can be found at the schema documentation page
Currently, the translator generates valid mapping plans for the official RML test cases with mapping plans for CSV data sources (all test cases ending in CSV).
The generated mapping plans for the test cases are inside the /resources/csv-testcases.
The translator can partially translate ShExML documents. The translator will make a best-effort translation if the ShExML document uses the following unsupported features. It will still generate a mapping plan which could be executed but the results won’t be complete.
The following features are not supported in translation yet:
1) Autoincrements 2) Query statements 3) Joins 4) Functions 5) Conditionals
AlgeMapLoom provides bindings for Java, Python and Node.js.
These can be enabled with the features jni
, pyo3
and neon
respectively.
If you build from source, you can run the build_java.sh
, build_python.sh
and build_nodejs.sh
scripts respectively.
For cross-compiling Windows binaries from Linux you need to install the MinGW cross-compiler and have the correct build targets installed:
x86_64-unknown-linux-gnu
x86_64-pc-windows-gnu
For usage, check out the src/java, src/python, and src/nodejs folders.
This software makes use of sophia_rs crate!