<!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>First Steps towards Reasoning on Big Data with DLV</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Nicola Leone</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Simona Perri</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Francesco Ricca</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pierfrancesco Veltri</string-name>
          <email>veltri@dlvsystem.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jessica Zangari</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>DLVSystem s.r.l. P.zza Vermicelli</institution>
          ,
          <addr-line>Polo Tecnologico, Rende</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Mathematics and Computer Science, University of Calabria</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <fpage>24</fpage>
      <lpage>27</lpage>
      <abstract>
        <p>Answer Set Programming (ASP), that extends Datalog with powerful knowledge modeling constructs, is suitable for modeling both database-oriented applications and more complex combinatorial optimization tasks arising in decision-making. However, ASP systems were not conceived having the challenges of Big Data in mind; thus they are not applicable tout court in this new setting. This paper moves the rst steps towards enabling the speci cation of reasoning tasks on Big Data with ASP. In particular we present our ongoing work in the direction of extending the well-known DLV system to interact in a plausible way with Big Data repositories.</p>
      </abstract>
      <kwd-group>
        <kwd>ASP</kwd>
        <kwd>Datalog</kwd>
        <kwd>Big Data</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Modern information systems are facing an unprecedented phenomenon: the
massive production and storage of enormous amounts of data (Big Data). The need
for processing Big Data repositories has recently implied a technological switch
including the development of new hardware and software architectures [
        <xref ref-type="bibr" rid="ref10 ref8">10, 8</xref>
        ] to
handle the exponentially growing quantity of data coming from network
connected devices, large enterprise information systems, etc. Nonetheless, one of
the most relevant challenges in this setting is to get real value from Big Data by
modeling, understanding, and reasoning on the information present in large data
stores [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], thus enabling the development of powerful decision-making systems
and high-revenue applications.
      </p>
      <p>
        The area of computing dedicated to representing and solving complex tasks
