<!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>Decomposing and Pruning Primary Key Violations from Large Data Sets?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Marco Manna</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Francesco Ricca</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Giorgio Terracina</string-name>
          <email>terracinag@mat.unical.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DeMaCS, University of Calabria</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The problem of computing the certain answer to a conjunctive query over a relational instance subject to primary key constraints is a classical hard problem in database research. On the theoretical side, we present a decomposition and pruning strategy that reduces, in polynomial time, the original problem to a collection of smaller problems of the same sort that can be solved independently. From a practical perspective, we discuss an experiment on large data sets that shows the e ectiveness of the overall technique and its implementation in ASP.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Integrity constraints provide means for ensuring that database evolution does
not result in a loss of consistency or in a discrepancy with the intended model of
the application domain. A relational database that do not satisfy some of these
constraints is said to be inconsistent. In practice it is not unusual that one has
to deal with inconsistent data [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], and when a conjunctive query (CQ) is posed
to an inconsistent database, a natural problem arises that can be formulated as:
How to deal with inconsistencies to answer the input query in a consistent way?
This is a classical problem in database research and di erent approaches have
been proposed in the literature. One possibility is to clean the database [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and
work on one of the possible coherent states; another possibility is to be tolerant
of inconsistencies by leaving intact the database and computing answers that
are \consistent with the integrity constraints" [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        In this paper, we adopt the second approach { which has been proposed
by [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] under the name of consistent query answering (CQA) { and focus on the
relevant class of primary key constraints. Formally, in our setting: (1) a database
D is inconsistent if there are at least two tuples of the same relation that agree
on their primary key; (2) a repair of D is any maximal consistent subset of D;
and (3) a tuple t of constants is in the consistent answer to a CQ q over D
? The paper |overviewing the results presented in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]| has been partially supported
by the Italian Ministry for Economic Development (MISE) under project
\PIUCultura { Paradigmi Innovativi per l'Utilizzo della Cultura" (n. F/020016/01-02/X27),
and under project \Smarter Solutions in the Big Data World (S2BDW)".
if and only if, for each repair R of D, tuple t is in the (classical) answer to q
over R. Intuitively, the original database is (virtually) repaired by applying a
minimal number of corrections (deletion of tuples with the same primary key),
while the consistent answer collects the tuples that can be retrieved in every
repaired instance.
      </p>
      <p>
        CQA under primary keys is coNP-complete in data complexity [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], when both
the relational schema and the query are considered xed. Due to its complex
nature, traditional RDBMs are inadequate to solve the problem alone via SQL
without focusing on restricted classes of CQs [
        <xref ref-type="bibr" rid="ref11 ref14 ref15 ref2 ref8">2, 8, 14, 15, 11</xref>
        ]. Actually, in the
unrestricted case, CQA has been traditionally dealt with logic programming [
        <xref ref-type="bibr" rid="ref12 ref3 ref4 ref9">3,
4, 9, 12</xref>
        ]. However, it has been argued [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] that the practical applicability of
logicbased approaches is restricted to data sets of moderate size. Only recently, an
approach based on Binary Integer Programming [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] has revealed good
performances on large databases (featuring up to one million tuples per relation) with
primary key violations.
      </p>
      <p>
        In this paper, we show that logic programming can still be e ectively used
for computing consistent answers over large relational databases. We describe
a decomposition strategy that reduces (in polynomial time) the computation of
the consistent answer to a CQ over a database subject to primary key constraints
into a collection of smaller problems of the same sort. At the core of the strategy
is a cascade pruning mechanism that dramatically reduces the number of key
violations that have to be handled to answer the query. Moreover, we implement
the new strategy using Answer Set Programming (ASP) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], and we prove
empirically the e ectiveness of our ASP-based approach on existing benchmarks from
the database world. The experiment empirically demonstrate that our approach
is e cient on large data sets, and can even perform better than state-of-the-art
methods.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>The Framework</title>
      <p>We are given two disjoint countably in nite sets of terms denoted by C and V
and called constants and variables, respectively. We denote by X sequences of
variables X1; : : : ; Xn, and by t sequences of terms t1; : : : ; tn. We also denote by
[n] the set f1; : : : ; ng, for any n &gt; 1.</p>
      <p>A (relational ) schema is a triple hR; ; i where R is a nite set of relation
symbols (or predicates), : R ! N is a function associating an arity to each
predicate, and : R ! 2N is a function that associates, to each r 2 R, a
nonempty set of positions from [ (r)], which represents the primary key of r.
Moreover, for each relation symbol r 2 R and for each position i 2 [ (r)], r[i]
denotes the i-th attribute of r. Throughout, let = hR; ; i denote a relational
schema. An atom (over ) is an expression of the form r(t1; : : : ; tn), where r 2 R,
and n = (r). An atom is called a fact if all of its terms are constants of C.
Conjunctions of atoms are often identi ed with the sets of their atoms. For a
set A of atoms, the variables occurring in A are denoted by var (A). A database
D (over ) is a nite set of facts over . Given an atom r(t) 2 D, we denote
by ^t the sequence tj (r). We say that D is inconsistent (w.r.t. ) if it contains
two di erent atoms of the form r(t1) and r(t2) such that ^t1 = ^t2. Otherwise,
it is consistent. A repair R of D (w.r.t. ) is any maximal consistent subset
of D. The set of all the repairs of D is denoted by rep(D; ). A substitution
is a mapping : C [ V ! C [ V which is the identity on C. Given a set A
of atoms, (A) = fr( (t1); : : : ; (tn)) : r(t1; : : : ; tn) 2 Ag. The restriction of
to a set S C [ V, is denoted by jS . A conjunctive query (CQ) q (over )
is an expression of the form 9Y '(X; Y), where X [ Y are variables of V, and
' is a conjunction of atoms (possibly with constants) over . To highlight the
free variables of q, we often write q(X) instead of q. If X is empty, then q is
called a Boolean conjunctive query (BCQ). Assuming that X is the sequence
X1; : : : ; Xn, the answer to q over a database D, denoted q(D), is the set of
all n-tuples ht1; : : : ; tni 2 Cn for which there exists a substitution such that
('(X; Y)) D and (Xi) = ti, for each i 2 [n]. A BCQ is true in D, denoted
D j= q, if hi 2 q(D). The consistent answer to a CQ q(X) over a database D
(w.r.t. ), denoted ans(q; D; ), is the set of tuples TR2rep(D; ) q(R). Clearly,
ans(q; D; ) q(D) holds. A BCQ q is consistently true in a database D (w.r.t.</p>
      <p>), denoted D j= q, if hi 2 ans(q; D; ).
3</p>
    </sec>
    <sec id="sec-3">
      <title>Dealing with Large Datasets</title>
      <p>
        We present a strategy suitable for computing the consistent answer to a CQ over
an inconsistent database subject to primary key constraints. The new strategy
reduces in polynomial time that problem to a collection of smaller ones of the
same sort. Given a database D over a schema , and a BCQ q, we identify a set
F1; : : : ; Fk of pairwise disjoint subsets of D, called fragments, such that: D j= q
i there is i 2 [k] such that Fi j= q. At the core of our strategy we have: (1) a
cascade pruning mechanism to reduce the number of \crucial" inconsistencies,
and (2) a technique to identify a suitable set of fragments from any (possibly
unpruned) database. For the sake of presentation, we start with principle (2).
(Proofs are given in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].)
      </p>
      <p>Given a database D, a key component K of D is any maximal subset of
D such that if r1(t1) and r2(t2) are in K, then both r1 = r2 and ^t1 = ^t2
hold. Namely, K collects only atoms that agree on their primary key. Hence,
the set of all key components of D, denoted by comp(D; ), forms a partition
of D. If a key component is a singleton, then it is called safe; otherwise it is
con icting. Let comp(D; ) = fK1; : : : ; Kng. It can be veri ed that rep(D; ) =
ffa1; : : : ; ang : a1 2 K1; : : : ; an 2 Kng. Let us now x throughout this section
a BCQ q over . For a repair R 2 rep(D; ), if q is true in R, then there
is a substitution such that (q) R. But since R D, it also holds that
(q) D. Hence, sub(q; D) = f jvar(q) : is a substitution and (q) Dg is
an overestimation of the substitutions that map q to the repairs of D.</p>
      <p>Inspired by the well-known notions of con ict-hypergraph and con ict-join
graph, we now introduce the notion of con ict-join hypergraph. Given a database
D, the con ict-join hypergraph of D (w.r.t. q and ) is denoted by HD =
μ2(q)
r1(1,2)
r1(1,3)
μ3(q)
μ4(q)
hD; Ei, where D are the vertices, and E are the hyperedges partitioned in Eq =
f (q) : 2 sub(q; D)g and E = fK : K 2 comp(D; )g. A bunch B of
vertices of HD is any minimal nonempty subset of D such that, for each e 2 E,
either e B or e \ B = ; holds. Intuitively, every edge of HD collects the
atoms in a key component of D or the atoms in (q), for some 2 sub(q; D).
Moreover, each bunch collects the vertices of some connected component of HD.
An example follows to x these preliminary notions.</p>
      <p>Example 1. Consider the schema = hR; ; i, where R = fr1; r2g, (r1) =
(r2) = 2, and (r1) = (r2) = f1g. Consider also the database D = fr1(1; 2);
r1(1; 3); r2(4; 1); r2(5; 1), r2(5; 2)g, and the BCQ q = r1(X; Y ); r2(Z; X). The
con icting components of D are K1 = fr1(1; 2); r1(1; 3)g and K3 = fr2(5; 1),
r2(5; 2)g, while its safe component is K2 = fr2(4; 1)g. The repairs of D are R1 =
fr1(1; 2); r2(4; 1); r2(5; 1)g, R2 = fr1(1; 2); r2(4; 1); r2(5; 2)g, R3 = fr1(1; 3);
r2(4; 1); r2(5; 1)g, and R4 = fr1(1; 3); r2(4; 1); r2(5; 2)g. Moreover, sub(q; D)
contains the substitutions: 1 = fX 7! 1; Y 7! 2; Z 7! 4g, 2 = fX 7! 1; Y 7!
3; Z 7! 4g, 3 = fX 7! 1; Y 7! 2; Z 7! 5g, and 4 = fX 7! 1; Y 7! 3; Z 7! 5g.
The con ict-join hypergraph HD = hD; Ei is as in Figure 1. Solid (resp., dashed)
edges form the set E (resp., Eq). Since 1 maps q to R1 and R2, and 2 maps q
to R3 and R4, we conclude that D j= q. Finally, D is the only bunch of HD. tu</p>
      <p>In Example 1 we observe that K3 can be safely ignored in the evaluation of
q. In fact, even if both 3(q) and 4(q) contain an atom of K3, 1 and 2 are
su cient to prove that q is consistently true. This might suggest to focus only
on the set F = K1 [ K2, and on its repairs fr1(1; 2); r2(4; 1)g and fr1(1; 3);
r2(4; 1)g. Also, since F j= q, F represents the \small" fragment of D that we
need to evaluate q. The practical advantage of considering F instead of D should
be already clear: (1) the repairs of F are smaller than the repairs of D; and (2) F
has less repairs than D. We are now ready to introduce the notion of fragment.
Consider a database D. For any set C comp(D; ) of key components of D,
we say that the set F = SK2C K is a (well-de ned ) fragment of D. According to
this notion, the set F = K1 [ K2 in Example 1 is a fragment of D. The following
theorem, states a useful property that holds for any fragment.</p>
      <p>Theorem 1. Consider a database D, and two fragments F1
F1 j= q, then F2 j= q.</p>
      <p>F2 of D. If</p>
      <p>Note that D is indeed a fragment of itself. Hence, if q is consistently true,
then there is always the fragment F = D such that F j= q. But now the
question is: How can we identify a convenient set of fragments of D? The naive
way would be to use as fragments the bunches of HD. Soundness is guaranteed
by Theorem 1. Regarding completeness, we rely on the following result.
Theorem 2. Consider a database D. If D j=
HD such that B j= q.
q, then there is a bunch B of</p>
      <p>By combining Theorems 1 and 2 we are able to reduce, in polynomial time,
the original problem into a collection of smaller ones of the same sort.
However, this technique alone is not su cient to deal with large data sets. Indeed,
it involves the entire database by considering all the bunches of the con ict-join
hypergraph. We now introduce an algorithm that can realize that K3 is
\redundant" in Example 1. Formally, a key component K of a database D is redundant
(w.r.t. q) if for each fragment F of D, F j= q implies F n K j= q. In practice,
a key component is redundant independently from the fact that some other key
component is redundant or not. More formally, given a database D and a set C
of redundant components of D, it holds that D j= q i D n SK2C K j= q.
Therefore, if we can identify all the redundant components of D, then after
removing from D all these components, what remains is either: (1) a nonempty set
of (minimal) bunches, each of which entails consistently q whenever D j= q; or
(2) the empty set, whenever D 6j= q. More formally: given a database D, each
key component of D is redundant i D 6j= q.</p>
      <p>However, assuming that ptime 6= np, any algorithm for the identi cation of
all the redundant components of D cannot be polynomial because, otherwise, we
would have a polynomial procedure for solving the original problem. Our goal is
therefore to identify su cient conditions to design a pruning mechanism that
detects in polynomial time as many redundant con icting components as possible.
To give an intuition of our pruning mechanism, we look again at Example 1.
Actually, K3 is redundant because it contains an atom, namely r2(5; 2), that is not
involved in any substitution (see Figure 1). Assume now that this is the criterion
that we use to identify redundant components. Since we know that D j= q i
D n K3 j= q, this means that we can now forget about D and consider only
D0 = K1 [ K2. But once we focus on sub(q; D0), we realize that it contains only
1 and 2. Then, a smaller number of substitutions in sub(q; D0) w.r.t. those
in sub(q; D) motivates us to reapply our criterion. Indeed, there could also be
some atom in D0 not involved in any of the substitutions of sub(q; D0). This
is not the case in our example since the atoms in D0 are covered by 1(q) or
2(q). However, in general, in one or more steps, we can identify more and more
redundant components. We can now state the main result of this section.
Theorem 3. Consider some con ict-join hypergraph HD = hD; Ei, and a key
component K of D. If K n Se2Eq e 6= ;, then K is redundant.</p>
      <p>As discussed just before Theorem 3, an indirect e ect of removing a
redundant component K from D is that all the substitutions in the set S = f 2
sub(q; D) : (q) \ K 6= ;g can be in a sense ignored. In fact, sub(q; D n K) =
sub(q; D) n S. Whenever a substitution can be safely ignored, we say that it is
unfounded. Let us formalize this new notion. Consider a database D. A
substitution of sub(q; D) is unfounded if: for each fragment F of D, F j= q implies
that, for each repair R 2 rep(F; ), there exists a substitution 0 2 sub(q; R)
di erent from such that 0(q) R. We now show how to detect as many
unfounded substitutions as possible.</p>
      <p>Theorem 4. Consider a database D, and some 2 sub(q; D). If there exists a
redundant component K of D such that (q) \ K 6= ;, then is unfounded.</p>
      <p>Clearly, Theorem 4 alone is not helpful since it relies on the identi cation
of redundant components. However, if combined with Theorem 3, it forms the
desired cascade pruning mechanism. For example, both substitutions 3 and 4
in Example 1 are unfounded, since K3 is redundant.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Experimental Evaluation</title>
      <p>
        Benchmark Setup. The assessment of our approach was done using a benchmark
employed in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] for testing CQA systems on large inconsistent databases. It
comprises 40 instances of a database schema with 10 tables, organized in four
families of 10 instances each of which contains tables of size varying from 100k
to 1M tuples; also it includes 21 queries of di erent structural features split into
three groups depending on whether CQA complexity is coNP-complete (queries
Q1; ; Q7), PTIME but not FO-rewritable [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] (queries Q8; ; Q14), and
FOrewritable (queries Q15; ; Q21). We compare our approach, named Pruning,
with two alternative ASP-based approaches. In particular, we considered one of
the rst encoding of CQA in ASP that was introduced in [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], and an optimized
technique that was introduced more recently in [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]; these are named BB and
MRT , respectively. BB and MRT can handle a larger class of integrity constrains
than Pruning, and only MRT features speci c optimization that apply also to
primary key violations handling. We constructed the three alternative encodings
for all 21 queries of the benchmark, and we run them on the ASP solver WASP
2.0 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], con gured with the iterative coherence testing algorithm.
Analysis of the results. Concerning the capability of providing an answer to a
query within the time limit of 600 seconds, we report that Pruning was able to
answer the queries in all the 840 runs in the benchmark with an average time
of 14.6s. MRT , and BB solved only 778, and 768 instances within 600 seconds,
with an average of 80.5s and 52.3s, respectively.
      </p>
      <p>The scalability of Pruning is studied in detail for each query in Figures
2(df), each plotting the average execution times per group of queries of the same
theoretical complexity. It is worth noting that Pruning scales almost linearly in
all queries, and independently from the complexity class of the query. This is
because Pruning can identify and deal e ciently with the con icting fragments.</p>
      <p>
        We now analyze the performance of Pruning from the perspective of a
measure called overhead, which was employed in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] for measuring the performance
tcqa , where tcqa
of CQA systems. Given a query Q the overhead is given by tplain
1
1
1
0 1 2 3 4 5 6 7 8 9 10
      </p>
      <p>Database size
0 1 2 3 4 5 6 7 8 9 10</p>
      <p>Database size
0 1 2 3 4 5 6 7 8 9 10</p>
      <p>
        Database size
(a) Overhead (co-NP)
(b) Overhead (P)
(c) Overhead (FO)
(d) Scalability (co-NP)
(e) Scalability (P)
(f) Scalability (FO)
is time needed for computing the consistent answer of Q, and tplain is the time
needed for a plain execution of Q where the violation of integrity constraints are
ignored. Note that the overhead measure is independent of the hardware and the
software employed, since it relates the computation of CQA to the execution of a
plain query on the same system. Thus it allows for a direct comparison of Pruning
with other methods having known overheads. Following what was done in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] (a
comparison with [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] can be found in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]), we computed the average overhead
measured varying the database size for each query, and we report the results by
grouping queries per complexity class in Figures 2(a-c). The overheads of
Pruning is always below 2.1, and the majority of queries has overheads of around 1.5.
The behavior is basically ideal for query Q5 and Q4 (overhead is about 1). The
state of the art approach described in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] has overheads that range between 5
and 2.8 on the very same dataset. Thus, our approach allows to obtain a very
effective implementation of CQA in ASP with an overhead that is often more than
two times smaller than the one of state-of-the-art approaches. We complemented
this analysis by measuring also the overhead of Pruning w.r.t. the computation
of safe answers, which provide an underestimate of consistent answers that can
be computed e ciently (in polynomial time) by means of strati ed ASP
programs. We report that the computation of the consistent answer with Pruning
requires only at most 1.5 times more in average than computing the safe answer.
This further outlines that Pruning is able to maintain reasonable the impact of
the hard-to-evaluate component of CQA. Finally, we have analyzed the impact
of our technique in the various solving steps of the evaluation. We report that
for Pruning the solver analyzes a few non-factual rules (below 1% in average),
whereas MRT and BB have 5% and 63% of non-factual rules, respectively. Since
the hard part of the computation is performed by the solver on non-factual rules,
this also outlines the bene ts of the pruning technique.
5
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>
        Logic programming approaches to CQA were recently considered not
competitive [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] on large databases a ected by primary key violations. In this paper, we
overview a strategy that dramatically reduces the primary key violations to be
handled to answer the query. The strategy is encoded naturally in ASP, and an
experiment on benchmarks already employed in the literature demonstrates that
our ASP-based approach is e cient on large datasets, and performs better than
state-of-the-art methods in terms of overhead. As far as future work is concerned,
we plan to extend the Pruning method for handling inclusion dependencies, and
other tractable classes of tuple-generating dependencies.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Alviano</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dodaro</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Anytime computation of cautious consequences in answer set programming</article-title>
          .
          <source>TPLP</source>
          <volume>14</volume>
          (
          <issue>4-5</issue>
          ),
          <volume>755</volume>
          {
          <fpage>770</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Arenas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bertossi</surname>
            ,
            <given-names>L.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chomicki</surname>
          </string-name>
          , J.:
          <article-title>Consistent query answers in inconsistent databases</article-title>
          .
          <source>In: Proc. of PODS '99</source>
          . pp.
          <volume>68</volume>
          {
          <issue>79</issue>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Arenas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bertossi</surname>
            ,
            <given-names>L.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Chomicki</surname>
          </string-name>
          , J.:
          <article-title>Answer sets for consistent query answering in inconsistent databases</article-title>
          .
          <source>TPLP</source>
          <volume>3</volume>
          (
          <issue>4-5</issue>
          ),
          <volume>393</volume>
          {
          <fpage>424</fpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Barcelo</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bertossi</surname>
            ,
            <given-names>L.E.</given-names>
          </string-name>
          :
          <article-title>Logic programs for querying inconsistent databases</article-title>
          .
          <source>In: Proc. of PADL'03. LNCS</source>
          , vol.
          <volume>2562</volume>
          , pp.
          <volume>208</volume>
          {
          <issue>222</issue>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bertossi</surname>
            ,
            <given-names>L.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hunter</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schaub</surname>
            , T. (eds.): Inconsistency Tolerance,
            <given-names>LNCS</given-names>
          </string-name>
          , vol.
          <volume>3300</volume>
          . Springer, Berlin / Heidelberg (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Brewka</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eiter</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Truszczynski</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Answer set programming at a glance</article-title>
          .
          <source>Commun. ACM</source>
          <volume>54</volume>
          (
          <issue>12</issue>
          ),
          <volume>92</volume>
          {
          <fpage>103</fpage>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Elmagarmid</surname>
            ,
            <given-names>A.K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ipeirotis</surname>
            ,
            <given-names>P.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Verykios</surname>
            ,
            <given-names>V.S.:</given-names>
          </string-name>
          <article-title>Duplicate record detection: A survey</article-title>
          .
          <source>IEEE Trans. Knowl. Data Eng</source>
          .
          <volume>19</volume>
          (
          <issue>1</issue>
          ),
          <volume>1</volume>
          {
          <fpage>16</fpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fuxman</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miller</surname>
            ,
            <given-names>R.J.</given-names>
          </string-name>
          :
          <article-title>First-order query rewriting for inconsistent databases</article-title>
          .
          <source>J. Comput. Syst. Sci</source>
          .
          <volume>73</volume>
          (
          <issue>4</issue>
          ),
          <volume>610</volume>
          {
          <fpage>635</fpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Greco</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Greco</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zumpano</surname>
          </string-name>
          , E.:
          <article-title>A logical framework for querying and repairing inconsistent databases</article-title>
          .
          <source>IEEE Trans. Knowl. Data Eng</source>
          .
          <volume>15</volume>
          (
          <issue>6</issue>
          ),
          <volume>1389</volume>
          {
          <fpage>1408</fpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Kolaitis</surname>
            ,
            <given-names>P.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pema</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tan</surname>
          </string-name>
          , W.C.:
          <article-title>E cient querying of inconsistent databases with binary integer programming</article-title>
          .
          <source>PVLDB</source>
          <volume>6</volume>
          (
          <issue>6</issue>
          ),
          <volume>397</volume>
          {
          <fpage>408</fpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Koutris</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wijsen</surname>
          </string-name>
          , J.:
          <article-title>Consistent query answering for primary keys</article-title>
          .
          <source>SIGMOD Record</source>
          <volume>45</volume>
          (
          <issue>1</issue>
          ),
          <volume>15</volume>
          {
          <fpage>22</fpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Manna</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Terracina</surname>
          </string-name>
          , G.:
          <article-title>Consistent query answering via asp from di erent perspectives: Theory and practice</article-title>
          .
          <source>TPLP</source>
          <volume>13</volume>
          (
          <issue>2</issue>
          ),
          <volume>227</volume>
          {
          <fpage>252</fpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Manna</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Terracina</surname>
          </string-name>
          , G.:
          <article-title>Taming primary key violations to query large inconsistent data via ASP</article-title>
          .
          <source>TPLP</source>
          <volume>15</volume>
          (
          <issue>4-5</issue>
          ),
          <volume>696</volume>
          {
          <fpage>710</fpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Wijsen</surname>
          </string-name>
          , J.:
          <article-title>On the consistent rewriting of conjunctive queries under primary key constraints</article-title>
          .
          <source>Inf. Syst</source>
          .
          <volume>34</volume>
          (
          <issue>7</issue>
          ),
          <volume>578</volume>
          {
          <fpage>601</fpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Wijsen</surname>
          </string-name>
          , J.:
          <article-title>Certain conjunctive query answering in rst-order logic</article-title>
          .
          <source>ACM Trans. Database Syst</source>
          .
          <volume>37</volume>
          (
          <issue>2</issue>
          ), 9:
          <issue>1</issue>
          {9:
          <issue>35</issue>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>