Database Reference
In-Depth Information
else “null”,
$_v2 in if ($_v1[author]) then $_v1/author
else /,
$x3 in if ($_v2[name]) then $_v2/name/text()
else “null”,
$x4 in if ($_v2[university]) then $_v2/university/text()
else “null”
return
<pub>
<title>{$x1}</title>
<year>{if ($x2=”null”) then
doc(“I1.xml”)/pubs/pub[title=$x1]/year[text()!=”null”]/text()
else $x2}</year>
<author>
<name>{$x3}</name>
<university>{if ($x4=”null”) then
doc(“I1.xml”)/pubs/pub/author[name=$x3]/university
[text()!=”null”]/text() else $x4}</university>
</author>
</pub> }
</pubs>
As the result of repairing, all nulls violating TP-XFDs are replaced with non-null values.
QUERIES AND QUERY REFORMULATION
A
query
will be understood as a mapping where its left-hand side is extended with a filter (the
query
qualifier
).
Definition 15.
(
query
) Let
m
ST
:=
∧
x
(
S
(
x
)
∧
∧
y
T
(
x'
,
y
)) be a mapping from a source schema
S
(
x
) to a
target schema
T
(
x'
,
y
) and φ(
x
) be a formula over
x
. A
query q
from
S
to
T
with qualifier φ is a formula
of the form
q
ST
:=
∧
x
(
S
(
x
)
∧
φ(
x
)
∧
∧
y
T
(
x'
,
y
)) .
Such a query will be denoted as the pair (
m
ST
, φ).
The answer to a query
q
= (
m
ST
, φ) over an instance
I
= (
S
, Ω) of
S
, is an instance
J
= (
T
, Ω') of
T
.
Valuations in Ω' are created from the valuations in Ω satisfying the query qualifier. Such valuations
are restricted to variables occurring in both
S
and
T
and extended with null values,
∧
, assigned to those
variables in
T
which do not occur in
S
. More precisely: