<!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>Bringing Order to Data</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Heidar Davoudi</string-name>
          <email>hdavoudi@uwaterloo.ca</email>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Parke Godfrey</string-name>
          <email>godfrey@yorku.ca</email>
          <xref ref-type="aff" rid="aff4">4</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Lukasz Golab</string-name>
          <email>lgolab@uwaterloo.ca</email>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mehdi Kargar</string-name>
          <email>kargar@ryerson.ca</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Divesh Srivastava</string-name>
          <email>divesh@research.att.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jaroslaw Szlichta</string-name>
          <email>szlichta@uoit.ca</email>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>AT&amp;T Labs-Research</institution>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Ted Rogers School of Management, Ryerson University</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>University of Ontario Institute of Technology</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>University of Waterloo</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
        <aff id="aff4">
          <label>4</label>
          <institution>York University</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Integrity constraints (ICs) are widely used in business intelligence to express and enforce application semantics. However, finding ICs manually is time consuming, requires the involvement of domain experts, and is prone to human error. Thus, techniques have been proposed to automatically find a variety of ICs. We propose an algorithm to automatically discover order dependencies (ODs). Prior work on OD discovery has factorial complexity, is not complete, and is not concise. We propose an algorithm that finds a complete set of ODs with exponential worst-case time complexity in the number of attributes and linear complexity in the number of tuples. We experimentally show that our algorithm is orders of magnitude faster than the prior state-of-the-art.</p>
      </abstract>
      <kwd-group>
        <kwd>Integrity constraints Order Dependency Axiomatization</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Ordered attributes, such as timestamps and numbers, are common in business data.
Order Dependencies (ODs) capture monotonic relationships among such attributes. For
instance, Table 1 shows employee tax records in which tax is calculated as a percentage
(perc) of salary (sal). The OD sal orders perc holds: if we sort the table by salary,
it is also sorted by percentage. Similarly, sal orders grp, subg: if we sort the table
by salary, it is also sorted by group with ties broken by subgroup. With interest in data
analytics at an all-time high, ODs can improve the consistency dimension of data
quality and query optimization [
        <xref ref-type="bibr" rid="ref4 ref7 ref8 ref9">4, 7–9</xref>
        ]. ODs can describe business rules (data profiling);
