<!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>
      <journal-title-group>
        <journal-title>SEBD</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Enhancing Ontological Query-Rewriting via Parallelization</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Discussion Paper</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Heba M. Wagih</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marco Calautti</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, University of Milan</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Department of Information Engineering and Computer Science, University of Trento</institution>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <volume>31</volume>
      <fpage>02</fpage>
      <lpage>05</lpage>
      <abstract>
        <p>Ontological databases have become the distinguished knowledge bases for today's systems, which consist of an extensional database and an ontology. Several ontological languages have been proposed to model domain knowledge such as Datalog[∃] which extends Datalog with existential quantification. This addition has enriched the language capabilities in capturing complex domain knowledge, however, it makes reasoning tasks, such as query answering, undecidable. Identifying decidable fragments of Datalog[∃] is an important approach to deal with the above issues, where prominent examples are fragments supporting so-called query rewritability. Several rewriting algorithms have been introduced; however, these algorithms are executed in a sequential fashion. In this paper we discuss a methodology that allows existing rewriting algorithms to exploit multi-core architectures, and show how to employ this methodology to implement a parallel version of an existing query rewriting algorithm.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Datalog</kwd>
        <kwd>Ontological query answering</kwd>
        <kwd>Query rewriting</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Knowledge representation and reasoning have gained a lot of interest in the last decade. The
so-called ontological database, a.k.a. knowledge base, has evolved to be a prominent approach
for managing today’s system data. A knowledge base merges an extensional database (e.g., a
relational database) with an ontology, i.e., a logical theory encoding domain knowledge. The
addition of an ontology on top of a standard database then allows to derive additional (called
intensional) knowledge that was never explicit in the database alone.</p>
      <p>
        This is a step forward in enhancing reasoning activities. An ontology is an explicit
