A SNAT document describes an intended transformation precisely, whereas alignment
is less precise. Consider, for example, the relationship between
publication
, isbn
and title
nodes. The
SNAT document guarantees that each source book
is mapped to a distinct
publication
and that the isbn
and title
children of a publication
element refer to the same book
source element. This expectation is very intuitive, and therefore it may go
unnoticed that the alignments shown above do not make these commitments: the
alignments would not be contradicted by a transformation where a
publication
contains a title
taken from one
book
and an isbn
taken from another book
,
or (if we ignore cardinality constraints) a publication
containing all
title
and all isbn
values found in any book.
The core of this problem lies in semantic
relationships pertaining to structural relationships in general, and
parent-child relationships in particular. The node name title
, for
instance, indicates that node contents represent a title, but it does not hint at a
semantic relationship between nodes, which constrains the child title
to represent a property of the parent publication
. (Were the element
name hasTitle
, this would be slightly different.) The SNAT model of a
transformation preserves the intended semantic relationships implicitly: via
navigation. Navigation to a particular
title
as well as to a particular isbn
, executed while
constructing an individual target publication
, ensures that the target
document expresses the intended semantics.
The question arises if we cannot set up rules how to map alignments to navigation steps. Table 6, “A comparison between navigation steps and alignments.” clearly suggests such a possibility. It should be remembered that the SNAT model is essentially a decomposition of transformation into navigation steps, or, the other way around, an integration of navigation steps into a complete picture of a transformation. If we can infer navigation steps from pairs of alignments (the alignments of parent and child locations), we have come very close to solving the problem of mapping alignments to a complete picture of the transformation. The task of generating transformation code from alignments can be redefined as the task of mapping a SAAT tree to a SNAT tree.