The BiG Project
Systems
- UnQL+ (demo/usage)
UnQL+ is a graph querying/transformation language for declaratively describing compositional model transformation. - Bidirectional UnQL+(demo/usage/movie)
UnQL+ can be computed forwardly and backwardly, being useful for model synchronization and model evolution - Bidirectional UnCAL with insertion handling(demo (core algebra))
UnQL+ can be compiled to the core graph algebra called UnCAL, which has clear bidirectional semantics, being capable of automatic reflecting not only "in-place updating" and "deletion" but also "insertion" on the output to the input. - Unidirectional UnCAL (demo)
The forward computation of UNCAL can be tested here. - Graph Editing Tool (extension of DOTTY)(download/document)
This is a useful tool for editing graphs that are in the standard DOT format. - A GUI for GRoundTram (Snapshot)
Graphical User Interface for GRoundTram written in Java. It includes a graph editor and tools for graph validation, type checking of graph transformation, and forward/backward transformation testing.
UnQL+ for Compositional Model Transformation

The above figure shows an overview of our model transformation system. An input model represented by a graph is validated against a given input metamodel described in Kernel Metametamodel (KM3). The validated graph is transformed by a given query described in UnQL and an update described in UnQL+. The transformation is performed by translating them into an UnCAL program, that is a structural recursion over an input graph, after integrating the UnQL+ updating into an UnQL query. The output graph of the transformation is validated against a given output metamodel in KM3.
You can see our demonstration system. Please refer to the description page on how to use the system. If you would like to see our source code, please contact the project leader or one of the core members at the project members page.
Demonstration on UnCAL interpreter only can be found here.
Bidirectionalization of UnQL+
The above figure depicts an architecture of our algebraic framework. A model transformation is described in UnQL+, which is functional (rather than rule-based as in many existing tools) and compositional with high modularity for reuse and maintenance. The model transformation is then desugared to a core graph algebra which consists of a set of constructors for building graphs and a powerful structural recursion for manipulating graphs. This graph algebra can have clear bidirectional semantics and be efficiently evaluated in a bidirectional manner.
You can try our demonstration system.
This demonstration page has been significantly improved. Major differences are:
- Lots of examples are added
- Accepts UnQL+ query as well as UnCAL query
- Selected queries can be edited
- View editing interface has been improved by our customized editor based on DOTTY.
Bdotty - Graph Editing Tool (small extension of DOTTY in Graphviz)
If you want to edit the transformed graphs yourselves, please download and use
our customized version of dotty here (65KB tar.gz).
Instructions (also included in the above package) are available here (72KB PDF).
Bidirectionalization of UnCAL with insertion handling
You can try our demonstration system.