Schema mappings are declarative expressions that specify how data that conforms to one or more source schemas is transformed into data that conforms to a target schema. Such mappings can be viewed, in general, as high-level specifications of the data exchange process, and they can be compiled into multiple programming/query languages for the actual implementation of data exchange. A popular logical language for expressing schema mappings is the language of source-to-target tuple-generating dependencies, or source-to-target tgds.
A schema mapping from source to target is invertible if there is a schema mapping from target to source that can completely recover the data source (see Ronald Fagin, Inverting Schema Mappings. PODS 2006, pages 50-59). Existing methods of inverting (i.e., reversing) schema mappings are problematic. For example, most schema mappings in practice cannot be reversed for such reasons as a mapping may not export all source data (some filtering usually takes place), or several data sources may be integrated into one target instance which is a typical union scenario in which the information of where the data “came from” is lost.
Thus, there is a need for a method and system of reversing schema mappings that overcome at least one of the aforementioned difficulties with existing techniques for reversing schema mappings.