specification of a conceptualization of an area of interest [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        Several formal languages have been proposed to model ontologies, among which there are
the ones based on Description Logics (DLs) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], which represents the logical formalism
underpinning the OWL standard. Another ontology language that can express complex knowledge
is Datalog, a rule-based language, that has been introduced to overcome some limitations of
existing database query languages, by the introduction of recursion [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
Diferent Datalog extensions have been proposed [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] to express, among others, equality
predicates, disjointness constraints, and existential quantification which have an important role in
knowledge representation. Datalog[∃] is a prominent example for an extension of standard
Datalog via the addition of existential quantification in the rules defining the ontology. Although this
addition has enriched the language capabilities in capturing more complex domain knowledge,
however, it makes reasoning tasks, such as query answering, undecidable. The undecidability of
the query answering problem over knowledge bases using Datalog[∃] ontologies is one of the
main challenges that both the database and knowledge representation communities are facing
nowadays. Identifying decidable fragments of Datalog[∃] is one of the main ways to deal with
the above issues.
      </p>
      <p>Prominent examples are fragments supporting so-called query rewritability, i.e., Datalog[∃]
ontologies for which a given query and the ontology can be compiled to a new query, in
particular, to a union of conjunctive queries (UCQ), that can be evaluated directly on the extensional
database alone. The result of the evaluation will be the same as if the original query is executed
against the extensional database and the ontology rules.</p>
      <p>Example 1. Consider the following Datalog[∃] ontology rule  which asserts that for each project
X in some department Y, there exists a supervisor Z who is assigned to the department Y of the project,
and consider the (conjunctive) query (CQ)  which asks for all projects who have a supervisor
assigned in the ’db’ department:
 : ∀∀ project(), inDept(,  ) → ∃supervisor(, , )</p>
      <p>() :- ∃ supervisor(, , ).</p>
      <p>The equivalent rewritten query of the above ontology Σ and query , is the following UCQ:
Σ
= {() :- ∃  supervisor(, , ),
() :- (), (, )}.</p>
      <p>The above query states that an answer (tuple) (B) to the query is a project of the database that is
either explicitly assigned a supervisor at the ’db’ department, or a project at the ’db’ department.</p>
      <p>
        Several rewritable fragments of Datalog[∃], and corresponding rewriting algorithms, have
been introduced in recent years, however, to the best of our knowledge, all such algorithms
are only meant to be executed in a sequential manner, and hence do not scale well with large
ontologies as in the worst case, query rewriting leads to an exponentially sized new UCQ. This
drawback has influenced the database research community to develop new algorithms that can
enhance the query rewriting process. In [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], the authors proposed a new rewriting algorithm
that is based on previous query rewritings. If a given query was previously written and has been
extended with new atoms, instead of starting the rewriting from scratch, the authors suggested
using any previous rewriting for the original query and extend it with the rewriting of the new
atoms. Other remarkable contributions were proposed in [
        <xref ref-type="bibr" rid="ref6 ref7">6, 7</xref>
        ] .
      </p>
      <p>Despite the work that has been introduced in this area, however, the sequential execution of
these algorithms remains the main bottleneck.</p>
      <p>Contributions. The goal of this work is to explore the following research goals:
1. Introduce a new methodology that allows to existing rewriting algorithms to perform
parallel computations.
2. By means of the above methodology, define a parallel version of one of the main
(sequential) query rewriting algorithms known in the literature.</p>
      <p>Organization. The paper is organized as follows: Section 2 introduces basic notation and
notions. Section 3 discusses the state-of-the-art regarding query rewriting techniques for
Datalog[∃]-based ontologies. The proposed methodology for enhancing query answering via
parallelization, together with an algorithmic proposal based on this methodology is discussed
in Section 4. Conclusions and directions for future work as presented in Section 5.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Preliminaries</title>
      <p>
        Relational Schema: A relational schema R consists of a finite set of predicates (relation names),
each with a specific arity. We use ∆ ,  , and  to denote countably infinite sets of constants,
nulls and variables. A term is a constant, null or variable. An atomic formula (or simply atom)
over a schema R is an expression of the form (¯), where  is a predicate of R with arity , and
¯ = 1, . . . ,  is a tuple of terms. An atom without variables is called a fact. An instance is a set
of facts, while a database is an instance without nulls.
(Unions of) Conjunctive Queries (UCQs): A Conjunctive query (CQ)  is a rule-based query
that corresponds to the select-project-join fragment of relational algebra queries and can be
represented in either a first-order logic form or rule-like syntax form [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>In a rule-like syntax form, a CQ is an expression of the form:</p>
      <p>(¯) : − 1(¯1), . . . , (¯),
where (¯) is an atom, called the head of the query, and denoted head(), with ¯ are the
output variables of , while 1(¯1), . . . , (¯) is a sequence of atoms, called the body of the
query; body() denotes the set of atoms of the body of . A union of Conjunctive queries (UCQ)
is a set of CQs all having the same head predicate.</p>
      <p>Answer of a UCQ over a database: Answers of a CQ  over an instance  are defined via
homomorphisms. A homomorphism from a set of atoms  to a set of atoms  is a function ℎ
mapping terms in  to terms in , being the identity over the constants. Given an instance
, a conjunctive query Q with output variables ¯, and a tuple of constants and nulls ¯, we say
that ¯ is an answer to  over  if there is a homomorphism ℎ from the body of Q to  such that
ℎ(¯) = ¯.</p>
      <p>Datalog[∃] Ontologies and Knowledge Bases: A Datalog[∃] rule, a.k.a. tuple generating
dependency (TGD) is an expression of the form:</p>
      <p>∀¯1, . . . , ¯ 1(¯1), . . . , (¯) → ∃¯ 0(¯0)
where each (¯) is an atom over the tuple of variables ¯, with ¯ ⊆ ¯0 In particular, 0(¯0)
is the head, and 1(¯1), . . . , (¯) is the body of the rule.1 An ontology Σ is a finite set of
TGDs.
1For simplicity, we often omit the universal quantifier from rules.</p>
      <p>
        Models of a Knowledge Base: A knowledge base is a pair (, Σ) of a database  and an
ontology Σ . A model of (, Σ) is an instance  such that D ⊆ I and I satisfies each TGD of Σ ; I
satisfies a TGD  if, whenever there exists a homomorphism h from its body to , then there is
an extension h’ ⊇ h of h, such that h’ is a homomorphism from the head of  to I.
Ontological Query Answering: Given a knowledge base (, Σ) and a UCQ (¯, the answers
to (¯) over (, Σ) , denoted ans(, , Σ) is the set of tuples ¯ of constants such that ¯ ∈ (),
for every model  of (, Σ) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>It is well-known that ontological query answering, i.e., the problem of checking whether a
given tuple ¯ is an answer to a given UCQ over a given knowledge base, is undecidable, unless
restrictions on the ontology language are enforced.</p>
    </sec>
    <sec id="sec-3">
      <title>3. State of the Art</title>
      <p>
        Datalog[∃] is an extension of classical Datalog that enhances its expressivity by introducing
existential quantifiers to its rules. Although this version has enhanced the knowledge
representation capabilities of the language, this increase in expressive power makes ontological query
answering undecidable. Current approaches to tackle this issue focused on identifying fragments
of the Datalog[∃] language, that guarantee that ontological query answering becomes decidable.
The most prominent approach is the one of rewritability. An ontology Σ is rewritable if for any
UCQ Q, it is possible to rewrite Σ and  to a new UCQ Q’ such that, for every database , the
answers of Q over the knowledge base (D, Σ ) coincide with the answers of Q’ over D alone, i.e.,
ans(, , Σ) = ′(), for every database . Such a query ′ is called a perfect rewriting of Σ
and . Diferent fragments of Datalog[ ∃] have been introduced in the literature that guarantee
ontologies written in such fragments are rewritable, such as linear ontologies, multi-linear
ontologies and sticky ontologies. All such fragments are powerful enough to express ontologies
written in other important formalisms such as Description Logics [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>
        Several eforts in implementing rewriting algorithms for the these fragments have been
introduced. One prominent example is the so called XRewrite algorithm [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The XRewrite
algorithm is a generic rewriting algorithm that can be applied to any rewritable ontology
language, although the authors experimentally evaluated the algorithm only for linear and
sticky TGD classes. The main idea of the proposed algorithm is to generate a union of conjunctive
queries given a conjunctive query CQ as input and a set of TGDs. The algorithm is a backward
chaining rewriting algorithm that employes a so-called rewriting step which starts from the
body of a given query and exhaustively compares it with each rule head in the set of TGDs to
give rise to a new CQ that will become a part of the final rewritten UCQ.
      </p>
      <sec id="sec-3-1">
        <title>Example 2. Consider the following TGD  :</title>
        <p>and the query
taken from Example 1.</p>
        <p>project(), inDept(,  ) → ∃ supervisor(, , )</p>
        <p>() :- supervisor(, , )</p>
        <p>The rewriting step starts with finding a match for the head of  , i.e., head( ), and (a subset of)
the body of , body(). The match in this case is for supervisor(A, db, B) and supervisor(Z,Y,X),
which is {X → B,Y → db, Z → A}. Thus, the atom supervisor(A, db, B) in in the body of  can be
replaced with the body of  .2 The result of the rewriting step is a new CQ Q.</p>
        <p>() :- project(), inDept(, ).</p>
        <p>Applying the rewriting step without considering some important constraints could lead to
unsound or incomplete rewritings. To overcome such problems, two conditions are required
before a rewriting step can be performed, namely the applicability condition, which, roughly,
guarantees that the rewriting step does not produce a new query obtained by means of
joining values coming from existential variables with constants, and factorization, which is an
intermediate operation that simplifies a given query, so that the applicability condition can be
applied.</p>
        <p>The XRewrite algorithm is thus an exhaustive application of rewriting step and factorization,
until no new queries can be produced, and the result of the algorithm is the union of all queries
produced. The key property of the algorithm is that it always terminates, whenever the input
ontology is rewritable. The authors introduced some preliminary work on making this algorithm
run in parallel, but this has been achieved only for Linear TGDs. The authors achieved the
parallelization by decomposing the input query into smaller chunks and rewrite each of these
chunks independently, using the XRewrite algorithm and finally merge the rewriting of each
chunk into the final rewriting.</p>
        <p>
          Another algorithm that exploits similar ideas to the XRewrite is the PURE rewriting
algorithm [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. The PURE rewriting algorithm merges the rewriting step and factorization in a
single operator, called piece-wise unifier and apply a pruning strategy that is able to remove
queries obtained in the rewriting process, that are subsumed by more general queries.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Ontology Reasoning via Parallelization</title>
      <p>
        To the best of our knowledge, all existing rewriting algorithms are essentially computing
sequentially, and thus do not scale well with large ontologies. The research problem to be
addressed is thus to identify methodologies for parallelization and then, extend the preceding
algorithms with these approaches. To apply parallelization, we can exploit an idea that was
initially introduced in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] which is the decomposition of the query. In [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], the authors proposed
the decomposition of the input query into smaller parts (subqueries) that can then be rewritten
independently. We present query decomposition with an example.
      </p>
      <sec id="sec-4-1">
        <title>Example 3. Consider the following TGD  and CQ .</title>
        <p>person() → ∃ hasFather(, )
2Variables in the body of  that do not appear in its head are assumed to be replaced with fresh variable names, to
avoid clashes with existing variables in the query.</p>
        <p>( ) :- hasFather(,  ), employee( )
.</p>
        <p>Note that due to the applicability condition, the head of  cannot be unified with the atom
hasFather(,  ) of the query, since  is a join variable in the query, and this variable  is going
to be mapped to the existential variable of  .</p>
        <p>With the above in mind, it is clear that to safely decompose the query, we first need to understand
which variables in the query have a chance to be unified with an existential variable, at any step of
the rewriting algorithm; atoms of the query mentioning such variables should never be separated,
when decomposing the query.</p>
        <p>Example 5. Consider the following example.</p>
        <p>1: person( ) → ∃ hasFather(, )
 2 : son( ) → male( )
 3 : father( ) → male( )
 4: son( ) → ∃ hasFather(, )
 5 : daughter( ) → ∃ hasFather(, )
 2 : daughter( ) → female( )</p>
        <p>Consider also the following conjunctive query  asking for all (, ), where a is a male and has
father b.</p>
        <p>(, )
:</p>
        <p>male(), hasFather(, ).</p>
        <p>After inspecting the rules in Σ , it is easy to verify that there is no join variable occurring in  that
has a chance to be unified with an existential variable during the rewriting process, therefore, we
can safely decompose . For example, as the following 2 subqueries3:
1()
2(, )
::male()
hasFather(, )
We then use a so-called reconciliation rule to encode the original query as the conjunction of the
above to sub-queries:</p>
        <p>: (, ) :- 1(), 2(, ),
that intuitively says that Q is the query obtained by computing the join of the queries 1,Σ2,Σ.</p>
        <p>
          The simplest form of parallelization one can employ is thus the one where given a UCQ 
and an ontology Σ , we first decompose  into subqueries 1,. . . ,, and then employ an
ofthe-shelf sequential rewriting algorithm over each  w.r.t. Σ . Then, by using the reconciliation
rule  , and the rewritings of each , one can perform the "unfolding" of  , obtainig the final
rewritten UCQ. This is the approach employed in [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], which allowed to improve performance
when applied to linear TGDs, however, for other types of TGDs as multi-linear, or sticky, it
again does not scale well, since in each step of the rewriting, when employing TGDs with
multiple atoms in their body, such as multi-linear, a new query with more and more atoms in its
3Each subquery  will have as output variables, the subset of the output variables of  which  mentions together
with the variables that also other subqueries mention.
body may be generated. To achieve better results with diferent types of TGDs, we propose to
perform query decompositions not only for the input query, but internally to the algorithm. That
is, we propose applying the decomposition algorithm in each execution cycle before applying
the rewriting. This allows to keep the queries being worked on by the algorithm small, at
each iteration cycle, and at the same time allows to employ multiple threads during the whole
execution of the algorithm, rather than just at the start.
        </p>
        <p>We present a preliminary modification of the XRewrite algorithm using the above approach
in Algorithm 1.</p>
        <p>Algorithm 1 The modified XRewrite algorithm
Input: a CQ Q over a schema R and a set Σ of TGDs over R
Output: the perfect rewriting of Q w.r.t. Σ
 := {(Q, r, u)};
repeat
  :=  ;
foreach (Q, x, u) ∈   , where x ∈ {r, f} do
(1, . . . , ,  ) := decompose(Q, Σ );
for  = 1 to  do in parallel
 := ∅;
foreach  ∈ Σ do
/* rewriting step */
foreach S ⊆ body() such that  is applicable to S do</p>
        <p>Let  be the MGU for S,;
Construct Q’ by replacing S with body( ) in , and</p>
        <p>apply  to all variables of Q’;
 :=  ∪ (Q’, r, u);
end
/* factorization step */
foreach S ⊆ body() which is factorizable w.r.t.  do</p>
        <p>Let  be the MGU for the atoms in ;
Construct Q’ by applying  to the variables of body(Q);
 :=  ∪ (Q’, f, u);
end
end
end
/* query Q is now explored */
 := ( ∖ {(Q, x, u)}) ∪ {(Q, x, e)};
/* unfolding of the rewritings */
Σ := unfold(1 , . . . ,  ,  );
foreach  in Σ obtained from queries all marked with r do
if there is no (Q”, r, *) ∈  which is equal to Q,
up to variable renaming then
 :=  ∪ {(Q, r, u)};
end
end
foreach  in Σ obtained by using a query marked with f do
if there is no (Q”, *, *) ∈  which is equal to Q,
up to variable renaming then
 :=  ∪ {(Q, f, u)};
end
end
end
until   =  ;
  := {Q | (Q, r, e) ∈  };
return</p>
        <p>The algorithm keeps track of all intermediate rewritten queries in a set  , where each
query is marked with two flags: the first is either r or f, meaning that the query is going to be
part of the final rewriting, or it is the result of an intermediate factorization, while the second
is either u or e meaning the query is unexplored, and thus needs to be processed, or it has
been already processed (explored). The main idea is to initialize  with the input query,
and then, iteratively do the following: decompose the currently worked-on query extracted
from  , via the decomposition approach explained earlier. Then, for each subquery , an
independent thread is used to apply the rewriting and the factorization steps to  exhaustively,
as in the original XRewrite algorithm, and the resulting UCQ obtained from each subquery
 is stored in a dedicated set  . The algorithm then marks the worked-on query as
explored, and the results are then joined together with the unfolding operation, obtaining a
UCQ Σ whose elements (CQs) need to be added to the global set  . In the last part of
the algorithm, if a CQ in Σ has been obtained by combining only queries marked with r, i.e.,
as "to be rewritten", then this CQ will be part of the final rewriting, and thus it is marked with r
in the set  . If instead one of the queries used to construct the CQ was marked with f, i.e.,
"as being just an intermediate query obtained by factorization", then we mark the CQ with f in
the set  as it means it needs further processing.</p>
        <p>
          Correctness and Termination. To show that the algorithm is correct, and terminates for
every ontology Σ that is rewritable, we extend the proofs of correctness and of termination
employed in [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. In particular, the correctness follows from the correctness of the original
XRewrite algorithm and the fact that the unfolding of the reconciliation rule  of a CQ  w.r.t.
the UCQs that rewrite each component of  coincides with the perfect rewriting of .
        </p>
        <p>Regarding the termination, this follows from the termination of the original XRewrite
algorithm, and the fact that the unfolding of the reconciliation rule  of a CQ  w.r.t. the UCQs
that rewrite each component of  coincides with the perfect rewriting of , and thus does not
introduce more UCQs w.r.t. the ones introduced by sequential version of XRewrite.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Next Steps</title>
      <p>
        In this paper, we considered the problem of Ontological Query Answering via query rewriting,
for Datalog[∃] ontologies. That is, given a Datalog[∃] ontology Σ and a query , compute a
UCQ Σ such that the answers to  over the knowledge base (, Σ) coincide with the answers
of Σ over , for every database . We studied the problem from a theoretical perspective, and
identified state of the art algorithms that would greatly benefit from parallel implementations.
We highlighted a preliminary proposal in this direction by adapting the (sequential) XRewrite
algorithm from [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] by embedding parallel computation in the rewriting process, by means
of query decomposition techniques. For future research we plan to implement the presented
algorithm, and develop a benchmark on real-world ontologies, in a similar spirit to other eforts
such as [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. We would use this benchmark to understand and verify the impact of the new
algorithms in diferent scenarios, and compare them with existing approaches, including ones
based on diferent techniques, such as via the terminating chase (e.g., see [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ]). Further
direction for future work would be to optimize the query rewriting by exploiting the presence in
the database schema of integrity constraints such as standard database dependencies [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] as well
as more advanced constraints, such as Active Integrity Constraints [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and Preferences [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>T. R.</given-names>
            <surname>Gruber</surname>
          </string-name>
          ,
          <article-title>A translation approach to portable ontology specifications, Knowledge Acquisition 5 (</article-title>
          <year>1993</year>
          )
          <fpage>199</fpage>
          -
          <lpage>220</lpage>
          . doi:https://doi.org/10.1006/knac.
          <year>1993</year>
          .
          <volume>1008</volume>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Calvanese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Mcguinness</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Nardi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Patel-Schneider</surname>
          </string-name>
          ,
          <article-title>The Description Logic Handbook: Theory, Implementation, and</article-title>
          <string-name>
            <surname>Applications</surname>
          </string-name>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>M.</given-names>
            <surname>Arenas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Barcelo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Libkin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Martens</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          , Principles of databases. (
          <year>2021</year>
          ). doi:https://github.com/pdm-book/community.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Orsi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Simkus</surname>
          </string-name>
          ,
          <article-title>Datalog and its extensions for semantic web databases (</article-title>
          <year>2012</year>
          ). doi:
          <volume>7487</volume>
          .
          <fpage>10</fpage>
          .1007/978-3-
          <fpage>642</fpage>
          -33158-
          <issue>9</issue>
          _
          <fpage>2</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>T.</given-names>
            <surname>Venetis</surname>
          </string-name>
          , G. Stoilos, G. Stamou,
          <article-title>Query extensions and incremental query rewriting for owl 2 ql ontologies</article-title>
          ,
          <source>Journal on Data Semantics</source>
          <volume>3</volume>
          (
          <issue>1</issue>
          ) (
          <year>2013</year>
          )
          <fpage>1</fpage>
          -
          <lpage>23</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>A.</given-names>
            <surname>Chortaras</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Trivela</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. B.</given-names>
            <surname>Stamou</surname>
          </string-name>
          ,
          <article-title>Optimized query rewriting for owl 2 ql</article-title>
          ,
          <source>In Proceedings of the 23rd International Conference on Automated Deduction</source>
          (
          <year>2011</year>
          )
          <fpage>192</fpage>
          -
          <lpage>206</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>S.</given-names>
            <surname>Kikot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Kontchakov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Zakharyaschev</surname>
          </string-name>
          ,
          <article-title>Conjunctive query answering with owl 2 ql</article-title>
          ,
          <source>In Proceedings of the 13th International Conference on Principles of Knowledge Representation and Reasoning</source>
          (
          <year>2012</year>
          a).
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Orsi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          ,
          <article-title>Query rewriting and optimization for ontological databases</article-title>
          ,
          <source>ACM Transactions on Database Systems</source>
          (
          <year>2014</year>
          ). doi:
          <volume>39</volume>
          .
          <fpage>10</fpage>
          .1145/2638546.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>M.</given-names>
            <surname>König</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Leclere</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.-L. Mugnier</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Thomazo</surname>
          </string-name>
          ,
          <article-title>Sound, complete and minimal ucqrewriting for existential rules</article-title>
          , Semantic
          <string-name>
            <surname>Web</surname>
          </string-name>
          (
          <year>2013</year>
          ). doi:6.
          <fpage>10</fpage>
          .3233/SW-140153.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Calautti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Console</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          , Benchmarking approximate consistent query answering,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Calautti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          ,
          <article-title>Semi-oblivious chase termination: The sticky case</article-title>
          ,
          <source>Theory Comput. Syst</source>
          .
          <volume>65</volume>
          (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>M.</given-names>
            <surname>Calautti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Gottlob</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Pieris</surname>
          </string-name>
          ,
          <article-title>Non-uniformly terminating chase: Size and complexity</article-title>
          , in: PODS,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>S.</given-names>
            <surname>Abiteboul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Hull</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Vianu</surname>
          </string-name>
          , Foundations of databases, Addison-Wesley (
          <year>1995</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>M.</given-names>
            <surname>Calautti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Caroprese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Greco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Molinaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Trubitsyna</surname>
          </string-name>
          , E. Zumpano,
          <article-title>Existential active integrity constraints</article-title>
          ,
          <source>Expert Systems with Applications</source>
          <volume>168</volume>
          (
          <year>2021</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>M.</given-names>
            <surname>Calautti</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Greco</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Molinaro</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Trubitsyna</surname>
          </string-name>
          ,
          <article-title>Preference-based inconsistency-tolerant query answering under existential rules</article-title>
          ,
          <source>Artificial Intelligence</source>
          <volume>312</volume>
          (
          <year>2022</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>