and their violations can point out possible data errors. Furthermore, query optimizers
can use ODs to eliminate costly operators such as joins and sorts: ordered streams
between query operators can exploit available indexes, enable pipelining, and eliminate
intermediate partitioning steps. Finally, ODs subsume Function Dependencies (FDs) as
any FD can be mapped to an equivalent OD by prefixing the left-hand-side attributes
onto the right-hand-side [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        It is time consuming to specify integrity constraints manually, motivating the need
for their automatic discovery. However, since ODs are naturally expressed with lists
rather than sets of attributes (as in the example above), existing solutions have factorial
worst-case time complexity in the number of attributes [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. We describe a more
efficient algorithm to discover ODs from data. First, we show that ODs can be expressed
with sets of attributes via a polynomial mapping into an equivalent set-based
canonical form. Then, we introduce sound and complete axioms for set-based canonical ODs,
ID yr pos bin sal perc tax grp subg
1 16 sec 1 5K 20% 1K A III
2 16 dev 2 8K 25% 2K C II
3 16 dir 3 10K 30% 3K D I
1 15 sec 1 4K 20% 0.8K A III
2 15 dev 2 6K 25% 1.5K C I
3 15 dir 3 8K 25% 2K C II
{A}
{A,B}
{ }
{B}
{A,C}
{A,B,C}
{C}
{B,C}
which lead to optimizations of the OD discovery algorithm by avoiding redundant
computation. This allows us to design a fast and effective OD discovery algorithm that has
exponential worst-case complexity, O(2jRj), in the number of attributes jRj, and linear
complexity in the number of tuples. We note that this short paper is a summary of our
published results in [
        <xref ref-type="bibr" rid="ref10 ref5 ref6">5, 6, 10</xref>
        ].
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Order Dependency Discovery</title>
      <sec id="sec-2-1">
        <title>2.1 Preliminaries</title>
        <p>Order dependencies (ODs) describe relationships among lexicographical orderings of
sets of tuples, as in the SQL order by statement. Let X = [A j T] be a list of attributes,
where the attribute A is the head of the list, and the list T is the tail. For two tuples s and
t, we write s X t iff sA &lt; tA or (sA = tA and (T = [ ] or s T t)). Given two lists of
attributes, X and Y, X 7! Y denotes an OD, read as X orders Y. Table r satisfies X 7! Y
iff, for all s; t 2 r, s X t implies s Y t. Moreover, X and Y are order compatible,
denoted as X Y iff XY $ YX. (For example, month and week of the year in the
calendar are order compatible.)</p>
        <p>
          We say that two tuples, s and t, are equivalent with respect to an attribute set X if
sX = tX . Any attribute set X partitions tuples into equivalence classes [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. We denote
the equivalence class of a tuple t 2 r with respect to a given set X by E (tX ); i.e., E (tX )
= fs 2 r j sX = tX g. A partition of r over X is the set of equivalence classes, X
= fE (tX ) j t 2 rg. For instance, in Table 1, E (t1fyearg) = E (t2fyearg) = E (t3fyearg) =
ft1; t2; t3g and year = fft1; t2; t3g; ft4; t5; t6gg.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>2.2 Canonical Mapping and Axioms</title>
        <p>
          Expressing ODs in a natural way relies on lists of attributes; e.g., in Table 1, sal 7!
grp; subg is not the same as sal 7! subg; grp. In contrast, the order of attributes in
an FD does not matter. However, the list representation leads to high complexity when
discovering ODs [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. Thus, we provide a polynomial mapping of list-based ODs into
equivalent set-based canonical ODs [
          <xref ref-type="bibr" rid="ref10 ref5 ref6">5, 6, 10</xref>
          ]. The mapping allows us to develop an
efficient OD discovery algorithm that traverses a much smaller set-containment lattice
rather than the list-containment lattice used in [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>
          The mapping presented in Theorem 1 (below) converts a list-based OD into
canonical set-based ODs of two types. First, an attribute A is a constant within each
equivalence class with respect to a set of attributes X , denoted as X : [ ] 7! A, if X0 7! X0A for
any permutation X0 of X (note that X functionally determines Y iff X 7! XY, for any
list X over the attributes of X and any list Y over the attributes of Y [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]). Second, two
attributes, A and B, are order-compatible within each equivalence class with respect to
the set of attributes X , denoted as X : A B, if X0A X0B. The set X is called a
context. For example, in Table 1, bin is a constant in the context of pos, written as fposg:
1. Reflexivity
        </p>
        <p>X : [ ] 7! A, 8A 2 X
2. Identity</p>
        <p>X : A A
3. Commutativity</p>
        <p>B</p>
        <p>A
X : A
X : B</p>
        <sec id="sec-2-2-1">
          <title>4. Strengthen</title>
          <p>X :[ ] 7! A
X A:[ ] 7! B
X :[ ] 7! B
5. Propagate
X :[ ] 7! A
X : A B</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>6. Augmentation-I</title>
          <p>X :[ ] 7! A</p>
          <p>ZX :[ ] 7! A
7. Augmentation-II</p>
          <p>B
X : A
ZX : A</p>
          <p>B
[ ] 7! bin since E (t1fposg) j= [ ] 7! bin, E (t2fposg) j= [ ] 7! bin and E (t3fposg) j=
[ ] 7! bin. Also, fyearg: bin salary because E (t1fyearg) j= bin salary and
E (t4fyearg) j= bin salary.</p>
          <p>Theorem 1. X 7! Y iff 8j, X :[ ] 7! Yj and 8i; j, fX1, .., Xi 1, Y1, .., Yj 1g: Xi
Yj .</p>
          <p>Example 1. The OD [AB] 7! [CD] is mapped into the following set of canonical ODs:
fA; Bg:[ ] 7! C, fA; Bg:[ ] 7! D, fg: A C, fAg: B C, fCg: A D, fA; Cg: B D.</p>
          <p>
            We present a sound and complete set-based axiomatization for ODs in Fig. 2 [
            <xref ref-type="bibr" rid="ref6">6</xref>
            ].
The set-based axioms allow us to design effective pruning rules for our OD discovery
algorithm. For example, OD X :[ ] 7! A is trivial if A 2 X by Reflexivity (see also
Example 2).
          </p>
          <p>Theorem 2. The axiomatization for canonical ODs in Fig. 2 is sound and complete.
2.3</p>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>Discovery Algorithm</title>
        <p>
          Given the mapping of a list-based OD into equivalent set-based ODs, we present an
algorithm, named FASTOD, that efficiently discovers a complete and minimal set of
set-based ODs over a given relation instance. In contrast, the OD discovery algorithm
from [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] traverses a lattice of all possible lists of attributes, which leads to factorial time
complexity. FASTOD starts the search from singleton sets of attributes and works its
way to larger attribute sets through a set-containment lattice (as in Figure 1), level by
level (l = 0; 1; : : : ). When the algorithm is processing an attribute set X , it verifies ODs
of the form X n A:[ ] 7! A (let X n A be shorthand for X n fAg, where A 2 X ) and
X n fA; Bg: A B, where A, B 2 X and A 6= B. Furthermore, an OD X n A:[ ] 7! A
should be minimal, that is, @ Y X such that Y n A:[ ] 7! A is valid.
        </p>
        <p>
          The algorithm maintains information about minimal ODs, in the form of X nA:[ ] 7!
A, in the candidate set Cc+(X ) [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] (as ODs subsume FDs [
          <xref ref-type="bibr" rid="ref7 ref9">7, 9</xref>
          ]), where Cc+(X ) = fA 2
R j 8B2X X n fA; Bg:[ ] 7! B does not holdg. Similarly, it stores information about
minimal ODs in the form of X n fA; Bg: A B, in the candidate set Cs+(X ), where
Cs+(X ) = ffA; Bg 2 X 2 j A 6= B and 8C2X X n fA; B; Cg: A B does not hold,
and 8C2X X n fA; B; Cg:[ ] 7! C does not holdg. The following lemmas can be used to
prune the search space:
Lemma 1. An OD X n A:[ ] 7! A, where A 2 X , is minimal iff 8B2X A 2 Cc+(X n B).
Lemma 2. An OD X n fA; Bg: A B, where A, B 2 X and A 6= B, is minimal iff
8C2X nfA;Bg fA; Bg 2 Cs+(X n C), and A 2 Cc+(X n B) and B 2 Cc+(X n A).
According to Lemma 1, we do not need to check X n A:[ ] 7! A if A 2= X TB2X Cc+(X n
B), and based on Lemma 2, we do not need to consider X n fA; Bg: A B if A 2=
Cc+(X n B) or B 2= Cc+(X n A). Moreover, according to Lemma 3, we can delete nodes
from the lattice under the following conditions:
Lemma 3. Deleting node X from the lth lattice level, where l
output set of minimal ODs if Cc+(X ) = fg and Cs+(X ) = fg.
2, has no effect on the
Example 2. Let A:[ ] 7! B, B:[ ] 7! A and fg: A B. Since Cc+(fA; Bg) = fg and
Cs+(fA; Bg) as well as l = 2, by the pruning levels rule (Lemma 3), the node fA; Bg
is deleted and the node fA; B; Cg is not considered (see Figure 1). This is justified as
fABg:[ ] 7! C is not minimal by the Strengthen axiom, fACg:[ ] 7! B is not minimal
by Augmentation–I, fBCg:[ ] 7! A is not minimal by Augmentation–I, fCg: A B is
not minimal by Augmentation–II, fAg: B C is not minimal by Propagate, and fBg:
A C is not minimal by Propagate.
        </p>
        <p>
          Note that while we provide theoretical guarantees for FASTOD to find a complete set of
ODs, the ORDER algorithm [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] is not complete.
        </p>
        <p>Theorem 3. The FASTOD algorithm computes a complete and minimal set of ODs.</p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], we extend our algorithm to discover bidirectional ODs, which allow a mix
of ascending and descending (desc) orders. For example, a student with an
alphabetically lower letter grade has a higher percentage grade than another student. We develop
additional pruning rules and show that efficiency of discovery of bidirectional ODs
remains the same as for one-directional ODs.
        </p>
        <p>
          We experimentally compare FASTOD with previous approaches ( ORDER [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]). Our
algorithm can be orders of magnitude faster. For instance, on the flight dataset from
http://metanome.de with 1K tuples and 20 attributes, FASTOD finishes the
computation in less than 1 second, whereas ORDER did not terminate after 5 hours.
Moreover, FASTOD’s candidate sets do not increase in size during the execution of the
algorithm (unlike ORDER) because of the concise candidate representation (e.g., many ODs
that are considered minimal by ORDER are found to be redundant by our algorithm).
        </p>
        <p>
          Finally, in [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], we show that a recent approach to OD discovery called
OCDDISCOVER in Consonni et al. [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] is incorrect. We show that their claim of completeness of
OD discovery is not true. Built upon their incorrect claim, OCDDISCOVER’s pruning
rules are overly aggressive, and prune parts of the search space that contain legitimate
ODs. This is the reason their approach appears to be “faster” in practice than our
FASTOD discovery algorithm despite being significantly worse in asymptotic complexity.
Finally, we show that Consonni et al. [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] misinterpret our set-based canonical form for
ODs, leading to an incorrect claim that our FASTOD implementation has an error.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Conclusions</title>
      <p>We presented an efficient algorithm for discovering ODs. The technical innovation that
made our algorithm possible is a novel mapping into a set-based canonical form and
an axiomatization for set-based canonical ODs. In future work, we plan to study
conditional ODs that hold over portions of data.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Consonni</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sottovia</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Montresor</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Velegrakis</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Discovering Order Dependencies through Order Compatibility</article-title>
          . In: EDBT. pp.
          <fpage>409</fpage>
          -
          <lpage>420</lpage>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Golab</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kargar</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Srivastava</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Szlichta</surname>
          </string-name>
          , J.:
          <article-title>Errata note: Discovering order dependencies through order compatibility</article-title>
          .
          <source>Technical Report</source>
          , 5 pages, available at https://arxiv.org/abs/
          <year>1905</year>
          .
          <year>02010</year>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Huhtala</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Karkkainen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Porkka</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Toivonen</surname>
          </string-name>
          , H.:
          <article-title>Efficient Discovery of Functional and Approximate Dependencies Using Partitions</article-title>
          . In: ICDE. pp.
          <fpage>392</fpage>
          -
          <lpage>401</lpage>
          (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Langer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Naumann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Efficient order dependency detection</article-title>
          .
          <source>VLDB J</source>
          .
          <volume>25</volume>
          (
          <issue>2</issue>
          ),
          <fpage>223</fpage>
          -
          <lpage>241</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Mihaylov</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Golab</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kargar</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Srivastava</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Szlichta</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>FASTOD: bringing order to data</article-title>
          .
          <source>In: 2018 IEEE 34th International Conference on Data Engineering (ICDE)</source>
          . pp.
          <fpage>1561</fpage>
          -
          <lpage>1564</lpage>
          . IEEE (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Szlichta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Golab</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kargar</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Srivastava</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Effective and Complete Discovery of Order Dependencies via Set-based Axiomatization</article-title>
          .
          <source>PVLDB</source>
          <volume>10</volume>
          (
          <issue>7</issue>
          ),
          <fpage>721</fpage>
          -
          <lpage>732</lpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Szlichta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gryz</surname>
          </string-name>
          , J.:
          <source>Fundamentals of Order Dependencies. PVLDB</source>
          ,
          <volume>5</volume>
          (
          <issue>11</issue>
          ):
          <fpage>1220</fpage>
          -
          <lpage>1231</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Szlichta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gryz</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Ma,
          <string-name>
            <given-names>W.</given-names>
            ,
            <surname>Qiu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            ,
            <surname>Zuzarte</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>Business-Intelligence Queries with Order Dependencies in DB2</article-title>
          . In: EDBT,
          <fpage>750</fpage>
          -
          <lpage>761</lpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Szlichta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gryz</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zuzarte</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Expressiveness and Complexity of Order Dependencies</article-title>
          .
          <source>PVLDB</source>
          <volume>6</volume>
          (
          <issue>14</issue>
          ):
          <fpage>1858</fpage>
          -
          <lpage>1869</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Szlichta</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Golab</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kargar</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Srivastava</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Effective and complete discovery of bidirectional order dependencies via set-based axioms</article-title>
          .
          <source>The VLDB Journal</source>
          <volume>27</volume>
          (
          <issue>4</issue>
          ),
          <fpage>573</fpage>
          -
          <lpage>591</lpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>