Data refinement by calculation
Acta Informatica
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Typed Combinators for Generic Traversal
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Editorial: transformations everywhere
Science of Computer Programming - Special issue on program transformation
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Co-transformations in Information System Reengineering
Electronic Notes in Theoretical Computer Science (ENTCS)
“Scrap your boilerplate” reloaded
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Strategic term rewriting and its application to a VDM-SL to SQL conversion
FM'05 Proceedings of the 2005 international conference on Formal Methods
Mappings make data processing go 'round
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
Strong types for relational databases
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Strongly Typed Rewriting For Coupled Software Transformation
Electronic Notes in Theoretical Computer Science (ENTCS)
Transformation of structure-shy programs: applied to XPath queries and strategic functions
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Coupled Transformation of Schemas, Documents, Queries, and Constraints
Electronic Notes in Theoretical Computer Science (ENTCS)
'Galculator': functional prototype of a Galois-connection based proof assistant
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Heterogeneous Coupled Evolution of Software Languages
MoDELS '08 Proceedings of the 11th international conference on Model Driven Engineering Languages and Systems
Transforming Data by Calculation
Generative and Transformational Techniques in Software Engineering II
From spreadsheets to relational databases and back
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
Calculating with lenses: optimising bidirectional transformations
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Algebraic Specialization of Generic Functions for Recursive Types
Electronic Notes in Theoretical Computer Science (ENTCS)
Transformation of structure-shy programs with application to XPath queries and strategic functions
Science of Computer Programming
Type-safe evolution of spreadsheets
FASE'11/ETAPS'11 Proceedings of the 14th international conference on Fundamental approaches to software engineering: part of the joint European conferences on theory and practice of software
Generating database migrations for evolving web applications
Proceedings of the 10th ACM international conference on Generative programming and component engineering
Coupled schema transformation and data conversion for XML and SQL
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Multifocal: a strategic bidirectional transformation language for XML schemas
ICMT'12 Proceedings of the 5th international conference on Theory and Practice of Model Transformations
Constraint-aware Schema Transformation
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
A two-level data transformation consists of a type-level transformation of a data format coupled with value-level transformations of data instances corresponding to that format. Examples of two-level data transformations include XML schema evolution coupled with document migration, and data mappings used for interoperability and persistence. We provide a formal treatment of two-level data transformations that is type-safe in the sense that the well-formedness of the value-level transformations with respect to the type-level transformation is guarded by a strong type system. We rely on various techniques for generic functional programming to implement the formalization in Haskell. The formalization addresses various two-level transformation scenarios, covering fully automated as well as user-driven transformations, and allowing transformations that are information-preserving or not. In each case, two-level transformations are disciplined by one-step transformation rules and type-level transformations induce value-level transformations. We demonstrate an example hierarchical-relational mapping and subsequent migration of relational data induced by hierarchical format evolution.