<!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>A Monotonic Extension for Horn-Clauses and its Signi cance in Datalog's Renaissance</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mirjana Mazuran</string-name>
          <email>mazuran@elet.polimi.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Edoardo Serra</string-name>
          <email>eserra@deis.unical.it</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Carlo Zaniolo</string-name>
          <email>zaniolo@cs.ucla.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff3">3</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>A Monotonic Extension for Horn Clauses</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Politecnico di Milano DEI</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>University of Calabria DEIS</institution>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>University of California</institution>
          ,
          <addr-line>Los Angeles</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>FS-rules provide a powerful monotonic extension for Horn clauses that supports monotonic aggregates in recursion by reasoning on the multiplicity of occurrences satisfying existential goals. The least xpoint semantics, and its equivalent least model semantics, hold for logic programs with FS-rules; moreover, generalized notions of strati cation and stable models are easily derived once negated goals are also allowed. Finally, the generalization of techniques such as seminaive xpoint and magic sets, make possible the e cient implementation of DatalogF,Si.e., Datalog with FS-rules and strati ed negation. A large number of applications that could not be supported e ciently, or could not be expressed at all in strati ed Datalog can now be easily expressed and e ciently supported in DatalogF S and a powerful DatalogF S system is now being developed at UCLA.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        The recent revival of interest in Datalog [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is driven by various developments
that include the emergence of natural application areas [2{4], the success of
industrial-strength systems [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], and Datalog's uses in (i) advanced computational
and semantic models [
        <xref ref-type="bibr" rid="ref3 ref6">3, 6</xref>
        ], (ii) the big-data problem [
        <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
        ], and (iii) Data Stream
Management Systems [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Due to space limitations, this is a very incomplete list,
which does not mention many signi cant contributions from the past, and the
many new ones that are emerging now, i.e., in a time that has been described with
terms such as `resurgence' [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], `springtime' [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and `renaissance' [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] for Datalog4.
In this paper, we make a signi cant contribution to this renaissance, by providing
an e ective solution to the problem of supporting aggregates in recursive rules,
a challenge that had motivated much classical Datalog research [11{16]. Space
constraints force us to limit this presentation to a general overview, whereas
details and formal proofs are given in [
        <xref ref-type="bibr" rid="ref17 ref18">17, 18</xref>
        ].
4 The last term is actually the most tting, since the renaissance is the era that, after
the `dark ages,' revived arts and sciences producing accomplishments that outshined
and outlasted even the glorious ones of classical times.
      </p>
      <p>student(Y); attend(X); friend(Y; X):
A logical equivalent that makes a distinction between universal and existential
variables is:
which shows that Y is a global/universal variable and X is a local/existential
one. Now, if the party is held during nals, students are much less
outgoing and require that three friends attend the party before they join in. We
could express this condition by expanding the bracketed expression above into:
[attend(X); friend(X; Y1); friend(X; Y2); friend(X; Y3); Y16=Y2; Y26=Y3; Y36=Y1].
However, such an expansion becomes unwieldy when the number of required
friends increases, and actually impossible when this number is a variable. Thus,
DatalogF S introduces a special notation as follows:
attend(Y)</p>
      <p>
        student(Y); 3 : [attend(X); friend(Y; X)]:
Here, 3 : [attend(X); friend(Y; X)] means that there are at least three distinct
occurrences of the local variable X that make the expression in the brackets true. In
general , K : [b-expression(X; Y)], where X is the vector of global variables and X is
the vector of local variables, means that there are at least K distinct occurrences
of Y that satisfy our b-expression(X; Y). Naturally, if K : [b-expression(X; Y)] is
true, then K0 : [b-expression(X; Y)] is also true for every 1 K0 K. Following
[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], we refer to the conjunct of positive atoms in the bracket as the b-expression,
while the whole `3 : [attend(X); friend(Y; X)]' is called a Running FS-goal.
      </p>
      <p>Rules where FS-goals are allowed will be called FS-rules. An FS-rule has
the form A A1; : : : ; Am, where A is an atom, which is the head of the rule,
and A1; : : : ; Am is the conjunction of literals forming the body of the rule. Now,
literals in the body can either be (i) the positive atom of Horn clauses, or (ii)
running FS-goals. A set of FS-rules will be called an FS-program.</p>
      <p>
        The elegant foundations that provide formal semantics to de nite-clause
programs nd natural extensions, since the notions of Herbrand Universe,
interpretations, models, instantiated rules and programs, and the immediate consequence
operator TP , can be extended to an FS-program [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The model intersection
property holds for FS-programs, whereby every FS-program has a least minimal
model. Moreover, the immediate consequence operator TP of an FS-program
P is monotonic and continuous in the lattice of interpretations, whereby the
equation I = TP (I) has a least solution, denoted lf p(TP ), which is equal to
the least model of P . Finally, lf p(TP ) can be computed as lf p(TP ) = TP"!(;).
These beautiful properties that Paris Kanellakis once described as `The Garden
of Eden' of declarative semantics5 have now been extended to logic programs
with FS-rules, which can now express declaratively many monotonic functions
which were not expressible in traditional Datalog.
      </p>
      <p>
        However, many real-life applications require non-monotonic functions and
reasoning. Indeed, Datalog and its bottom-up semantics fostered many advances
5 Paris Kanellakis, personal communication, March 1987.
in this area with the introduction of strati ed negation, stable models, and
related semantics. As shown in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], these non-monotonic concepts and de nitions
can be easily extended to FS-programs. For an example, let us return to the party
attendance example inspired by [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and add a few facts describing students and
their friends:
Example 1. Organizers always attend; the others join after three friends do.
organizer(tom):
organizer(sue):
      </p>
      <p>organizer(pat):
friend(marc; sue): friend(marc; tom): friend(marc; pat):
friend(ann; pat): friend(ann; tom): friend(ann; marc):
student(marc): student(ann):
attend(Y)
attend(Y)
organizer(Y):
student(Y); 3 : [attend(X); friend(Y; X)]:
In this example, tom, pat and sue attend the party as organizers. Now, marc
views the three of them as his friends, so he will attend too. Because of this, ann
who views pat, tom and marc as her friends, joins the party too.</p>
      <p>Negation is needed to detect how many people actually attend the party:
partycount(K)</p>
      <p>K : [attend(Y)]; K1 = K + 1; :K1 : [attend(Y1)]:
Thus, at least K people will attend the party but K+1 will not. Therefore, K is the
exact count of people attending the party. Alternatively the nal FS construct,
denoted by =! can be used to determine the exact count, as follows:
partycount(K)</p>
      <p>K=! [attend(Y)]:
The meaning of this rule is actually de ned by its expansion into the previous
one that uses negation|whereby we refer to programs that are strati ed w.r.t.</p>
      <p>nal FS goals as negation-strati ed programs.
3</p>
      <p>DatalogF S
In addition to strati ed negation, the DatalogF S system being developed at
UCLA supports FS-assert constructs that are used to declare predicates with
multiplicity greater than one. For instance, we might want to state that tom has
ve friends without stating their names as follows: friends(tom) : 5. Then, since
tom has ve friends, the following rule that invites to the party students with
more than four friends will succeed for tom:
invite(Y)</p>
      <p>student(Y); 4 : [friends(Y)]:
This FS-assert construct is basically syntactic sugaring whose semantics is
dened by a simple rewriting. In fact friends(tom) : 5 is viewed as a shorthand for
friends(tom; J); J = 1; : : : ; 5. Naturally the FS-goals in the rules are re-written
according to this expansion, whereas our previous rule becomes:
invite(Y)</p>
      <p>student(Y); 4 : [ friends(Y; J)]:</p>
      <p>The FS-assert construct is very useful since it implicitly computes the
maximum of positive integers. For instance, say that we add the fact friends(tom) : 7.
Since this fact stands for friends(tom; J); J = 1; : : : ; 7, it subsumes friends(tom; J);
J = 1; : : : ; 5, and therefore friends(tom) : 5.</p>
      <p>
        By using running FS-goals, and FS-assert constructs, negation-strati ed DatalogF S
programs can express in a concise fashion queries that were not expressible in
strati ed Datalog. For instance, the Summarized Part-Explosion query cannot
be expressed in Datalog with strati ed aggregates [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. This query counts the
number of copies of component Sub needed to construct one copy of a given
Part:
Example 2. Summarized Part Explosion.
      </p>
      <p>cassb(Part; Sub) : Qty</p>
      <p>subpart(Part; Sub; Qty):
need(Sub; Sub) : 1
need(Part; Sub) : K
total(Part; Sub; K)</p>
      <p>subpart( ; Sub; ):
K : [cassb(Part; P1); need(P1; Sub)]:</p>
      <p>K =![need(Part; Sub)]:</p>
      <p>
        We next consider the Company Control application proposed in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
Example 3. Companies can purchase shares of other companies; in addition to its
directly owned shares, a company A controls the shares controlled by a company
B when A has a controlling majority (50%) of B's shares (in other words, when
A bought B). The shares of each company are subdivided in 100 equal-size lots.
cshares(C2; C3; dirct) : P owned shares(C2; C3; P):
cshares(C1; C3; indirct) : P P : [bought(C1; C2); cshares(C2; C3; )]:
bought(C1; C2) C1 6= C2; 50 : [cshares(C1; C2; )]:
Here dirct and indirct are tags identifying the two di erent kinds of shares.
Simple assemblies, such as bicycles, can be put together the very same day in
which the last basic part arrives. Thus, the time needed to deliver a bicycle is the
maximum of the number of days that the various basic parts require to arrive.
Example 4. How many days until delivery?
delivery(Pno) : Days
delivery(Part) : Days
actualDays(Part; CDays)
basic(Pno; Days):
assbl(Part; Sub; ); Days : [delivery(Sub)]:
      </p>
      <p>CDays =![delivery(Part)]:
For each assembled part, we nd each basic subpart along with the number of
days this takes to arrive. By using the multi-occurring predicate delivery inside
the FS-goal `Days : [delivery(Sub)]' we nd, for a given Part, the maximum
among the delivery times of its subparts.</p>
    </sec>
    <sec id="sec-2">
      <title>4 E cient Implementation</title>
      <p>
        DatalogF S programs are amenable to e cient implementation using (i)
generalizations of well-known techniques such as the seminaive (or di erential) xpoint
and the magic set method, and (ii) a specialized new technique called max
optimization that was introduced speci cally for DatalogF S [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] and is described
next. The max optimization of the rule in Example 1 begins by recasting it into
this equivalent rule:
attend(Y)
student(Y); K : [friend(Y; X); attend(X)]; K
3:
Here, the value of K ranges from 1 to a max(K), thus achieving monotonicity
and least- xpoint semantics. However, we also observe that the rule is actually
satis ed i max(K) 3. In other words, we do not need to compute a continuous
count, we can instead perform a nal count computation at each iteration in the
seminaive xpoint computation. The same conclusion holds for all the examples
in this paper, and in fact for all the rules that use only monotonic functions on
positive numbers. In these programs, nal FS-goals can be computed by ignoring
every K value but max(K). Therefore, traditional count and sum can be used to
implement these rules, instead of continuous aggregates. Indeed, the max-based
optimization can be performed whenever the function that maps FS-values from
the body to the head is monotonic on positive numbers. This is true for all
examples in this paper where the mapping is the identity function, but monotic
arithmetic functions such as addition, multiplication and many other functions
easily recognized as monotonic by the compiler can be used [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
      <p>
        As discussed in [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], the standard di erential xpoint and magic-set
transformations can be applied to FS-rules, but only after they have been put in
canonical form. Rules with FS-goals can be reduced into canonical form by
simply moving the predicates in the b-expression out of the brackets while avoiding
redundancy. For instance for Example 1 we obtain the following equivalent rule:
attend(Y) student(Y); friend(Y; X); attend(X);
      </p>
      <p>K : [friend(Y; XX); attend(XX)]; K 3:</p>
      <p>Then, seminaive xpoint will be computed by performing a symbolic di
erentiation on the recursive predicates outside the brackets whereas b-expressions
are left unchanged, as if they were constants:
attend(Y)
student(Y); friend(Y; X); attend(X);</p>
      <p>K : [friend(Y; XX); attend(XX)]; K 3:
The canonical representation is used when performing the binding passing
analysis and in the magic-set method that propagate constraints in a top-down
fashion. For instance, say that in Example 1 we want to know whether a given Joe
will attend, using the goal: ?attend($Joe). Then, after performing the binding
passing analysis, we apply the magic-set transformation and obtain the following
magic set rules, where the b-expression condition has also been relaxed:
m:attend($Joe):
m:attend(X)
m:attend(Y); student(Y); friend(Y; X);</p>
      <p>
        K : [friend(Y; )]; K 3:
Therefore, the magic set consists of Joe's friends and the friends of his friends
(friend*); but if Joe has fewer than three friends, we can exclude him from the
magic set|and the same holds for any friend*. Once the magic set predicate is
computed as shown above, m:attend(Y) is added as a goal to the original exit
rules and recursive rules restricting the nal seminaive xpoint computation [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>Arbitrary Positve Numbers</title>
      <p>
        The least xpoint and its equivalent least model de ne the semantics of DatalogF S
when the FS-values are positive integers, and this also provides a declarative
semantics for programs that use arbitrary positive numbers for FS-values. In
fact, the rational numbers in a program can be represented by their
numerators once we assume they all share the same (large) denominator, D. Then
operations on these numbers can be viewed as involving only their numerators:
e.g., A=D + B=D = A + B=D, and A=D B=D = ((A B) D)=D. Now,
while addition introduces no error, the multiplication introduces a roundo
error due to integer division D. However, roundo is an arithmetic function
that is monotonically increasing (it can be viewed as staircase), and thus our
DatalogF S programs still have a least xpoint-based semantics. Now, since large
values for D would produce good approximations, rather than unbounded length
integers, we can instead use oating point numbers to provide accurate solutions
e ciently supported in systems [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. Because of limited precision mantissa,
oating point numbers also incur in roundo errors; but again, these are monotonic
functions, and any imprecision in the resulting xpoint can be resolved with
double-precision arithmetic and various methods of numerical analysis. Finally,
observe that monotonic approximation preserves the max-based optimization in
the computation|a sine qua non since the numerators are now large integers.
      </p>
      <p>
        Many important applications that use probabilities and fractional weights can
now be expressed concisely and supported e ciently. Examples include
shortestpath in graphs, page rank, social networks [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], and the following example.
Example 5. Say that arc(a; b):0:66 denotes that starting from a we reach b in
66% of cases. Then, the following program computes the probability of
completing a trip from a to Y along the maximum-probability path:
reach(a) : 1:00:
reach(Y) : V
maxprob(Y; V)
reach(X); V : [reach(X); arc(X; Y)]:
      </p>
      <p>V =![reach(Y)]:
The source a is reachable with probability 1. Then, the probability of reaching
Y via an arc from X is the product of the probability of being in X times the
probability that the segment from X to Y can be completed. This product is
computed by the goal V : [reach(X); arc(X; Y)] in the rst rule. Finally, in the
head of the last rule, we only retain the maximum V|i.e., we only retain the
path with largest probability to succeed.
tu
6</p>
    </sec>
    <sec id="sec-4">
      <title>Conclusion</title>
      <p>
        FS-rules provide a simple but powerful extension of Horn Clauses which dovetails
with both the declarative semantics of Datalog and its bottom-up
implementation technology. In fact, the inclusion of running FS-goals, which operate in ways
that are similar to continuous counts, produces a generalized TP operator that
is monotonic and continuous in the lattice of interpretations: thus its repeated
application, starting with an empty interpretation, converges (on or before the
rst ordinal) to TP 's least xpoint, which coincides with the unique minimal
model for P . Moreover, the bottom-up optimization techniques of Datalog, such
as magic-sets and di erential xpoints, can be easily generalized to programs
with FS-rules; simple generalizations also hold for strati ed negation and more
advanced non-monotonic semantics [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. Applications that cannot be expressed
e ciently, or cannot be expressed at all, in Datalog can be expressed e ciently
in the powerful DatalogF S system being developed at UCLA. Inasmuch as
Datalog's recursive query techniques greatly in uenced their SQL implementations
[
        <xref ref-type="bibr" rid="ref19 ref20">19, 20</xref>
        ], these extensions can also lead to their support in commercial DBMS.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Pablo</given-names>
            <surname>Barcelo</surname>
          </string-name>
          and Reinhard Pichler, editors.
          <source>Datalog in Academia and Industry{ 2nd International Workshop, Datalog 2.0</source>
          , volume
          <volume>7494</volume>
          <source>of LNCS</source>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>Boon</given-names>
            <surname>Thau</surname>
          </string-name>
          Loo et al.
          <article-title>Declarative networking</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>52</volume>
          (
          <issue>11</issue>
          ),
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Joseph</surname>
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Hellerstein</surname>
          </string-name>
          .
          <article-title>Datalog redux: experience and conjecture</article-title>
          .
          <source>In PODS, pages 1{2</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Serge</given-names>
            <surname>Abiteboul</surname>
          </string-name>
          , Meghyn Bienvenu, Alban Galland, and
          <string-name>
            <given-names>Emilien</given-names>
            <surname>Antoine</surname>
          </string-name>
          .
          <article-title>A rulebased language for web data management</article-title>
          .
          <source>In PODS</source>
          , pages
          <volume>293</volume>
          {
          <fpage>304</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Todd</surname>
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Green</surname>
            ,
            <given-names>Molham</given-names>
          </string-name>
          <string-name>
            <surname>Aref</surname>
            , and
            <given-names>Grigoris</given-names>
          </string-name>
          <string-name>
            <surname>Karvounarakis</surname>
          </string-name>
          .
          <article-title>Logicblox, platform and language: A tutorial</article-title>
          .
          <source>In Barcelo and Pichler [1]</source>
          , pages
          <fpage>1</fpage>
          <lpage>{</lpage>
          8.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Georg</given-names>
            <surname>Gottlob</surname>
          </string-name>
          , Giorgio Orsi, and
          <string-name>
            <given-names>Andreas</given-names>
            <surname>Pieris</surname>
          </string-name>
          .
          <article-title>Ontological queries: Rewriting and optimization</article-title>
          .
          <source>In ICDE</source>
          , pages
          <volume>2</volume>
          {
          <fpage>13</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Foto</surname>
            <given-names>N.</given-names>
          </string-name>
          <string-name>
            <surname>Afrati</surname>
          </string-name>
          et al.
          <article-title>Map-reduce extensions and recursive queries</article-title>
          .
          <source>In EDBT, pages 1{8</source>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Yingyi</given-names>
            <surname>Bu</surname>
          </string-name>
          ,
          <string-name>
            <surname>Vinayak R. Borkar</surname>
            ,
            <given-names>Michael J.</given-names>
          </string-name>
          <string-name>
            <surname>Carey</surname>
            , Joshua Rosen, Neoklis Polyzotis, Tyson Condie, Markus Weimer, and
            <given-names>Raghu</given-names>
          </string-name>
          <string-name>
            <surname>Ramakrishnan</surname>
          </string-name>
          .
          <article-title>Scaling datalog for machine learning on big data</article-title>
          .
          <source>CoRR, abs/1203.0160</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Carlo</given-names>
            <surname>Zaniolo</surname>
          </string-name>
          .
          <article-title>The logic of query languages for data streams</article-title>
          .
          <source>In Logic and Databases</source>
          <year>2011</year>
          .
          <article-title>EDBT 2011 Workshops</article-title>
          , pages
          <fpage>1</fpage>
          <issue>{2</issue>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Serge</given-names>
            <surname>Abiteboul</surname>
          </string-name>
          . Datalog: La renaissance.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Inderpal Singh</surname>
            <given-names>Mumick</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Hamid</given-names>
            <surname>Pirahesh</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Raghu</given-names>
            <surname>Ramakrishnan</surname>
          </string-name>
          .
          <article-title>The magic of duplicates and aggregates</article-title>
          .
          <source>In VLDB</source>
          , pages
          <volume>264</volume>
          {
          <fpage>277</fpage>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Phokion</surname>
            <given-names>G. Kolaitis.</given-names>
          </string-name>
          <article-title>The expressive power of strati ed logic programs</article-title>
          .
          <source>Inf. Comput.</source>
          ,
          <volume>90</volume>
          :
          <fpage>50</fpage>
          {
          <fpage>66</fpage>
          ,
          <year>January 1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>Sergio</given-names>
            <surname>Greco</surname>
          </string-name>
          and
          <string-name>
            <given-names>Carlo</given-names>
            <surname>Zaniolo</surname>
          </string-name>
          .
          <article-title>Greedy algorithms in datalog</article-title>
          .
          <source>TPLP</source>
          ,
          <volume>1</volume>
          (
          <issue>4</issue>
          ):
          <volume>381</volume>
          {
          <fpage>407</fpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. Inderpal Singh Mumick and
          <string-name>
            <given-names>Oded</given-names>
            <surname>Shmueli</surname>
          </string-name>
          . How expressive is strati ed aggregation?
          <source>Annals of Mathematics and Arti cial Intelligence</source>
          ,
          <volume>15</volume>
          :
          <fpage>407</fpage>
          {
          <fpage>435</fpage>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Kenneth</surname>
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Ross</surname>
            and
            <given-names>Yehoshua</given-names>
          </string-name>
          <string-name>
            <surname>Sagiv</surname>
          </string-name>
          .
          <article-title>Monotonic aggregation in deductive database</article-title>
          .
          <source>J. Comput. Syst. Sci.</source>
          ,
          <volume>54</volume>
          (
          <issue>1</issue>
          ):
          <volume>79</volume>
          {
          <fpage>97</fpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>C. Zaniolo</surname>
          </string-name>
          et al.
          <source>Advanced Database Systems</source>
          . Morgan Kaufmann,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Mirjana</surname>
            <given-names>Mazuran</given-names>
          </string-name>
          , Edoardo Serra, and
          <string-name>
            <given-names>Carlo</given-names>
            <surname>Zaniolo</surname>
          </string-name>
          .
          <article-title>Extending the power of datalog recursion</article-title>
          .
          <source>The VLDB Journal On-Line First, Nov</source>
          .
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Mirjana</surname>
            <given-names>Mazuran</given-names>
          </string-name>
          , Edoardo Serra, and
          <string-name>
            <given-names>Carlo</given-names>
            <surname>Zaniolo</surname>
          </string-name>
          .
          <article-title>A declarative extension of horn clauses, and its signi cance for datalog and its applications</article-title>
          .
          <source>February</source>
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Inderpal</surname>
          </string-name>
          <article-title>Singh Mumick and Hamid Pirahesh. Implementation of magic-sets in a relational database system</article-title>
          .
          <source>In SIGMOD Conference</source>
          , pages
          <volume>103</volume>
          {
          <fpage>114</fpage>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>Carlos</given-names>
            <surname>Ordonez</surname>
          </string-name>
          .
          <article-title>Optimization of linear recursive queries in sql</article-title>
          .
          <source>IEEE Trans. Knowl</source>
          . Data Eng.,
          <volume>22</volume>
          (
          <issue>2</issue>
          ):
          <volume>264</volume>
          {
          <fpage>277</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>