Gamma is a maintenance tool for schema mappings between XML types. Gamma allows for the automatic discovery of errors in a given mapping wrt a target schema. Gamma is based on a notion of mapping correctness inspired by the following by Alon Y. Halevy:
At the core, the semantics of mappings can be defined as follows. Given an XML instance, IS , for the source node S and the mapping to the target T , the mapping defines a subset of an instance, IT , for the target node. The reason that IS is a subset of the target instance is that some elements of the target may not exist in the source (e.g., the publisher element in the examples). In fact, it may even be the case that required elements of the target are not present in the source. In relational terms, IT is a projection of some complete instance I T of T on a subset of its elements and attributes.

According to this vision, Gamma deems a mapping as correct if the (inferred) output type of the mapping is a projection of the target schema.

Gamma, given a mapping m (expressed in a subset of XQuery), and given two schemas S and T, infers the output type of m when applied on S, and matches this output type against T. This match is performed by means of a type projection operation.

In its current version Gamma also contains a function for comparing XML types according to a semantic subtyping relation.




Gamma 1.0. To run Gamma, just double-click on Gamma.jar (Java 1.5 is required).