using information is called knowledge representation and reasoning (KRR) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
A main goal of KRR is to introduce formalisms that simplify the task of
designing and building complex applications. Among the mainstream approaches to
KRR, logic-based formalisms are well-known for their expressiveness and
powerful knowledge-modeling capabilities. In particular, Answer Set Programming
(ASP) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], that extends Datalog with powerful knowledge modeling constructs,
is suitable for modeling both database-oriented applications and more complex
combinatorial optimization tasks arising in decision-making [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. However, ASP
systems were not conceived having the challenges of Big Data in mind; thus they
are not applicable tout court in this new setting.
      </p>
      <p>
        Recently less expressive logic languages, like Datalog [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], or logic-programs
with a di erent semantics [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], were implemented on top of Big Data platforms.
However, no ASP system for Big Data is available at the moment (cfr. a recent
survey [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]) and connecting ASP with mainstream technologies for Big Data is
still an open problem.
      </p>
      <p>
        This paper moves the rst steps towards enabling the speci cation of
reasoning tasks on Big Data with ASP. In particular we present our ongoing work in
the direction of extending the well-known DLV system [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] (actually, its most
recent version [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]) to interact in a plausible way with Big Data repositories. In our
proposal DLV is connected to SQL-based data warehousing tools such as Hive
via a translation component, that allows to demand the computation of
spacedemanding tasks/queries to well-assessed Big Data software, and leave to the
standard ASP engine the burden of evaluating more computationally complex
decision-making tasks over a selection of the original data.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>Answer Set Programming</title>
      <p>
        In this Section, we brie y recall syntax of the ASP language. For ASP semantics
we refer the reader to [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        A term is either a simple term or a functional term. A simple term is either
a constant or a variable. If t1 : : : tn are terms and f is a function symbol of
arity n, then f (t1; : : : ; tn) is a functional term. If t1; : : : ; tk are terms and p is
a predicate symbol of arity k, then p(t1; : : : ; tk) is an atom. A literal l is of the
form a or not a, where a is an atom; in the former case l is positive, otherwise
negative. A rule r is of the form 1j j k :{ 1; : : : ; n; not n+1; : : : ; not m:
where m 0, k 0; 1; : : : ; k and 1; : : : ; m are atoms. We de ne H(r) =
f 1; : : : ; kg (the head of r) and B(r) = B+(r) [ B (r) (the body of r), where
B+(r) = f 1; : : : ; ng (the positive body) and B (r) = fnot n+1; : : : ; not mg
(the negative body). If H(r) = ; then r is a (strong) constraint; if B(r) = ; and
jH(r)j = 1 then r is a fact. A rule r is safe if each variable of r has an occurrence
in B+(r). An ASP program is a nite set P of safe rules. A program (a rule,
a literal) is said to be ground if it contains no variables. A predicate is de ned
We remark that this de nition of safety is speci c for rules featuring only classical
literals. For a complete de nition we refer the reader to [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
by a rule if the predicate occurs in the head of the rule. A predicate de ned
only by facts is an EDB predicate, the remaining predicates are IDB predicates.
The set of all facts in P is denoted by Facts(P ); the set of instances of all EDB
predicates in P is denoted by EDB (P ).
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>The DLV2 System</title>
      <p>
        dlv2 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is the new version of the Answer Set Programming (ASP) system DLV.
The system has been completely re-engineered: it now combines I-DLV [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], a
fully-compliant ASP-Core-2 grounder, with the well-assessed solver wasp [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Besides performance improvements w.r.t. to its predecessor, dlv2 is enriched
with novel features such as support to annotations and directives that customize
heuristics of the system and extend its solving capabilities. Moreover, the system
o ers some means to ease the interoperability with external sources of knowledge.
In particular, by means of some I-DLV features, it supports connections with
relational and graph databases via explicit directives for importing/exporting
data and calls to Python functions via external atoms. An accurate description
of the system and the underlying techniques is out of the scope of this paper; we
refer the interested reader to [
        <xref ref-type="bibr" rid="ref1 ref4">4, 1</xref>
        ]. Rather, in the following, we describe in more
detail external atoms, since our proposal for integrating Big Data computation
and ASP explicitly relies on them.
      </p>
      <p>External Computation in DLV2 As anticipated above, the new dlv2 system,
via its grounder I-DLV, supports a special form for atoms, namely external
atoms, geared towards external computations, whose extension is speci ed by
means of external de ned Python functions.</p>
      <p>Formally, an external atom is of the form &amp;p(t0; : : : ; tn; u0; : : : ; um), where
n + m 0, &amp;p is an external predicate, t0; : : : ; tn are intended as input terms,
and are separated from the output terms u0; : : : ; um by a semicolon (\;"). In
the following, we denote an external atom by &amp;p(In; Out), where In and Out
represent input and output terms, respectively.</p>
      <p>
        An external literal is either not e or e, where e is an external atom, and the
symbol not represents default negation. An external literal is safe if all input
terms are safe, according to the safety de nition in ASP-Core-2 standard [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
External literals can appear only in the rule bodies, and each instance of an
external predicate must appear with the same number of input and output terms
throughout the whole program.
      </p>
      <p>Given an external atom &amp;p(In; Out) and a substitution , a ground instance
of such external atom is obtained by applying to variables appearing in In and
Out, obtaining (&amp;p(In; Out)) = &amp;p(Ing; Outg). The truth value of a ground
external atom is given by the value f&amp;p(Ing; Outg) of a decidable n + m-ary
two-valued oracle function, where n and m are the lengths of Ing and Outg,
respectively. A negative ground external literal not e is true/false if e is false/true.</p>
      <p>Intuitively, output terms are computed on the basis of the input ones,
according to a semantics which is provided externally (i.e., from the outside of the logic
program) by means of the de nition of oracle functions written in Python.
Basically, for each external predicate &amp;p featuring n/m input/output terms, the user
must de ne a Python function whose name is p, and having n/m input/output
parameters. The function has to be compliant with Python version 3.
Example 1. As a simple example, let us consider the following rule, that makes
use of an external predicate with two input and one output terms:
append(X,Y,Z) :{ string(X), string(Y), &amp;append strings(X,Y;Z).</p>
      <p>A program containing this rule must come along with the proper de nition of
append strings within a Python function, as, for instance, the following:
def append strings(X,Y): return str(X)+str(Y)
According to the given de nition, as they are completely evaluated by I-DLV as
true or false, external predicates do not appear in the produced instantiation.</p>
      <p>External atoms can be both functional and relational, i.e., they can return
a single tuple or a set of tuples, as output. In Example 1, &amp;append strings
is functional : the associated Python function returns a single value for each
combination of the input values. In general, a functional external atom with
m &gt; 0 output terms must return a Python sequence containing m values. If
m = 1, the output can be either as sequence containing a single value, or just
a value, as in the example; if m = 0, the associated Python function must be
boolean. A relational external atom with m &gt; 0 is de ned by a Python function
that returns a sequence of m-sequences, where each inner sequence is composed
by m values.</p>
      <p>Example 2. The following rule uses a relational external atom:</p>
      <p>prime factor(X,Z) :{ number(X), &amp;compute prime factors(X;Z).</p>
      <p>Intuitively, given a number X, the rule computes prime factors of X, demanding
this task to a relational external atom, that receives as input the number X, and
returns as output its factors. The semantics has to be provided via a Python
function called compute prime f actors returning a sequence of numbers each
one representing a di erent factor of X.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Big DLV: ASP + Big Data</title>
      <p>In this section we describe the main idea underlying our approach for integrating
ASP computation, and in particular the dlv2 system, with Big Data sources.
We rst introduce a motivating example that will be used through the rest of
the paper for illustrating the idea underlying our approach. Then, we provide
some details about the usage of external atoms for our purposes.
4.1</p>
      <sec id="sec-4-1">
        <title>KRR with Big Data</title>
        <p>The following example showing a possible use case can be useful to grasp the
intuition behind our approach.</p>
        <p>https://docs.python.org/3</p>
        <p>Let us consider the following scenario: Giovanni wants to go out for dinner
and wants to invite a given number of people, possibly inviting friends of friends,
in order to spend some funny and pleasant time. Invited people should be selected
from a social network, choosing among the Giovanni's friendship net. In such
social network subscribed people can add friends and mark some of these as
close friends; moreover, the social network performs some stats on the degree
of dislike among two people in the network. The following ASP program can
be used to explore the friendship relations of such social network and then to
provide Giovanni with suitable suggestions on people that could be invited.</p>
        <p>nf riends(10): averageAge(25):
r1 possible f riend(Y ) :{ close f riend(giovanni; Y ):
r2 possible f riend(X) :{ possible f riend(Y ); close f riend(Y; X):
r3 suggested f riend(Y; A) :{ possible f riend(Y ); person(Y; A); A &gt; 18:
r4 invite(X) j -invite(X) :{ suggested f riend(X):
r5 :{ #countfX : invite(X)g! = N; nf riends(N ):
r6 :{ #sumfA; X : suggested f riend(X; A; ); invite(X)g &lt; AV G N;
nf riends(N ); averageAge(AV G):
r7 : invite(X); suggested f riend(X; ); dislike(giovanni; X; D): [D@1; X]
The former two rules compute the transitive closure of the friendship relation
of Giovanni, restricting the computation to close friends only; rule r3 suggests
a person Y if he is a possible friend and is older than 18; rule r4 guesses if a
suggested friend should be invited or not; rule r5 ensures that the number of
invited friends is exactly the desired one; r6 imposes that the average age of
the invited friends is not smaller than a given value; eventually, rule r7 prefers
solutions in which the total degree of dislike among Giovanni and invited people
is minimized.</p>
        <p>Intuitively, computing the transitive closure of the friendship relation in a
social network could be very expensive when performed on a huge database.
Thus, traditional main memory ASP systems cannot handle it; indeed, also the
simple import of the friend relation is not feasible in practice. So, the idea is
to delegate this heavy part of the computation to an external Big Data source.
The remaining part that takes as input a heavily reduced part of the friendship,
instead, can be conveniently expressed in a purely declarative way by means of
ASP rules as reported above. We remark that from a computational perspective,
this latter part encodes a NP-hard task that cannot be expressed by means of
canonical RDB query languages such as SQL, Datalog, etc.
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>Interfacing DLV2 with Hive via External Atoms</title>
        <p>In order to delegate the computation of data-intensive rules to Big Data tailored
software, one can make use in the ASP program of a new external atom. Roughly,
the external atom connects to a DB, may export some input facts to the DB,
converts some given rules to queries, executes them on the DB and returns as
output the extension of a speci c predicate. In order to enable the external
evaluation on a DB db, the ASP program should contain a rule r having in the
body an external atom called &amp;bigasp, that receives as input:</p>
        <p>db the name of the ODBC DSN (Data Source Name);
user the name of the user who connects to the DB;
password the password of that user;
rules a string containing some Datalog rules that de ne the operations
that will be performed on the DB;
output a string representing the name of the relation to be imported in
the ASP program;
input [optional] a string containing a set of ASP facts that have to be
exported to the DB.</p>
        <p>During the evaluation, dlv2 invokes the external atom, imports the results of the
evaluation and lls in the extension of the predicate output that has to appear
as head in the rule r. Note that, this approach could be adopted to retrieve data
from diverse Big Data sources.</p>
        <p>Let us consider again our running example. We can delegate the computation
of the transitive closure of the friendship relation to an external Big Data
platform by replacing the rst three rules in the program above with the following
one:
suggested f riend(Y; A) :{ &amp;bigasp(\my db"; \my user"; \my pass"; \
possible f riend(Y ) :{ close f riend(giovanni; Y ):
possible f riend(X) :{ possible f riend(Y ); close f riend(Y; X):
suggested f riend(Y; A) :{ possible f riend(Y ); person(Y; A); A &gt; 18:";
\suggested f riend"; Y; A):</p>
        <p>Apart from connection parameters and the name of the output relation, the
external atom takes as input the extracted rules; it invokes the machinery for
enabling their evaluation on the external my db and returns the results as a
sequence of tuples representing the suggested friends with their age. Such tuples
populate the extension of the suggested f riend relation so that the traditional
ASP evaluation can continue.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>System Architecture</title>
      <p>We now describe an architecture where we indicate the software components that
can be used to realize our idea. The general architecture of a framework for Big
Data Analytics with ASP is composed by 3 macro-components as illustrated
in Figure 1. In particular, the data layer of the system could rely on Hive,
a data warehouse software project built on top of Hadoop for providing data
summarization, query and analysis.</p>
      <p>
        The choice of this tool is due to the fact that Hive is the mainstream for
OLAP analysis over Big Data. Hive brings three main advantages: (i) it exploits
http://hive.apache.org/
the computational power of Hadoop clusters, (ii) it implements a standard
relational model, that is equivalent to the data model supported by ASP, and
(iii) it supports a querying language called H-QL, which is very close to the
standard SQL. On top of Hive we nd BigDLV, the core of our framework for
Big Data Analytics. BigDLV should allow for reasoning in ASP over data stored
and pre-processed within Hive. In particular, BigDLV should be able to extract
extensions of input predicates from the underlying Big Data repository and,
moreover, delegate parts of the computation to Hive. Figure 1 shows the
internal architecture of BigDLV and focuses possible interactions with the underlying
layers. This component encapsulates the dlv2 system which allows to de ne
external atoms as discussed in Section 3: when an input program embeds a Datalog
rule to be evaluated against the Hive repository, DLV2, by means of an external
atom, invokes a Python component, called DataSQL, managing the interaction
between DLV2 and Hive. DataSQL is in turn composed by two sub-modules,
the Compiler and the Executor. The former compiles the rules received from
DLV2 into an SQL query, while the latter runs the compiled query over Hive
and retrieves the result. Results from Hive are rst ltered out by the Executor
and then returned back to DLV2. An end-user could ask the framework to store
the nal output of the whole evaluation process into the cluster. Note that,
the Compiler module interacts directly with Hive in order to get information
about table schemata matching the rule predicates. The implementation of the
Compiler can follow the lines of [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and thus supporting only strati ed Datalog
programs. Communication between DataSQL and Hive can be performed via
PyHive , providing a collection of python DB-API interfaces for Hive.
https://github.com/dropbox/PyHive
https://www.python.org/dev/peps/pep-0249
      </p>
    </sec>
    <sec id="sec-6">
      <title>Ongoing and Future Work</title>
      <p>
        In this paper we described our idea for interfacing dlv2 with Big Data. Currently,
we are implementing all the components mentioned in Section 4 and 5. Moreover
we are developing a case of study that combines a Datalog sub-program modeling
a heavy data-mining task (demanded to a Big Data platforms), with another
component that models a computationally hard decision-making task (demanded
to the ASP system). The case of study is part of the research project S2BDW we
are currently involved in and that focuses on a prognostic problem for foreseeing
possible breaks on trains by analyzing data coming from sensors. Currently, we
are focusing on applications in which the computation demanded to the external
sources involves Big Data but returns an output which can be pro tably handled
in main memory. As a future work, we plan to better analyze the theoretical
boundaries and limitations of our approach, in order to determine which kind of
reasoning can be outsourced (e.g., going along the lines of [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]).
      </p>
      <p>Acknowledgments. Work partially supported by MISE under project \Smarter
Solutions in the Big Data World (S2BDW)" (n. F/050389/01-02-03/X32).</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>Calimeri</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dodaro</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fusca</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Veltri</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zangari</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>The ASP system DLV2</article-title>
          .
          <source>In: LPNMR. Lecture Notes in Computer Science</source>
          , vol.
          <volume>10377</volume>
          , pp.
          <volume>215</volume>
          {
          <fpage>221</fpage>
          . Springer (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <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>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Advances in WASP</article-title>
          .
          <source>In: LPNMR. Lecture Notes in Computer Science</source>
          , vol.
          <volume>9345</volume>
          , pp.
          <volume>40</volume>
          {
          <fpage>54</fpage>
          . Springer (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <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="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Calimeri</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fusca</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zangari</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>I-DLV: the new intelligent grounder of DLV. Intelligenza Arti ciale 11(1</article-title>
          ),
          <volume>5</volume>
          {
          <fpage>20</fpage>
          (
          <year>2017</year>
          ). https://doi.org/10.3233/IA170104, http://dx.doi.org/10.3233/IA-170104
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Calimeri</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ianni</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krennwallner</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>The answer set programming competition</article-title>
          .
          <source>AI</source>
          Magazine
          <volume>33</volume>
          (
          <issue>4</issue>
          ),
          <volume>114</volume>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Fan</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Geerts</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Libkin</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>On scale independence for querying big data</article-title>
          .
          <source>In: PODS</source>
          . pp.
          <volume>51</volume>
          {
          <fpage>62</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Gelfond</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lifschitz</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>The stable model semantics for logic programming</article-title>
          .
          <source>In: ICLP/SLP</source>
          . vol.
          <volume>88</volume>
          , pp.
          <volume>1070</volume>
          {
          <issue>1080</issue>
          (
          <year>1988</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Ghemawat</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gobio</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leung</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>The google le system</article-title>
          .
          <source>In: SOSP</source>
          . pp.
          <volume>29</volume>
          {
          <fpage>43</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>van Harmelen</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lifschitz</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Porter</surname>
            ,
            <given-names>B.W</given-names>
          </string-name>
          . (eds.):
          <source>Handbook of Knowledge Representation, Foundations of Arti cial Intelligence</source>
          , vol.
          <volume>3</volume>
          .
          <string-name>
            <surname>Elsevier</surname>
          </string-name>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Harrison</surname>
          </string-name>
          , G.:
          <article-title>Next Generation Databases NoSQLand Big Data</article-title>
          .
          <source>Apress</source>
          <year>2015</year>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pfeifer</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Faber</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eiter</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gottlob</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Perri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scarcello</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>The DLV System for Knowledge Representation and Reasoning</article-title>
          .
          <source>ACM TOCL 7</source>
          (
          <issue>3</issue>
          ),
          <volume>499</volume>
          {
          <fpage>562</fpage>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Lierler</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maratea</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ricca</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Systems, engineering environments, and competitions</article-title>
          .
          <source>AI</source>
          Magazine
          <volume>37</volume>
          (
          <issue>3</issue>
          ),
          <volume>45</volume>
          {
          <fpage>52</fpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Sivarajah</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kamal</surname>
            ,
            <given-names>M.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Irani</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weerakkody</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Critical analysis of big data challenges and analytical methods</article-title>
          .
          <source>Journal of Business Research</source>
          <volume>70</volume>
          ,
          <volume>263</volume>
          {
          <fpage>286</fpage>
          (
          <year>2017</year>
          ). https://doi.org/https://doi.org/10.1016/j.jbusres.
          <year>2016</year>
          .
          <volume>08</volume>
          .001
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Tachmazidis</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antoniou</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Faber</surname>
          </string-name>
          , W.:
          <article-title>E cient computation of the well-founded semantics over big data</article-title>
          .
          <source>TPLP</source>
          <volume>14</volume>
          (
          <issue>4-5</issue>
          ),
          <volume>445</volume>
          {
          <fpage>459</fpage>
          (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Terracina</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leone</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lio</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Panetta</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Experimenting with recursive queries in database and logic programming systems</article-title>
          .
          <source>Theory and Practice of Logic Programming</source>
          <volume>8</volume>
          (
          <issue>2</issue>
          ),
          <volume>129</volume>
          {
          <fpage>165</fpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Yang</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shkapsky</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zaniolo</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Scaling up the performance of more powerful datalog systems on multicore machines</article-title>
          .
          <source>VLDB J</source>
          .
          <volume>26</volume>
          (
          <issue>2</issue>
          ),
          <volume>229</volume>
          {
          <fpage>248</fpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>