TY - GEN
T1 - Bidirectionalizing graph transformations
AU - Hidaka, Soichiro
AU - Hu, Zhenjiang
AU - Inaba, Kazuhiro
AU - Kato, Hiroyuki
AU - Matsuda, Kazutaka
AU - Nakano, Keisuke
PY - 2010
Y1 - 2010
N2 - 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.
AB - 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.
KW - bidirectional transformation
KW - graph query and transformation
KW - structural recursion
KW - view updating
UR - http://www.scopus.com/inward/record.url?scp=78249284616&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=78249284616&partnerID=8YFLogxK
U2 - 10.1145/1863543.1863573
DO - 10.1145/1863543.1863573
M3 - Conference contribution
AN - SCOPUS:78249284616
SN - 9781605587943
T3 - Proceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP
SP - 205
EP - 216
BT - ICFP'10 - Proceedings of the 2010 ACM SIGPLAN International Conference on Functional Programming
T2 - 15th ACM SIGPLAN International Conference on Functional Programming, ICFP'10
Y2 - 27 September 2010 through 29 September 2010
ER -