<?xml version="1.0" encoding="UTF-8"?><xml><records><record><source-app name="Biblio" version="6.x">Drupal-Biblio</source-app><ref-type>17</ref-type><contributors><authors><author><style face="normal" font="default" size="100%">Tiago Alves</style></author><author><style face="normal" font="default" size="100%">Paulo Silva</style></author><author><style face="normal" font="default" size="100%">Joost Visser</style></author></authors></contributors><titles><title><style face="normal" font="default" size="100%">Constraint-aware Schema Transformation</style></title><secondary-title><style face="normal" font="default" size="100%">Electronic Notes in Theoretical Computer Science</style></secondary-title></titles><dates><year><style  face="normal" font="default" size="100%">2012</style></year></dates><urls><related-urls><url><style face="normal" font="default" size="100%">https://haslab.uminho.pt/sites/default/files/pfsilva/files/rule08.pdf</style></url></related-urls></urls><volume><style face="normal" font="default" size="100%">290</style></volume><pages><style face="normal" font="default" size="100%">3-18</style></pages><language><style face="normal" font="default" size="100%">eng</style></language><abstract><style face="normal" font="default" size="100%">&lt;p&gt;Data schema transformations occur in the context of software evolution, refactoring, and cross-paradigm data mappings. When constraints exist on the initial schema, these need to be transformed into constraints on the target schema. Moreover, when high-level data types are refined to lower level structures, additional target schema constraints must be introduced to balance the loss of structure and preserve semantics.&lt;/p&gt;
&lt;p&gt;We introduce an algebraic approach to schema transformation that is constraint-aware in the sense that constraints are preserved from source to target schemas and that new constraints are introduced where needed. Our approach is based on refinement theory and point-free program transformation. Data refinements are modeled as rewrite rules on types that carry point-free predicates as constraints. At each rewrite step, the predicate on the reduct is computed from the predicate on the redex. An additional rewrite system on point-free functions is used to normalize the predicates that are built up along rewrite chains.&lt;/p&gt;
&lt;p&gt;We implemented our rewrite systems in a type-safe way in the functional programming language Haskell. We demonstrate their application to constraint-aware hierarchical-relational mappings.&lt;/p&gt;
</style></abstract></record></records></xml>