<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Interactive Data Repairing: the FALCON Dive</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Enzo Veltri</string-name>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Donatello Santoro</string-name>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Giansalvatore Mecca</string-name>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Paolo Papotti</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jian He</string-name>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gouliang Li</string-name>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nan Tang</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Arizona State University</institution>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Potenza</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Qatar Computing Research Institute</institution>
          ,
          <addr-line>HBKU</addr-line>
          ,
          <country country="QA">Qatar</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Tsinghua University</institution>
          ,
          <country country="CN">China</country>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>Universita della Basilicata</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper we discuss Falcon, an interactive, deterministic, and declarative data cleaning system. Unlike traditional rule-based system, Falcon does not rely on the existence of a set of pre-de ned data quality rules, but it encourages users to explore the data, identify possible problems, and make updates to x them. The main technical challenge consists in nding a set of rules, expressed as sql update queries, that are semantically correct and that xes the largest number of errors in the data. Falcon navigates the lattice by interacting with users to gradually checking the correctness of a set of rules. We have conducted extensive experiments using both real-world and synthetic datasets to show that Falcon can e ectively communicate with users in data repairing.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        We address the problem of improving the data cleaning process by involving
non-expert users as rst-class citizens, and present Falcon [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], a novel system
for interactive data repairing. Falcon departs from rule-based data repairing
[
        <xref ref-type="bibr" rid="ref12 ref13 ref16 ref6 ref7">6,7,12,13,16</xref>
        ] and other interactive data cleaning systems [
        <xref ref-type="bibr" rid="ref14 ref15 ref17 ref5 ref9">5,9,14,15,17</xref>
        ], since it
