𝔖 Bobbio Scriptorium
✦   LIBER   ✦

Bidirectionalizing graph transformations

✍ Scribed by Hidaka, Soichiro; Hu, Zhenjiang; Inaba, Kazuhiro; Kato, Hiroyuki; Matsuda, Kazutaka; Nakano, Keisuke


Book ID
121724886
Publisher
Association for Computing Machinery
Year
2010
Weight
628 KB
Volume
45
Category
Article
ISSN
0362-1340

No coin nor oath required. For personal study only.

✦ Synopsis


Bidirectional transformations provide a novel mechanism for synchronizing and maintaining the consistency of information between input and output. Despite many promising results on bidirectional transformations, these have been limited to the context of relational or XML (tree-like) databases. We challenge the problem of bidirectional transformations within the context of graphs, by proposing a formal definition of a well-behaved bidirectional semantics for UnCAL, i.e., a graph algebra for the known UnQL graph query language. The key to our successful formalization is full utilization of both the recursive and bulk semantics of structural recursion on graphs. We carefully refine the existing forward evaluation of structural recursion so that it can produce sufficient trace information for later backward evaluation. We use the trace information for backward evaluation to reflect in-place updates and deletions on the view to the source, and adopt the universal resolving algorithm for inverse computation and the narrowing technique to tackle the difficult problem with insertion. We prove our bidirectional evaluation is well-behaved. Our current implementation is available online and confirms the usefulness of our approach with nontrivial applications.


πŸ“œ SIMILAR VOLUMES


Bidirectionalizing graph transformations
✍ Hidaka, Soichiro; Hu, Zhenjiang; Inaba, Kazuhiro; Kato, Hiroyuki; Matsuda, Kazut πŸ“‚ Article πŸ“… 2010 πŸ› Association for Computing Machinery βš– 628 KB
Computing with graphs and graph transfor
✍ Dorothea Blostein; Andy SchΓΌrr πŸ“‚ Article πŸ“… 1999 πŸ› John Wiley and Sons 🌐 English βš– 550 KB

Many software applications require the construction and manipulation of graphs. In standard programming languages, this is accomplished using low-level mechanisms such as pointer manipulation or array indexing. In contrast, graph productions are a convenient high-level visual notation for coding gra