brings together a simple, user-oriented interaction paradigm with the bene ts of
a declarative, deterministic, and expressive data quality language { sql update
(sqlu) queries. In fact, the system is bootstrapped by an update to the data
made by the user to rectify an error; based on that, it infers a set of sqlu queries
that can be used as data quality rules to correct more errors.
      </p>
      <p>Example 1. Table 1 reports a sample real-world dataset Tdrug for experiments
collected from di erent labs. Each record represents the quantity and date of a test
done in a lab over a certain molecule. Errors are highlighted. Consider the
following three user updates: 1: t3rLaboratorys Ð \New York", 2: t3rQuantitys Ð
100 and 3: t2rMolecules Ð \C22H28F".</p>
      <p>There exist multiple interpretations for each update. For instance, two
possible semantics behind 1 could be either reformatting all \N.Y." to \New York"
as shown in Q1, or changing all Laboratory values to \New York" as shown in
Q11, regardless of their original values.</p>
      <p>Q1: UPDATE Tdrug SET Laboratory = \New York" WHERE Laboratory = \N.Y."
Q11: UPDATE Tdrug SET Laboratory = \New York";</p>
      <p>Similarly, one possible interpretation of 2, as given in Q2, is that it is speci c
for Molecule and Date. Hence, it is hard to generalize this update to apply it to
other tuples.</p>
      <p>Q2: UPDATE Tdrug SET Quantity = 100 WHERE Molecule = \C24H75S6" AND Date = \12 Nov"</p>
      <p>Update 3 is more interesting. Consider the following three interpretations.
Q3 repairs errors in both t2 and t5. Q13 also repairs both t2 and t5, but
additionally, it modi es t4rMolecules to \C22H28F", which is an erroneous update,
since in Boston they test a di erent statin molecule. On the other hand, the
tuple-speci c query Q32 only corrects t2 but misses the chance to repair t5.
Q3: UPDATE Tdrug SET Mol. = \C22H28F" WHERE Mol. = \statin" AND Lab. = \Austin";
Q13: UPDATE Tdrug SET Mol. = \C22H28F" WHERE Mol. = \statin";
Q32: UPDATE Tdrug SET Mol. = \C22H28F" WHERE Mol. = \statin" AND Lab. = \Austin" AND
Date = \12 Nov" AND Qt. = 200;</p>
      <p>One may observe that there might exist a large number of sqlu queries.
Indeed, this large number is not surprising, as up to thousands of precise and
reliable update queries can be needed in real-world settings. However, while
an update is a perfect starting point for the process of inferring the general
scripts, it comes with new challenges in terms of user interactions. The search
space for a new update is exponential to the number of the attributes, and
domain experts cannot manually validate each of these sqlu queries. We have
to assume that a budget (e.g., #-user interactions) is given for a speci c update.
This dynamic behavior, together with the large search space and a budget of
user capacity, prevents the use of traditional tools for interactive response, such
as precomputing and caching.</p>
      <p>
        Contributions. We present Falcon [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], a novel interactive data cleaning
system, with the following contributions: (1) To design data quality rules, we adopt
the standard and deterministic language of sql update statements (Section 2).
We discuss how to organize the search space of candidate rules as a lattice, and
its pruning principles, by leveraging the properties of the lattice (Section 3).
(2) We devise e cient algorithms for selecting candidate queries to e ectively
interact with the user (Section 4) (3) We have conducted experiments with
realworld and synthetic data to show the e ectiveness and e ciency of Falcon
(Section 5).
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Problem Statement</title>
      <p>SQL Update Queries. We adopt a simple and standard language to repair the
database, the language of update statements in sql (sqlu). An sqlu statement
updates records in a table T on attributes A; B : : :, when some conditions hold.
We restrict the language to the case where updates are done on one attribute A
of table T with only boolean conjunctions:</p>
      <sec id="sec-2-1">
        <title>UPDATE</title>
        <p>T
SET
A
a</p>
      </sec>
      <sec id="sec-2-2">
        <title>WHERE</title>
        <p>boolean conjunctions</p>
        <p>More speci cally, each boolean conjunction is of the form B
is an attribute of table T and vB is a constant value.
vB, where B
Search Space for One Repair. Consider a repair : trAs Ð a1 that changes
the value of trAs from error a to its correct value a1 with a a1. We want to
generalize this action so as to repair more errors. Naturally, there exist multiple
queries to interpret . Implicitly, for each query, the SET clause is A a1.
Consider a boolean condition as B vB, where B could be any attribute in
relation R. We adopt a closed-world assumption by only using the evidence from
tuple t, the tuple that is being repaired. As a special query, we consider H as
no condition being enforced in the WHERE clause. Stating in another way, it is
to update all A values in T to a1.</p>
        <p>In summary, given a repair trAs Ð a1 for tuple t in table T of relation R, the
set Q of all rules for such a repair is:</p>
      </sec>
      <sec id="sec-2-3">
        <title>UPDATE</title>
        <p>T
SET
A
a1</p>
      </sec>
      <sec id="sec-2-4">
        <title>WHERE</title>
        <p>X
trXs
where X is an arbitrary subset of R, which can range from the empty set H to
all attributes in R (i.e., X R). Hence, there are 2|R| possibilities of X.
Problem Statement Given a repair, one wants to nd the queries that are
semantically correct so as to repair the database. An sqlu query is valid if the
query is semantically correct. Since we do not know which queries are valid in
advance, we need to ask the user to either validate the query as semantically
correct, or invalidate it otherwise. Naturally, we want to nd all valid sqlu
queries and use them to repair the database. A straightforward strategy is to
ask the user to check every possible query. Of course, this method is rather
expensive as there could be a large number of possible queries, for which we will
use containment relationships among queries to improve the search of queries.
Budget repair problem. Given a set Q of sqlu queries, a table T , and a
budget B for the number of interactions the user can a ord, the budget repair problem
is to select B queries Q1 from Q, so as to maximize | QPQ1^validpQq T QpT q|.</p>
        <p>Here, validpQq is a boolean function that is T (resp. F) if Q is a valid query
(resp. not), and QpT q represents the set of repairs of applying query Q over
T . Observe that in the above problem, given a query Q, the validity of Q is
unknown, to be veri ed by the user. Such a problem is typically categorized
under the framework of online algorithms, where one can process input
pieceby-piece in a serial fashion, without having the entire input available.
O ine problem. Its corresponding o ine variant is the following. Given as
input that whether each query Q in Q is valid or not is known, how to select
B queries from Q to maximize the number of repaired tuples. It is easy to see
that the o ine problem of its online version (i.e., the budget repair problem) is
NP-hard. When the o ine variant is NP-hard, there is no e cient algorithm for
computing an optimal solution for its online algorithm. In other words, when the
o ine variant is intractable, there is no hope to nd an optimal solution with
the cost in a constant factor of the online variant. However, not all is lost. As
will be shown later, we can organize all queries in a graphical structure, such
that when the user veri es a query Q as valid or invalid, we can even generate
more inputs by computing the validity of queries Q1 that are related to Q.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>A Lattice: Falcon Search Space</title>
      <p>In this section, we shall present our organization of the search space, so as to
enable both e cient and e ective search over the candidate rules.
Rule containment. For two rules Q and Q1, we say that Q is contained by
Q1, denoted by Q ¨ Q1, if for all possible database instances T over the input
schema R, the result of QpT q is a subset of the result of Q1pT q. Intuitively, the
rule containment captures the semantic relationship among rules. In other words,
no matter which database T is used, Q will update a subset of T tuples that Q1
will update if Q ¨ Q1, since Q is more speci c than Q1. It is readily to verify
that the query containment \¨" is a partial order over the set Q of all possible
rules, which is re exive, antisymmetric, and transitive. For a query Q, we denote
by attrpQq the set of distinct attributes in its WHERE condition. Note that for
each user update, the sqlu queries have the same value constraint on the same
attribute, and thus the rule containment veri cation is equivalent to a simpler
condition: Q ¨ Q1 if attrpQ1q is a subset attrpQq.</p>
      <p>A ected tuples. For each query Q and instance T , we call the tuples in QpT q
a ected tuples, i.e., the tuples that Q will repair. We also call |QpT q| the a ected
number of Q, relative to T . Consider Q3 and Tdrug in Example 1 for instance. The
a ected tuples are Q3pTdrugq tt2; t5u, and its corresponding a ected number is
|Q3pTdrugq| 2. Hence, Q is a poset on the partial order ¨ of rule containment.
Moreover, consider any two rules Q and Q1. They have a greatest lower bound:
the most speci c query that is contained by both Q and Q1. This query, denoted
by Q ^ Q1, is the one w.r.t. attrpQq Y attrpQ1q. Also, they have a least upper
bound: the most general query that contains both Q and Q1. This query, denoted
by Q _ Q1, is the one w.r.t. attrpQq X attrpQ1q. Therefore, we can organize the
queries in our search space as a lattice.</p>
      <p>Query lattice. Given a repair and a database instance T , we denote by pQ; ¨q
the corresponding lattice. Each node in the lattice corresponds to a query Q P Q.
Each directed edge from node Q to Q1 indicates that Q ¨ Q1 (Q is contained in
Q1) and |attrpQq| |attrpQ1q| 1 (with one di erent attribute). Moreover, the
a ected number associated with each query is maintained in the lattice.
Valid and maximal valid nodes. Given a lattice pQ; ¨q, the node relative to
a rule Q is valid if it is semantically correct, thus should be executed to repair
data. In our work, if the validity of a rule is unknown, we rely on the user to
verify. Fortunately, if a rule Q is known to be valid, we can infer that Q1 is also
valid if Q1 ¨ Q. Moreover, the node relative to a valid rule Q is maximal valid,
if no Q2 is valid and Q ¨ Q2. One nice property of using a lattice is that it
provides opportunities to prune nodes to be visited during traversal.
Lattice pruning. If a node Q is valid, by inference, all nodes Q1 where Q1 ¨ Q
are valid. On the other hand, if a node Q is invalid, by inference, all nodes Q2
where Q ¨ Q2 are invalid. The rationale behind the above inferences is that: if
one query is valid, then any query that is more speci c is also valid; conversely,
if it is invalid, then any query that is more general is also invalid. We denote by
Q/ (i.e., above Q in the lattice) the queries that Q contains, and Q' (i.e., below
Q in the lattice) the queries that contain Q. These notations naturally extend
to a set of queries, Q/ and Q', such that Q/ QPQ Q/ and Q' QPQ Q'.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Algorithms: Falcon in Action</title>
      <p>
        First of all, we notice that traditional traversal algorithms cannot be used to
e ciently navigate the lattice L [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. In this section we present advanced
algorithms to e ciently navigate the search space. Given a budget B, our objective
is to de ne a divide-and-conquer strategy that e ciently identi es nodes that
are both valid and not very close to the top, so as to maximize the number
of tuples to be repaired. To this purpose, we present a strategy, namely binary
jump, inspired by classical binary search. Roughly speaking, we treat the search
space as a linear space (i.e., an array) by sacri cing some structural connections,
and sort the nodes based on their associated a ected numbers. We can then do
multi-hop search to locate a candidate node to be veri ed with the user. Note
that conventionally, a binary search nds the position of a target value within
a sorted array. Di erent from it, binary jump does not have a target value to
be searched. In other words, binary jump is just inspired by binary search by
doing half-interval style lattice traversal. We rst discuss binary jump over a
path. To nd the truth with traversal based approaches, we need OpN q
questions in average, where N is the length of the path. However, using binary jump
will reduce it to Oplog N q questions, which is optimal, by applying inferences of
nding all valid/invalid nodes. Straightforwardly, binary may refer to the o set
as standard binary search. However, we need to incorporate the information of
a ected number. Hence, the binary search could refer to the median number. For
binary jump, we introduce a parameter d to bound the search depth, which is the
number of iterations one can do binary jump before termination. Given a path
Q1; Q2; ; Qx, we rst ask the middle node Qx{2. If the node is valid, we ask
the next middle node between Qx{2 and Qx; otherwise, we ask the next middle
node between Q1 and Qx{2. After d wrong searches, the process terminates. We
refer to this search strategy as BinaryJump(). The rationale behind using the
parameter d is that if we are following the wrong direction, we should be aware
and go back to the right track. In order to take the advantage of binary jump for
lattice traversal, the broad intuition is to do dimension reduction from a lattice
to a one-dimensional structure. That is, if we treat all nodes in the lattice
uniformly, by sorting them in ascending order on their associated a ected numbers,
we get a sorted array similar to the one discussed above for the path.
The Dive algorithm. Given a lattice pQ; ¨q w.r.t. a repair over table T , a
budget B for the number of questions the user can answer, the dive algorithm
works as follow: 1q at the beginning, the validity of every node is unknown; 2q we
sort in ascending order unvalidated nodes Q? based on their a ected numbers.
Then we apply BinaryJump() over Q? to select the next node Q to validate by
the user; 3q if the user validates Q, we use lattice pruning to infer other valid
nodes, and set Q? Q'. 4q it the user rejects Q, then we infer invalid nodes
and then we set Q? Q/. 5q if user has capacity (number of user interactions
is less than B) process will continue in step 2, otherwise it terminates.
Correlation aware binary jump (CoDive). We revise binary jump by using
the correlation information between attributes [
        <xref ref-type="bibr" rid="ref11 ref8">8, 11</xref>
        ], a ecting the second step
of our Dive algorithm. Note that the function BinaryJump() will locate a node
Q in the sorted list Q?. Instead of asking the user to verify Q, we revise it with
the following methodology. (1) We pick more nodes around Q in the sorted list,
with w on its left and the other w on its right. (2) For the above 2w 1 nodes,
we compute their scores (a ected number multiplies correlation score) and select
the one with the largest score, which will then be veri ed by the user.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Experimental Study</title>
      <p>
        Datasets. We used four real-world datasets and one synthetic dataset: Soccer,
Hospital, BUS, DBLP and Synth. More details are available in the full paper [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
Algorithms. We implemented several algorithms for the exploration of the
lattice. First, we study our own proposals for multi-hop search. Dive is the binary
jump algorithm presented in Section 4. CoDive is its extention to make use of the
attributes correlation information, when this is available. These are compared
with one-hop search strategies (BFS, DFS and Ducc [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]). As we will show in
the results, Ducc is better than BFS and DFS for extensive searches of maximal
rules in the lattice, but it was not designed to deal with small values of budget.
Baselines. We compared Falcon with four baselines.
1) Re ne: Our proposal generalizes the transformation language of existing tools
such as OpenRe ne and Trifacta Wrangler. These tools enable the inference of
only two transformations that are comparable to our language: either the single
cell is updated (the top of the lattice) or the erroneous value e is replaced with
the new value v for all the occurrences in the attribute.
2) Rule-Learning Approaches: Many previous approaches have concentrated on
learning data-quality rules (e.g., [
        <xref ref-type="bibr" rid="ref2 ref4">2, 4</xref>
        ]). In particular piq starting from a dirty
database, we asked users to clean a sample of tuples; piiq based on the sample
tuples, we used a CFD-miner; and piiiq we used the set of SQL-updates to repair
the dirty instance, and measured the bene t score (see below).
3) Guided Data Repairs: To explore the impact of active learning, we used GDR
[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], that is a recently proposed algorithm that relies on active learning in order
to improve the quality of repairs. Given a set of rules, it will incrementally ask
users to solicit the right repairs suggested by the rules.
-1,0
-1,5
      </p>
      <p>DFS</p>
      <p>BFS</p>
      <p>Ducc</p>
      <p>Dive</p>
      <p>CoDive</p>
      <p>CoDive Refine
-1,0</p>
      <p>Rule
Learn.</p>
      <p>GDR</p>
      <p>Active
Learn.</p>
      <p>Soccer Hospital Synth 10k Synth 1M DBLP BUS
-1,5
Soccer Hospital Synth 10k Synth 1M DBLP BUS
(a) Bene t for the various algorithms.</p>
      <p>
        (b) Bene t compared with the baselines.
4)Active Learning in Lattice Traversal: We compared our methods to an active
learning variant of our lattice-based approach designed ad-hoc for this purpose.
Errors and Metrics. Since the considered datasets are clean, we introduce
noise to verify the algorithms behaviour in the cleaning process. To start, we
manually de ned a set of CFDs [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and xing rules [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] for each scenario.
Afterwards, we used an error-generation tool to inject errors into the clean
instances [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. We keep running an algorithm until all the introduced errors are
xed either by a rule or by the user updates. Then, we measure the interaction
cost as the sum between the number of user-provided updates U and the
number of users' answers for nodes validation A. In order to have an indicator of
the advantage of using interactive cleaning, we also measure the bene t of an
algorithm in comparison to the manual update of all the errors. We rst de ne
the cost ratio as the number of actions divided by the number of errors. Given
an algorithm , a dataset D, and the interaction cost TC to obtain a set of
queries Q covering all introduced errors, we de ne the bene t of the algorithm
as BNF 1 TC {|QpDq|.
      </p>
      <p>Exp-1: Lattice search algorithms. Figure 1(a) reports the bene t of each
algorithm for the six datasets with a xed budget B 2. The proposed
algorithms, Dive and CoDive, consistently report a positive gain, which, for CoDive,
can be interpreted as a reduction of the total user interaction cost between 22%
(Soccer) and 97% (BUS). The plot also reveals that one-hop algorithms fail for
the budget exploration of the lattice, with the notable exception of the Hospital
dataset. This results is not surprising if we look more closely at this scenario.
Hospital schema has a large number of FDs with always one or two attributes
in the left hand side (LHS) of the rules. This is re ected in the CFDs that we
used to introduce the errors. Rules with one or two LHS attributes are at the
bottom of the lattice, and this is the most favourable setting for one-hop based
algorithms, since they all start from the bottom. On the other hand, when rules
start to have more attributes in the LHS, more nodes must be checked to take a
decision, these algorithms fail and Dive and CoDive greatly outperform them.
Exp-2: Comparison to the baselines. Figure 1(b) reports a comparison of
our CoDive algorithm to the four baselines discussed above. We xed a timeout
of two hours for all tests. Notice that not all algorithm terminated within the
timeout. This accounts for the missing bars in the chart. Our approach
significantly outperforms all baselines. CoDive results are signi cantly better than
those based on rule discovery. This suggests that our novel paradigm for data
repairing is an improvement w.r.t. previous approaches in which quality rules
are established upfront. Interestingly, this is con rmed also in the case in which
rule discovery is coupled with an interactive algorithm, like GDR. In fact, the
additional number of user interactions needed to run GDR brings to even lower
bene t. CoDive algorithm outperforms its active learning variant. Since
ActiveLearning shares the same infrastructure as CoDive, here results are better w.r.t.
RuleLearning and GDR. In fact, as for CoDive, whenever it terminated also
ActiveLearning was able to repair all errors. CoDive outperforms Re ne because of
the less expressive language in the latter. Results con rm our intuition that
using user updates to lead the discovery of rules in an incremental way yields more
complete and e ective repairs than state-of-the-art rule-learning algorithms.</p>
    </sec>
    <sec id="sec-6">
      <title>References</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>P. C.</given-names>
            <surname>Arocena</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Glavic</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>R. J.</given-names>
            <surname>Miller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          .
          <article-title>Messing up with BART: error generation for evaluating data-cleaning algorithms</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>9</volume>
          (
          <issue>2</issue>
          ),
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>X.</given-names>
            <surname>Chu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. F.</given-names>
            <surname>Ilyas</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          .
          <article-title>Discovering denial constraints</article-title>
          .
          <source>PVLDB</source>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>W.</given-names>
            <surname>Fan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Jia</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Kementsietsidis</surname>
          </string-name>
          .
          <article-title>Conditional functional dependencies for capturing data inconsistencies</article-title>
          .
          <source>ACM Trans. Database Syst</source>
          .,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>W.</given-names>
            <surname>Fan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Li</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Xiong</surname>
          </string-name>
          .
          <article-title>Discovering conditional functional dependencies</article-title>
          .
          <source>IEEE Trans. Knowl</source>
          . Data Eng.,
          <volume>23</volume>
          (
          <issue>5</issue>
          ),
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>B.</given-names>
            <surname>Fazzinga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Flesca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Furfaro</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Parisi</surname>
          </string-name>
          . Dart:
          <article-title>A data acquisition and repairing tool</article-title>
          . EDBT'
          <volume>06</volume>
          , pages
          <fpage>297</fpage>
          {
          <fpage>317</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          .
          <article-title>Mapping and Cleaning</article-title>
          .
          <source>In ICDE</source>
          , pages
          <volume>232</volume>
          {
          <fpage>243</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>F.</given-names>
            <surname>Geerts</surname>
          </string-name>
          , G. Mecca,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          .
          <article-title>That's all folks! LLUNATIC goes open source</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>7</volume>
          (
          <issue>13</issue>
          ):
          <volume>1565</volume>
          {
          <fpage>1568</fpage>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>J.</given-names>
            <surname>He</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Veltri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Li</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Mecca</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Tang</surname>
          </string-name>
          .
          <article-title>Interactive and deterministic data cleaning</article-title>
          .
          <source>In SIGMOD</source>
          , pages
          <volume>893</volume>
          {
          <fpage>907</fpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>J.</given-names>
            <surname>Heer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Hellerstein</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Kandel</surname>
          </string-name>
          .
          <article-title>Predictive interaction for data transformation</article-title>
          .
          <source>In CIDR</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>A.</given-names>
            <surname>Heise</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Quiane-Ruiz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Abedjan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Jentzsch</surname>
          </string-name>
          , and
          <string-name>
            <given-names>F.</given-names>
            <surname>Naumann</surname>
          </string-name>
          .
          <article-title>Scalable discovery of unique column combinations</article-title>
          .
          <source>PVLDB</source>
          ,
          <volume>7</volume>
          (
          <issue>4</issue>
          ),
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>I. F.</given-names>
            <surname>Ilyas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Markl</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. J.</given-names>
            <surname>Haas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Brown</surname>
          </string-name>
          , and
          <string-name>
            <given-names>A.</given-names>
            <surname>Aboulnaga</surname>
          </string-name>
          .
          <article-title>CORDS: automatic discovery of correlations and soft functional dependencies</article-title>
          .
          <source>In SIGMOD</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>Z.</given-names>
            <surname>Khayyat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. F.</given-names>
            <surname>Ilyas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Jindal</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Madden</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ouzzani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.-A.</given-names>
            <surname>Quiane-Ruiz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Papotti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Tang</surname>
          </string-name>
          , and
          <string-name>
            <surname>S. Yin.</surname>
          </string-name>
          <article-title>BigDansing: a system for big data cleansing</article-title>
          .
          <source>In SIGMOD</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. G. Mecca,
          <string-name>
            <given-names>G.</given-names>
            <surname>Rull</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Santoro</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Teniente</surname>
          </string-name>
          .
          <article-title>Semantic-based mappings</article-title>
          .
          <source>In International Conference on Conceptual Modeling, ER</source>
          <year>2013</year>
          , pages
          <fpage>255</fpage>
          {
          <fpage>269</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>V.</given-names>
            <surname>Raman</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. M.</given-names>
            <surname>Hellerstein</surname>
          </string-name>
          .
          <article-title>Potter's wheel: An interactive data cleaning system</article-title>
          .
          <source>In VLDB</source>
          , pages
          <volume>381</volume>
          {
          <fpage>390</fpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>M. Volkovs</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Chiang</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Szlichta</surname>
            , and
            <given-names>R. J.</given-names>
          </string-name>
          <string-name>
            <surname>Miller</surname>
          </string-name>
          .
          <article-title>Continuous data cleaning</article-title>
          .
          <source>In ICDE</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>J.</given-names>
            <surname>Wang</surname>
          </string-name>
          and
          <string-name>
            <given-names>N.</given-names>
            <surname>Tang</surname>
          </string-name>
          .
          <article-title>Towards dependable data repairing with xing rules</article-title>
          .
          <source>In SIGMOD</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>M. Yakout</surname>
            ,
            <given-names>A. K.</given-names>
          </string-name>
          <string-name>
            <surname>Elmagarmid</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Neville</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Ouzzani</surname>
            ,
            <given-names>and I. F.</given-names>
          </string-name>
          <string-name>
            <surname>Ilyas</surname>
          </string-name>
          .
          <article-title>Guided data repair</article-title>
          .
          <source>PVLDB</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>