Damian Bursztyn
email: damian.burstzyn@inria.fr

Franc ¸ois Goasdou

Ioana Manolescu
email: ioana.manolescu@inria.fr

Teaching an RDBMS about ontological constraints

In the presence of an ontology, query answers must reflect not only data explicitly present in the database, but also implicit data, which holds due to the ontology, even though it is not present in the database. A large and useful set of ontology languages enjoys FOL reducibility of query answering: answering a query can be reduced to evaluating a certain first-order logic (FOL) formula (obtained from the query and ontology) against only the explicit facts.

We present a novel query optimization framework for ontologybased data access settings enjoying FOL reducibility. Our framework is based on searching within a set of alternative equivalent FOL queries, i.e., FOL reformulations, one with minimal evaluation cost when evaluated through a relational database system. We apply this framework to the DL-LiteR Description Logic underpinning the W3C's OWL2 QL ontology language, and demonstrate through experiments its performance benefits when two leading SQL systems, one open-source and one commercial, are used for evaluating the FOL query reformulations.

INTRODUCTION

Ontology-based data access (OBDA, in short) [START_REF] Lenzerini | Ontology-based data management[END_REF] aims at exploiting a database, i.e., facts, on which hold ontological constraints, i.e., deductive constraints modeling the application domain under consideration. For instance, an ontology may specify that any author is a human, has a name, and must have authored some papers. Ontological constraints may greatly increase the usefulness of a database: for instance, a query asking for all the humans must return all the authors, just because of a constraint stating they are human; one does not need to store a human tuple in the database for each author. The data interpretations enabled by the presence of constraints has made OBDA a technique of choice when modeling complex real-life applications. For instance, in the medical domain, Snomed Clinical Terms is a biomedical ontology providing a comprehensive clinical terminology; the British Department of Health has a roadmap for standardizing medical records across the country, using this ontology etc.

While query answering under constraints is a classical database topic [START_REF] Abiteboul | Foundations of Databases[END_REF], research on OBDA has bloomed recently through many ontological constraints languages, e.g., Datalog ± [START_REF] Calì | A general datalog-based framework for tractable query answering over ontologies[END_REF], Description Logics [START_REF] Baader | The DL Handbook: Theory, Implementation, and Applications[END_REF] and Existential Rules [START_REF] Baget | On rules with existential variables: Walking the decidability line[END_REF], or RDF Schema for RDF graphs. OBDA query answering is the task of computing the answer to the given query, by taking into account both the facts and the constraints holding on them. In contrast, query evaluation as performed by database servers leads to computing only the answers derived from the data (facts), while ignoring the constraints.

A large and useful class of ontology languages enjoy first-order logic (FOL) reducibility (a.k.a. rewritability) of query answering, e.g., [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF][START_REF] Calì | A general datalog-based framework for tractable query answering over ontologies[END_REF][START_REF] Mugnier | Ontology-based query answering with existential rules[END_REF]. Query answering under constraints formulated in these languages reduces to the evaluation of the FOL query reformulation, obtained by compiling the constraints into the query, against the facts alone. Evaluating this FOL query in a relational database management system (RDBMS) by translation into SQL against the facts, suffices to compute the complete query answer.

A longstanding issue in reformulation-based query answering is that FOL reformulations tend to be very complex queries, involving very large unions (sometimes with hundreds or thousands of union terms) and/or numerous redundant subexpressions. Such queries are very different from the typical ones RDBMS optimizers are tuned for, thus RDBMSs perform poorly at evaluating them. To mitigate this issue, OBDA optimization research has mostly focused on producing FOL reformulations where redundancy is avoided as much as possible, e.g., [START_REF] Pérez-Urbina | Efficient query answering for OWL 2[END_REF][START_REF] Orsi | Optimizing query answering under ontological constraints[END_REF][START_REF] Chortaras | Optimized query rewriting for OWL 2 QL[END_REF][START_REF] Venetis | Incremental query rewriting for OWL 2 QL[END_REF][START_REF] König | A sound and complete backward chaining algorithm for existential rules[END_REF][START_REF] Virgilio | NYAYA: A system supporting the uniform management of large sets of semantic data[END_REF][START_REF] Thomazo | Compact rewriting for existential rules[END_REF][START_REF] Gottlob | Query rewriting and optimization for ontological databases[END_REF].

We present a more general, performance-oriented approach: we propose a query optimization framework for any logical OBDA setting enjoying FOL reducibility of query answering. We extend the language of FOL reformulations beyond those considered so far in the literature, and investigate several (equivalent) FOL reformulations of a given query, out of which we pick one likely to lead to the best evaluation performance. This contrasts with existing works from the semantic query answering literature (cf. Section 7), which use reformulation languages allowing single FOL reformulation (modulo minimization). Considering a set of reformulations and relying on a cost model to pick a most efficient one has a very visible impact on the efficiency and feasibility of query answering: indeed, picking the wrong reformulation may cause the RDBMS simply to fail evaluating it (typically due to very lengthy queries), while in other cases it leads to bad performance.

We apply this framework to the DL-LiteR Description Logic [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF] underpinning the popular W3C's OWL2 QL standard for rich Semantic Web applications. Query answering in DL-LiteR has received significant attention in the literature, notably techniques based on FOL reducibility, e.g., [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF][START_REF] Abdallah | DL-LITER in the light of propositional logic for decentralized data management[END_REF][START_REF] Pérez-Urbina | Efficient query answering for OWL 2[END_REF][START_REF] Rosati | Improving query answering over DL-Lite ontologies[END_REF][START_REF] Chortaras | Optimized query rewriting for OWL 2 QL[END_REF][START_REF] Venetis | Incremental query rewriting for OWL 2 QL[END_REF].

Contributions. We bring the following contributions to the problem of optimizing FOL reducible query answering (see Figure 1): 1. For logical formalisms enjoying FOL reducibility of query answering, we provide a general optimization framework that reduces query answering to searching among a set of alternative equivalent FOL reformulations, one with minimal evaluation cost in an RDBMS (Section 3). In Figure 1, from the query q and the set of ontological constraints T , we derive first, a space of query covers, shown in the top white-background box, and denoted C with some subscripts; from each such cover we show how to derive a FOL query that may be a FOL reformulation of q w.r.t. T . 2. We characterize interesting spaces of such alternative equivalent FOL queries for DL-LiteR (Section 4). First, we identify a sufficient safety condition to pick covers that q, T C m . . . for sure lead to FOL reformulations of the query. This condition is met by the covers in the top yellow box in Figure 1, and is not met by C ≡ above them. Our safe cover space allows considering FOL reformulations encompassing those previously studied in the literature. Second, we introduce a set of generalized covers (bottom yellow box in Figure 1) and a generalized cover-based reformulation technique, which always yields FOL query reformulations, oftentimes more efficient than those based on simple covers.

Our approach can be combined with, and helps optimizing, any existing reformulation technique for DL-LiteR.

3. We then optimize query answering in the setting of DL-LiteR by enumerating simple and generalized covers, and picking a coverderived FOL reformulation with lowest estimated evaluation cost w.r.t. an RDBMS cost model estimation (denoted by the bidirectional -labeled arrows in the figure). We provide two algorithms, an exhaustive and a greedy, for this task (Section 5).

4.

Evaluating any of our FOL reformulations through an RDBMS leads (thick arrows at the right of Figure 1) to the query answer reflecting both the data and the constraints. We demonstrate experimentally the effectiveness and the efficiency of our query answering technique for DL-LiteR, by deploying our query answering technique on top of Postgres and DB2, using several alternative data layouts (Section 6). From a query processing and optimization perspective, our approach can be seen as belonging to the so-called strategic optimization stage introduced in [START_REF] Manegold | A multi-query optimizer for Monet[END_REF] (where application semantics is injected into the query); it is also similar in spirit to the syntaxlevel rewrites performed by optimizers such as Oracle 10g's [START_REF] Ahmed | Cost-based query transformation in Oracle[END_REF]. We share with [START_REF] Manegold | A multi-query optimizer for Monet[END_REF] the idea of injecting semantics first, and like [START_REF] Ahmed | Cost-based query transformation in Oracle[END_REF], we use cost estimation to guide our rewrites; a common theme is to rewrite before ordering joins, selecting physical operators etc. From this angle, our contribution can be seen as a set of alternatives (rewritings) with correctness guarantees and algorithms to guide such rewritings, for the special class of queries obtained from FOL reformulations of CQ against ontologies.

In the sequel, Section 2 recalls preliminary notions on knowledge bases and DL-LiteR. Then, we detail the above contributions. Finally, we discuss related work and conclude in Section 7.

PRELIMINARIES

We introduce knowledge bases (Section 2.1), queries and query answering (Section 2.2), and finally position our work from a query optimization perspective, highlighting the hard issues (Section 2.3).

Table 1 summarizes the main notations of this work. As commonly known, a knowledge base (KB) K consists of a TBox T (ontology, or axiom set) and an ABox A (database, or fact set), denoted K = T , A , with T expressing constraints on A.

Knowledge bases

Most popular Description Logic dialects [START_REF] Baader | The DL Handbook: Theory, Implementation, and Applications[END_REF], and in particular DL-LiteR [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF], build T and A from a set NC of concept names (unary predicates), a set NR of role names (binary predicates), and a set NI of individuals (constants). The ABox consists of a finite number of concept assertions of the form A(a) with A ∈ NC and a ∈ NI , and of role assertions of the form R(a, b) with R ∈ NR and a, b ∈ NI . The TBox is a set of axioms, whose expressive power is defined by the ontology language. While our work applies to a more general setting (see Section 3), below, we illustrate our discussion on the DL-LiteR description logic [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF], which is the first order logic foundation of the W3C's OWL2 QL standard for managing semantic-rich Web data. For what concerns expressive power, DL-LiteR is a significant extension of the subset of RDF (comprising RDF Schema) which can be translated into description logics, a.k.a. the DL fragment of RDF; DL-LiteR is also a fragment of Datalog ± [START_REF] Calì | Datalog ± : a unified approach to ontologies and integrity constraints[END_REF].

Given a role R, its inverse, denoted R -, is the set: {(b, a) | R(a, b) ∈ A}. We denote N ± R the set of roles made of all role names, together with their inverses:

N ± R = NR ∪ {r -| r ∈ NR}.
For instance, supervisedBy and supervisedBy -, whose meaning is supervises, are in N ± R . A DL-LiteR TBox constraint is either: (i) a concept inclusion of the form C1 C2 or C1 ¬C2, where each of C1, C2 is either a concept from NC , or ∃R for some R ∈ N ± R , and ¬C2 is the complement of C2. Here, ∃R denotes the set of constants occurring in the first position in role R (i.e., the projection on the first attribute of R). For instance, ∃supervisedBy is the set of those supervised by somebody, while ∃supervisedBy - is the set of all supervisors (i.e., the projection on the first attribute of supervisedBy -, hence on the second of supervisedBy);

(ii) a role inclusion of the form R1 R2 or R1 ¬R2, with R1, R2 ∈ N ± R . Observe that the left-hand side of the constraints are negationfree; in DL-LiteR, negation can only appear in the right-hand side of a constraint. Constraints featuring negation allow expressing a particular form of integrity constraints: disjointness or exclusion constraints. The next example illustrates DL-LiteR KBs.

Example 1 (DL-LiteR KB). Consider the DL-LiteR TBox T in Table 2 expressing contraints on the Researcher and PhDStudent concepts, and the worksWith and supervisedBy roles. It states that PhD students are researchers (T 1), researchers work with researchers (T 2)(T 3), working with someone is a symmetric relation (T 4), being supervised by someone implies working with her/him

(T 1) PhDStudent Researcher (T 2) ∃worksWith Researcher (T 3) ∃worksWith - Researcher (T 4) worksWith worksWith - (T 5) supervisedBy worksWith (T 6) ∃supervisedBy PhDStudent (T 7) PhDStudent ¬∃supervisedBy - Table 2: Sample TBox T . DL constraint FOL constraint 1 A A ∀x[A(x) ⇒ A (x)] 2 A ∃R ∀x[A(x) ⇒ ∃yR(x, y)] 3 A ∃R - ∀x[A(x) ⇒ ∃yR(y, x)] 4 ∃R A ∀x[∃yR(x, y) ⇒ A(x)] 5 ∃R -A ∀x[∃yR(y, x) ⇒ A(x)] 6 ∃R ∃R ∀x[∃yR (x, y) ⇒ ∃zR(x, z)] 7 ∃R ∃R - ∀x[∃yR (x, y) ⇒ ∃zR(z, x)] 8 ∃R -∃R ∀x[∃yR (y, x) ⇒ ∃zR(x, z)] 9 ∃R -∃R - ∀x[∃yR (y, x) ⇒ ∃zR(z, x)] 10 R R -or R -R ∀x, y[R(x, y) ⇒ R (y, x)] 11 R R or R -R -∀x, y[R(x, y) ⇒ R (x, y)]
Table 3: DL-LiteR inclusion constraints without negation, and their equivalent in first-order logic (FOL).

(T 5), only PhD students are supervised (T 6) and they cannot supervise someone (T 7). Now consider the ABox A below, for the same concepts and roles:

(A1) worksWith(Ioana, Francois) (A2) supervisedBy(Damian, Ioana) (A3) supervisedBy(Damian, Francois)
It states that Ioana works with Franc ¸ois (A1), Damian is supervised by both Ioana (A2) and Franc ¸ois (A3).

The semantics of inclusion constraints is defined, as customary, in terms of their interpretations in first-order logic (FOL). Table 3 lists all possible forms of DL-LiteR constraints without negation, and provide for each form the equivalent FOL formulation; a similar table for rules with negation appears in [START_REF]Efficient query answering in the presence of DL-LiteR constraints[END_REF]. In Table 2, A, A stand for concepts from NC , while R, R stand for roles from NR. For instance, [START_REF] Abdallah | DL-LITER in the light of propositional logic for decentralized data management[END_REF] states that any A is also an A ; [START_REF] Bernstein | Using semi-joins to solve relational queries[END_REF] states that any constant appearing in the first position of role R also appears in the second position in R etc. It is important to notice that these are deductive constraints, to be interpreted under the open-world assumption (OWA), different from the closed-world assumption typically made when interpreting constraints in RDBMSs. For instance, (1) allows to deduce (infer) an instance of A from each known instance of A (OWA interpretation). This contrasts with its CWA reading "the set of stored A instances in the database is included in that of A instances".

A KB K = T , A is consistent if the corresponding FOL theory, consisting of the A facts and of the FOL constraints corresponding to T , has a model. In this case, we say also that A is T -consistent. In the absence of negation, any KB is consistent, as negation-free constraints merely lead to infering more facts. If some constraints feature negation, K is consistent iff none of its (explicit or inferred) facts contradicts a constraint with negation. An inclusion or assertion α is entailed by a KB K, written K |= α, if α is satisfied in all the models of the FOL theory corresponding to K.

Example 2 (DL-LiteR entailment). The KB K = T , A from Example 1 entails many constraints and assertions. For instance:

• K |= ∃supervisedBy ¬∃supervisedBy -, i.e., the two attributes of supervisedBy are disjoint, due to (T 6)+(T 7);

• K |= worksWith(Francois, Ioana), i.e., Franc ¸ois works with Ioana, due to (T 4) + (A1);

• K |= PhDStudent(Damian), i.e., Damian is a PhD student, due to (A2) + (T 6);

• K |= worksWith(Francois, Damian), i.e., Franc ¸ois works with Damian, due to (A3) + (T 5) + (T 4).

Finally remark that A is T -consistent, i.e., there is no violation of its only constraint using negation (T 7), since the KB K does not entail that some PhD student supervises another.

Queries

A FOL query is of the form q(x) ← φ(x) where φ(x) is a FOL formula whose free variables are x; the query name is q, its head is q(x), while its body is φ(x). Without loss of generality, in the sequel, we consider only connected queries, i.e., those which do not feature cartesian products. The answer set of a query q against a knowledge base K is:

ans(q, K) = { t ∈ (NI ) n | K |= φ( t)}, where K |= φ( t) means that every model of K is a model of φ( t).
If q is Boolean, ans(q, K) = { } encodes true, with the empty tuple, while ans(q, K) = ∅ encodes false. In keeping with the literature on query answering under ontological constraints, our queries have set semantics, i.e., a tuple either belongs to the answer or does not, but it cannot appear several times in the answer.

Example 3 (Query answering). Consider the FOL query q asking for the PhD students with whom someone works: q(x) ← ∃y PhDStudent(x) ∧ worksWith(y, x)

Given the KB K of Example 1, the answer set of this query is {Damian}, since K |= PhDStudent(Damian) and K |= worksWith(Francois, Damian) hold. Observe that evaluating q against K's ABox only yields no answer.

To simplify the reading, in what follows, we omit the quantifiers of existential variables, and simply write the above query as q(x) ← PhDStudent(x) ∧ worksWith(y, x). Query dialects. We will need to refer to several FOL query dialects, whose general forms are schematized in Table 4. Conjunctive Queries (CQs), a.k.a. select-project-join queries, are conjunctions of atoms, where an atom is either A(t) or R(t, t ), for some t, t variables or constants. Semi-Conjunctive Queries (SCQs) are joins of unions of single-atom CQs with the same arity, where the atom is either of the form A(t) or of the form R(t, t ) as above; the bound variables of SCQs are also existentially quantified. Unions of CQs (UCQs) are disjunctions of CQs with same arity. Unions of SCQs (USCQs), Joins of UCQs (JUCQs), and finally Joins of USCQs (JUSCQs) are built on top of simpler languages by adding unions, respectively joins. All the above dialects directly translate into SQL, and thus can be evaluated by an RDBMS. q1 (x) ← PhDStudent(x) ∧ worksWith(y, x) q 2 (x) ← PhDStudent(x) ∧ worksWith(x, y) q 3 (x) ← PhDStudent(x) ∧ supervisedBy(y, x) q 4 (x) ← PhDStudent(x) ∧ supervisedBy(x, y) q 5 (x) ← supervisedBy(x, z) ∧ worksWith(y, x) q 6 (x) ← supervisedBy(x, z) ∧ worksWith(x, y) q 7 (x) ← supervisedBy(x, z) ∧ supervisedBy(y, x) q 8 (x) ← supervisedBy(x, z) ∧ supervisedBy(x, y) q 9 (x) ← supervisedBy(x, x) q 10 (x) ← supervisedBy(x, y) Table 5: Union terms in CQ-to-UCQ reformulation (Example 4).

CQ q(x) ← a1 ∧ • • • ∧ an SCQ q(x) ← (a 1 1 ∨ • • • ∨ a k 1 1 ) ∧ • • • ∧ (a 1 n ∨ • • • ∨ a kn n ) UCQ q(x) ← CQ 1 (x) ∨ • • • ∨ CQ n (x) USCQ q(x) ← SCQ 1 (x) ∨ • • • ∨ SCQ n (x) JUCQ q(x) ← UCQ 1 ( x1) ∧ • • • ∧ UCQ n ( xn) JUSCQ q(x) ← USCQ 1 ( x1) ∧ • • • ∧ USCQ n ( xn)
Notations. Unless otherwise specified, we systematically use q to refer to a CQ query, a1, . . . , an to designate the atoms in the body of q, T to designate a DL-LiteR TBox, and A for an ABox.

FOL-reducibility of data management. In a setting where query answering is FOL-reducible, there exists a FOL query q FOL (computable from q and T ) such that:

ans(q, T , A ) = ans(q FOL , ∅, A )
for any T -consistent ABox A. Thus, query answering reduces to: a first reasoning step to produce the FOL query from q and T (this is also known as reformulating the query using the constraints), and a second step which evaluates the reformulated query q FOL in the standard fashion, only on the ABox (i.e., disregarding the TBox constraints). This can be done for instance by translating it into SQL and delegating the evaluation to an RDBMS. From a knowledge base perspective, this allows to take advantage of highly optimized data stores and query evaluation engines to answer queries. From the database perspective, this two-step approach enhances the power of RDBMSs, as it allows to compute answers based only on data stored in the ABox (i.e., the database), but also taking into account the deductive constraints and all their consequences (entailed facts and constraints).

As DL-LiteR query answering is FOL reducible [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF], the literature provides techniques for computing FOL reformulations of a CQ in settings related to DL-LiteR. These techniques produce (i) a UCQ w.r.t. a DL-LiteR TBox, e.g., [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF][START_REF] Abdallah | DL-LITER in the light of propositional logic for decentralized data management[END_REF][START_REF] Pérez-Urbina | Efficient query answering for OWL 2[END_REF][START_REF] Chortaras | Optimized query rewriting for OWL 2 QL[END_REF][START_REF] Venetis | Incremental query rewriting for OWL 2 QL[END_REF], or extensions thereof using existential rules [START_REF] König | A sound and complete backward chaining algorithm for existential rules[END_REF] or Datalog ± [START_REF] Virgilio | NYAYA: A system supporting the uniform management of large sets of semantic data[END_REF][START_REF] Gottlob | Query rewriting and optimization for ontological databases[END_REF], (ii) a USCQ [START_REF] Thomazo | Compact rewriting for existential rules[END_REF] w.r.t. a set of existential rules generalizing a DL-LiteR TBox, and (iii) a set of alternative equivalent JUCQs [10] w.r.t. an RDF database [START_REF] Goasdoué | Efficient query answering against dynamic RDF databases[END_REF], whose RDF Schema constraints are the following four, out of the twenty-two, DL-LiteR ones: (1) A A , (4) ∃R A, (5) ∃R -A and (11) R R .

CQ-to-UCQ reformulation for DL-LiteR [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF]. We present the pioneering CQ-to-UCQ technique on which we rely to establish our results. These results extend to any other FOL reformulation techniques for DL-LiteR, e.g., optimized CQ-to-UCQ or CQ-to-USCQ reformulation techniques, since they produce equivalent FOL queries.

The technique of [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF] relies on two operations: specializing a query atom into another by applying a negation-free constraint (recall Table 3) in the backward direction, and specializing two atoms into their most general unifier (mgu, in short). These operations are exhaustively applied to the input CQ; each operation generates a new CQ contained in the input CQ w.r.t. the TBox, because the new CQ was obtained by specializing one or two atoms of the previous CQ. The same process is then applied on the new CQs, and so on recursively until the set of generated CQs reaches a fixpoint. The finite union of the input CQ and of the generated ones forms the UCQ reformulation of the input CQ w.r.t. the TBox.

Example 4 (CQ-to-UCQ reformulation). Consider the query q(x) ← PhDStudent(x) ∧ worksWith(y, x) and KB K of the preceding examples. The UCQ reformulation of q is: q UCQ (x) ← 10 i=1 q i (x) where q 1 -q 10 appear in Table 5. In the table, q 1 (x) has exactly the body of q. q 2 (x) is obtained from q 1 by applying the constraint (T 4): worksWith worksWith -, which is of the form (10) listed in Table 3. (T 4) is applied backward, in the following sense: the query asks for worksWith(y, x), and (T 4) tells us that one of the possible reasons why this may hold, is if worksWith(x, y) holds. Thus, q 2 is contained within q 1 , in the sense that if q 2 holds, q 1 is also sure to hold, but the opposite is not true; intuitively, "q 1 may hold for other reasons (thanks to other specializations of its atoms)" -and it is exactly the set of such other specializations which the technique explores.

Similarly, q 3 is obtained from q 1 by applying the constraint (T 5) backward on the atom worksWith(y, x), and q 4 from q 2 by applying (T 5) on worksWith(x, y). To obtain q 5 to q 8 , we apply (T 6) backward on the atom PhDStudent(x) in q 1 to q 4 . Finally, q 9 is obtained from q 7 through the mgu of its two atoms, namely supervisedBy(x, z) and supervisedBy(y, x); q 10 is similarly obtained from q 8 .

Evaluating reformulated subqueries can be (very) hard

It is worth noting that the (naïve) exhaustive application of specialization steps leads, in general, to highly redundant reformulations w.r.t. the containment of their disjuncts. For instance, minimizing q UCQ in the above example by eliminating disjuncts contained in another leads to: q UCQ min (x) ← 3 i=1 q i (x) ∨ q 10 (x) where the disjuncts appear in Table 5; they are all contained in q 10 .

Minimal UCQ reformulations can be obviously processed more efficiently. However, they still repeat some computations, e.g., in the above example, PhDStudent is read three times, worksWith twice etc; in general, subqueries appearing in different union terms are repeatedly evaluated.

Common subexpression elimination (CSE) techniques aim at identifying repeated subexpressions in queries or plans, and reformulating them so that the expression is evaluated only once and its results are shared to increase performance; CSE is often used in a Multi-Query Optimization context (MQO). However, MQO is poorly supported in today's main RDBMS engines 1 . As we will see, our approach, which starts with the TBox and data statistics, and ends by handing over a chosen reformulation to the RDBMS, never requires work to detect common (repeated) sub-expressions.

Another source of difficulty is the sheer size of reformulated queries; we exhibit some whose size (i.e., length of the SQL formulation) is above 2.000.000 characters. For instance, the minimal UCQ corresponding to query Q9 in our experiments (Section 6) is a union of 145 CQs, and runs in 5665 ms on DB2 and a database of 100 million facts. In contrast, the SQL translation of the best FOL reformulation identified by our approach reduces this to 156 ms (36 times faster), just by giving the engine a different (yet equivalent) SQLized FOL reformulation.

From an optimization viewpoint, the problem we are facing can be seen as follows. We aim at answering queries through RDBMSs in the presence of constraints, for FOL-reducible settings.

The standard UCQ reformulation (and other cost-ignorant ones) perform quite badly. The question is, then: is there an equivalent reformulation which would be evaluated more efficiently?

To answer this, one is faced with a set of FOL (or, alternatively, SQL) reformulations whose size is potentially very high: exponential in the query size for non-redundant queries, larger yet if one considers, for instance, queries featuring semijoins [START_REF] Bernstein | Using semi-joins to solve relational queries[END_REF]; each query therein may be (very) large, have many unions etc. From these, one would need to find the one(s) best optimized and executed by the RDBMS; their very high number makes this utterly impractical.

The following sections present our alternative approach.

OPTIMIZATION FRAMEWORK

The performance of evaluating (the SQL translation of) a given FOL reformulation of a query through an RDBMS depends on several factors: (i) data properties (size, cardinalities, value distributions etc); (ii) the storage model, i.e., the concrete relations storing the ABox, possible indexes etc; (iii) the optimizer's algorithm. Among these, (i) is completely determined by the dataset (the given ABox). On the storage model (ii), for generality, we make no assumption, other than requiring that FOL query reformulations can be translated into SQL on the underlying store. (We study several such concrete models experimentally, in Section 6). For what concerns optimizers (iii), we note that off-the-shelf they perform very poorly on previously proposed FOL query reformulations, yet we would like to exploit their strengths when possible.

Approach: cover-based query answering. We identify and exploit a novel space of alternative FOL reformulations of the given input CQ. We estimate the cost of evaluating each such reformulation through the RDBMS using standard database cost formulas, and hand to the RDBMS one with the best estimation.

More specifically, a query cover defines a way to split the query into subqueries, that may overlap, called fragment queries, such that substituting each subquery with its FOL reformulation (obtained from any state-of-the-art technique) and joining the corresponding (reformulated) subqueries, may yield a FOL reformulation of the original query (recall also Figure 1).

Definition 1 (CQ cover).

A cover of a query q, whose atoms are {a1, . . . , an}, is a set C = {f1, . . . , fm} of non-empty subsets of atoms of q, called fragments, such that (i) m i=1 fi = {a1, . . . , an}, (ii) no fragment is included into another, and (iii) the atoms of each fragment are connected through joins (common variables).

Example 5 (CQ cover). Consider the query q(x, y) ← teachesTo(v, x) ∧ teachesTo(v, y), supervisedBy(x, w) ∧ supervisedBy(y, w) C, below, is a query cover for q:

C = {{teachesTo(v, x) ∧ supervisedBy(x, w)}, {teachesTo(v, y) ∧ supervisedBy(y, w)}}
Definition 2 (Fragment queries of a CQ). Let C = {f1, . . . , fm} be a cover of q. A fragment query q |f i ,1≤i≤m of q w.r.t. C is the subquery whose body consists of the atoms in fi and whose free variables are the free variables x of q appearing in the atoms of fi, plus the existential variables in fi that are shared with another fragment f j,1≤j≤m,j =i , i.e., on which the two fragments join.

Example 6 (Fragment queries of a CQ). The fragment queries of the query q(x, y) w.r.t. the cover C (Example 5) are:

q |f 1 (x, v, w) ← teachesTo(v, x) ∧ supervisedBy(x, w) q |f 2 (y, v, w) ← teachesTo(v, y) ∧ supervisedBy(y, w)
As we shall see in the next Section, not every cover of a query leads to a FOL reformulation. Specifically, we define: Definition 3 (Cover-based reformulation). Let C = {f1, . . . , fm} be a cover of q, and q FOL (x) ← m i=1 q FOL |f i a FOL query, where q FOL |f i , for 1 ≤ i ≤ m, is a FOL reformulation w.r.t. T of the fragment query q |f i of q.

q FOL is a cover-based reformulation of q w.r.t. T and C if it is a FOL reformulation of q w.r.t. T .

To exemplify cover-based FOL reformulations, one needs to chose a specific KB dialect, among all those enjoying FOL reducibility; we present examples in the next Section, when instantiating our framework to the DL-LiteR setting.

For now, it helps to see how we derive the SQL query corresponding to the cover-based reformulation. Each reformulated fragment query q FOL |f i is translated into an SQL query SQL i ; then, the overall query is of the form:

WITH SQL1 AS q FOL |f1 , SQL2 AS q FOL |f2 , . . . , SQLn AS q FOL |fn SELECT DISTINCT x FROM SQL1, SQL2, . . . , SQLn WHERE cond(1, 2, . . . , n) where cond(1, 2, . . . , n)
is the conjunction of the join predicates between all the subqueries. This leads to all the WITH-introduced subqueries being evaluated and materialized into intermediary tables2 , while the one with the largest number of results is run in pipeline fashion. The way in which each subquery is evaluated, then their results are joined, left to the DBMS to determine. The SELECT DISTINCT ensures set semantics for the query answers.

Problem statement. We assume given a query cost estimation function which, for any FOL query q, returns the cost of evaluating it through an RDBMS storing the ABox. Thus, reflects the operations (data access, joins, unions etc) applied on the ABox to compute the answers of a q FOL reformulation. The cost estimation also accounts for the effort needed to join the reformulated fragment query answers, in the most efficient way.

Problem 1 (Optimization problem). Given a CQ q and a KB K, the cost-driven cover-based query answering problem consists of finding a cover-based reformulation of q based on K with lowest (estimated) evaluation cost.

A cost estimation function is provided by most RDBMSs storing the ABox for instance through the SQL explain directive. One can also estimate costs outside the engine using well-known textbook formulas, as in e.g., [START_REF] Bursztyn | Optimizing reformulation-based query answering in RDF[END_REF]. We use both options in our experiments.

COVER-BASED QUERY ANSWERING IN DL-LiteR

We now instantiate our cover-based query answering technique to the popular setting of DL-LiteR. As already mentioned in Section 2, we use the simple CQ-to-UCQ reformulation technique of [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF] for establishing our results, and in our examples. However, our approach applies to any other FOL reformulation techniques for DL-LiteR, e.g., optimized CQ-to-UCQ or CQ-to-USCQ reformulation techniques, since these produce equivalent (though possibly syntactically different) FOL queries. Example 7 (Running example). Let K be the KB with TBox T = {Graduate ∃supervisedBy, supervisedBy worksWith} and ABox A = {PhDStudent(Damian), Graduate(Damian)}.

Consider the query q(x) ← PhDStudent(x)∧worksWith(x, y) ∧ supervisedBy(z, y), whose answer against K is {Damian}.

The UCQ reformulation of q is q UCQ (x) ← 4 i=1 q i (x) with: q 1 (x) ← PhDStudent(x) ∧ worksWith(x, y)

∧ supervisedBy(z, y) q 2 (x) ← PhDStudent(x) ∧ supervisedBy(x, y)

∧ supervisedBy(z, y) q 3 (x) ← PhDStudent(x) ∧ supervisedBy(x, y) q 4 (x) ← PhDStudent(x) ∧ Graduate(x) Above, q 1 has the body of q; q 2 is obtained from q 1 by specializing the atom worksWith(x, y) through a backward application of supervisedBy worksWith. q 3 (highlighted in blue) results from q 2 by replacing supervisedBy(x, y) and supervisedBy(z, y) with their most general unifier 3 . Finally, q 4 is obtained from q 3 , by specializing supervisedBy(x, y) through the backward application of Graduate ∃supervisedBy; we also show q 4 in blue to highlight its connection with q 3 . Now let C1 = {{PhDStudent(x), worksWith(x, y)}, {supervisedBy(z, y)}} be a cover of q. From Definition 2, the corresponding fragment queries are:

q1(x, y) ← PhDStudent(x) ∧ worksWith(x, y) q2(y) ← supervisedBy(z, y)
The reformulation of q1 using T is q UCQ 1 (x, y) ← 2 i=1 q i 1 (x, y), where

q 1 1 (x, y) ← PhDStudent(x) ∧ worksWith(x, y) q 2 1 (x, y) ← PhDStudent(x) ∧ supervisedBy(x, y)
q 2 1 is obtained from q 1 1 by the backward application of the constraint supervisedBy worksWith.

The reformulation of q2 using T is simply:

q UCQ 2 (y) ← supervisedBy(z, y) By Definition 3, the reformulation of q using C1 is the conjunction q JUCQ C 1 (x) ← q UCQ 1 (x, y) ∧ q UCQ 2 (y), which is clearly equivalent to the following UCQ obtained by distributing ∧ over ∨:

q UCQ C 1 (x) ← (q 1 1 (x, y) ∧ q UCQ 2 (y)) ∨ (q 2 1 (x, y) ∧ q UCQ 2 (y))
where the first and second disjuncts correspond to the CQs:

q 1 C 1 (x) ← PhDStudent(x) ∧ worksWith(x, y) ∧ supervisedBy(z, y) q 2 C 1 (x) ← PhDStudent(x) ∧ supervisedBy(x, y)
∧ supervisedBy(z, y)

Above, q 1 C 1 (x) and q 2 C 1 (x) are exactly q 1 and q 2 from the UCQ reformulation of q; however, q 3 and q 4 are missing from q JUCQ C 1 (x). Since q 4 derives from q 3 , the absence of both can be traced to the absence of q 3 . The reason C1 does not lead to q3 is that supervisedBy(x, y) ∧ supervisedBy(z, y) is not obtained while reformulating q1(x, y), thus the unification of these two atoms (which could have lead to q 3 ) is missed. In the CQ-to-UCQ reformulation of q, supervisedBy(x, y) ∧ supervisedBy(z, y) appears in q 2 because worksWith(x, y) ∧ supervisedBy(z, y) appears in q 1 . However, C1 separates the worksWith and supervisedBy atoms in different fragments. Reformulating them independently misses exactly the opportunity to produce q 3 and q 4 . Due to these absent subqueries, q JUCQ C 1 is not a FOL reformulation of q w.r.t. T , i.e., it fails to compute q's answer: ans(q JUCQ C 1 , ∅, A ) = ∅ while the answer of q against K is {Damian}. 3 Here, the mgu is supervisedBy(x, y) because x is the head variable; q 3 is equivalent to (and a minimal form of) q 2 , but in general, q 3 is only guaranteed to be contained in (or equivalent to) q 2 . More generally, given an input CQ and a TBox, each pair of query atoms begetting unifications during the CQ-to-UCQ reformulation of the whole query must not be separated by (must not be in different fragments of) a cover, in order for the corresponding cover-based reformulation to be a FOL reformulation. When this is the case, we say the cover is safe for query answering.

Thus, we are interested in a sufficient condition for a cover to be safe; intuitively, we must approximate (by some supersets) those sets of atoms which (directly or after some specializations) are pairwise unified by the CQ-to-UCQ algorithm, and ensure that each such atom set is in the same cover fragment.

Only atoms with the same predicate may unify. Thus, we identify for each predicate (i.e., concept or role name) occurring in a query, the set of all TBox predicates in which this predicate may turn through some sequence of atom specializations, i.e., backward constraint application and/or unification (the two operations applied by the technique of [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF] which we consider here). This is captured by the classical notion of dependencies between predicates within knowledge bases, Datalog programs, etc In DL-LiteR, this notion translates into the following recursive definition.

Definition 4 (Concept and role dependencies w.r.t. a TBox). Given a TBox T , a concept or role name N depends w.r.t. T on the set of concept and role names denoted dep(N ) and defined as the fixpoint of:

dep 0 (N ) = {N } dep n (N )= dep n-1 (N ) ∪ {cr(Y ) | Y X ∈ T and cr(X) ∈ dep n-1 (N )}
where cr(Y ) returns, for any input Y of the form Z, Z -or ∃Z (for some concept or role Z), the concept or role name Z itself.

Example 8 (Predicate dependencies). In the TBox of Example 7:

dep(PhDStudent)={PhDStudent} dep(Graduate)={Graduate} dep(worksWith)={worksWith, supervisedBy, Graduate} dep(supervisedBy)={supervisedBy, Graduate} Above, worksWith depends on supervisedBy because of the constraint supervisedBy worksWith; similarly, supervisedBy depends on Graduate due to the constraint Graduate ∃supervisedBy, thus worksWith also depends on Graduate. Definition 5 (Safe cover for query answering). A cover C of q is safe for query answering w.r.t. T (or safe in short) iff it is a partition of q's atoms such that two atoms whose predicates depend on a common concept or role name w.r.t. T are in a same fragment.

Note that while Definition 5 requires covers to be partitions, we will relax this restriction in Section 5.2.

Theorem 1 (Cover-based query answering). Let C be a safe cover for q w.r.t. T . The cover-based reformulation (Definition 3) of q based on C, using any CQ-to-UCQ (resp. CQ-to-USCQ) reformulation technique, yields a cover-based reformulation q FOL of q w.r.t. T .

Proof. The proof follows from that of correctness of the CQ-to-UCQ reformulation technique in [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF] for query answering. It directly extends to the use of any CQ-to-UCQ or CQ-to-USCQ reformulation technique for DL-LiteR, as, for any CQ and TBox, the FOL queries they compute are equivalent to the query produced by the technique described in [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF]. Soundness: for any T -consistent Abox A, ans(q FOL , ∅, A ) ⊆ ans(q, T , A ) holds.

Let t be a tuple in ans(q FOL , ∅, A ). From Definition 3, q FOL is q FOL (x) ← m i=1 q FOL |f i , thus t results from ti ∈ ans(q FOL |f i , ∅, A ), for 1 ≤ i ≤ m. Therefore, for 1 ≤ i ≤ m, ti ∈ ans(q |f i , T , A ) holds, because of the soundness of the CQ-to-UCQ reformulation technique. Hence, from Definition 3, t ∈ ans(q, T , A ) holds. Completeness: for any T -consistent Abox A, ans(q, T , A ) ⊆ ans(q FOL , ∅, A ) holds.

Let t be a tuple in ans(q, T , A ). Let q UCQ be its reformulation using the CQ-to-UCQ technique. From the completeness of this technique, t ∈ ans(q UCQ , ∅, A ) holds. Let q UCQ be α l=1 cq l , then necessarily for some l: t ∈ ans(cq l , ∅, A ) holds [START_REF] Calvanese | Tractable reasoning and efficient query answering in description logics: The DL-Lite family[END_REF].

Let q FOL be m i=1 q FOL |f i = m i=1 β i j=1 cqi,j. Since Definition 5 makes the reformulation of each fragment independent from another w.r.t. the CQ-to-UCQ technique, for any cq l in q UCQ : cq l = m i=1 cq i,k∈[1,β i ] holds. Hence, t ∈ ans(q FOL , ∅, A ) holds.

If a CQ-to-UCQ reformulation algorithm is used on fragment queries, the cover-based reformulation will be a JUCQ; otherwise, a CQ-to-USCQ reformulation of the fragment queries lead to a JUSCQ reformulation.

Note that the trivial one-fragment cover (comprising all query atoms) is always safe; in this case, our query answering technique reduces to just one reformulation, the CQ-to-UCQ one identified by previous reformulation algorithms from the literature.

Example 9 (JUCQ reformulation with a safe cover). We now consider the safe cover C2 = {{PhDStudent(x)}, {worksWith(x, y), supervisedBy(z, y)}}. The cover-based reformulation based on C2 is the JUCQ query q JUCQ (x) ← q UCQ 1 (x) ∧ q UCQ 2 (x), where:

q UCQ 1 (x) ← PhDStudent(x) q UCQ
2 (x) ← (worksWith(x, y) ∧ supervisedBy(z, y)) ∨ (supervisedBy(x, y) ∧ supervisedBy(z, y)) ∨ supervisedBy(x, y) ∨ Graduate(x)

Observe that ans(q JUCQ , ∅, A ) = {Damian} = ans(q, T , A ).

COVER-BASED QUERY OPTIMIZATION IN DL-LiteR

We study now the query answering optimization problem of Section 3 for DL-LiteR. We analyze a first optimization space in Section 5.1, before extending our discussion to a larger space in Section 5.2. Finally, we describe our search algorithms in Section 5.3.

Safe covers optimization space

Below, we study the space of safe covers for a given query and TBox. We start by identifying a particularly interesting one: Definition 6 (Root cover). We term root cover for a query q and TBox T the cover Croot obtained as follows. Start with a cover C1 where each atom is alone in a fragment. Then, for any pair of fragments f1, f2 ∈ C1 and atoms a1 ∈ f1, a2 ∈ f2 such that there exists a predicate on which those of a1 and a2 depend w.r.t. T , create a fragment f = f1 ∪ f2 and a new cover C2 = (C1 \ {f1, f2}) ∪ {f }. Repeat the above until the cover is stationary; this is the root cover, denoted Croot.

It is easy to see that Croot does not depend on the order in which the fragments are considered (due to the inflationary method building it). Further, Croot is safe, given that it keeps in a single fragment any two atoms whose predicates may be unified.

The following important lemma characterizes the structure of Croot fragments: Lemma 1 (Croot fragment structure). A fragment f in the root cover Croot is of one of the following two forms: 1. a singleton, i.e., f = {ai} for some query atom ai;

2. f = {ai 1 , . . . , ai n }, for n ≥ 2, and for every atom ai 1 ∈ f , there exists one atom ai 2 ∈ f , and a predicate bj in the TBox, such that both the predicates of ai 1 and of ai 2 depend on bj.

Proof. The lemma follows directly from the definition of Croot. Those atoms that do not share a dependency with any other atom appear in singleton fragments (case 1 above, as the construction of the root cover never groups them together). Atoms which share some dependencies (i.e., atoms whose predicates depend on one another) get unioned in fragments of the form 2 above.

Example 10 (Root cover). On the query and TBox from Example 7, the root cover is C2 from Example 9; worksWith(x, y) and supervisedBy(z, y) are in the same C2 fragment because worksWith depends on supervisedBy (cf. Example 8).

Proposition 1 states that Croot has the maximal number of fragments (equivalently, it has the smallest fragments) among all the safe covers for q and T ; its proof is based on Lemma 1.

Proposition 1 (Minimality of Croot fragments). Let Croot be the root cover for q and T , and C be another safe cover. For any fragment f ∈ Croot, and atoms ai, aj ∈ f , there exists a fragment f ∈ C such that ai, aj ∈ f , in other words: any pair of atoms together in Croot are also together in C.

From Proposition 1, we obtain: Theorem 2 (Safe cover space). Let C be a safe cover and f one of its fragments. Then, f is the union of some fragments from Croot.

Proof. Suppose that f is not a union of some fragments from Croot, and let us show a contradiction. In this case, f necessarily contains a strict, non-empty subset of a fragment of Croot. It follows that there are two atoms whose predicates depend on a common concept or role name w.r.t. T (as they were together in the fragment of Croot) that are not in a same fragment of C. Therefore C is not a safe cover, a contradiction. Safe cover lattice. Theorem 2 entails that the safe covers of a query q form a lattice, denoted Lq, whose precedence relationship is denoted ≺, where C1 ≺ C2 iff each fragment of C2 is a union of some fragments of C1. The lattice has as lower bound the single-fragment cover, and as upper bound the root cover. For convenience, we also use Lq to denote the set of all safe covers.

The size of the safe cover lattice is bounded by the number of partitions of the query atoms, a.k.a. the Bell number Bn for a query of n atoms; the bound occurs when there is no dependency between the atom predicates.

Generalized covers optimization space

A dependency-rich TBox leads to few, large fragments in Croot, thus to a relatively small number of alternative cover-based reformulations. In this section, we explore a notion of generalized covers, and propose a method for deriving FOL query reformulations from such covers. This enlarges our space of alternatives and thus potentially leads to a better cost-based choice of reformulation.

We call generalized fragment of a query q and denote f g a pair of q atom sets such that g ⊆ f . A generalized cover is a set of generalized fragments C = {f1 g1, . . . , fm gm} of a query q such that ∪ 1≤i≤m fi is the set of atoms of the query, and no fi is included in fj for 1 ≤ i = j ≤ m.

To a generalized fragment f g of a generalized cover C, we associate: Definition 7 (Generalized fragment query of a CQ). The generalized fragment query q |f g of q w.r.t. C is the subquery whose body consists of the atoms in f , and whose free variables are the free variables of q appearing in the atoms of g, plus the variables appearing in an atom of g that are shared with some atom in g , for some other generalized fragment f g of C.

In a generalized fragment query, atoms from f \ g only reduce (filter) the answers, without adding variables to the head. In particular, if f = g, q |f g coincides with the regular fragment query (Definition 2).

Given a generalized cover, the generalized cover-based reformulation of a query q is the FOL query

q g (x) ← m i=1 q FOL |f i g i if q g is a FOL reformulation.
If fi = gi for all the fragments fi gi, the generalized coverbased reformulation coincides with the regular cover-based one (Definition 3). As for simple cover-based reformulations, if fragments are reformulated into UCQs, the reformulated query is a JUCQ, whereas if they are reformulated into USCQs, the reformulated query is a JUSCQ.

The introduction of extra atoms in generalized fragments is reminiscent of the classical semijoin reducers [START_REF] Bernstein | Using semi-joins to solve relational queries[END_REF], whereas one computes R(x, y) y S(y, z) by (R(x, y) y πy(S(y, z))) y S(y, z) where y denotes the left semijoin, returning every tuple from the left-hand side input that joins with the right-hand input. The semijoin filters ("reduces") the R relation to only those tuples having a match in S. If there are few distinct values of y in S, πy(S(y, z)) is small, thus the y operator can be evaluated very efficiently. Further, if only few R tuples survive the y , the cost of the y operator likely decreases with the size of its input.

While the benefits of semijoins are well-known, there are many ways to introduce them in a given query, increasing the space of alternative plans to be considered by an optimizer. While some heuristics have been proposed to explore only some carefully chosen semijoin plans [START_REF] Stocker | Integrating semi-join-reducers into state of the art query processors[END_REF], we noted that RDBMS optimizers do not explore semijoin options, in particular for the very large queries resulting from the FOL reformulations of CQs. Generalized fragments mitigate this problem by intelligently using semijoin reducers to fasten the evaluation of the FOL reformulation by the RDBMS.

Generalized search space. We now define the space Gq of generalized covers for a given query q, based on the safe cover set Lq. A generalized cover C = {f1 g1, . . . , fm gm} is part of Gq iff:

• The cover Cs = {g1, . . . , gm} is safe, i.e., Cs ∈ Lq; • For each 1 ≤ i ≤ m, the atoms in fi form a connected graph.

Note that an atom a ∈ f , for f g ∈ C, has no impact on the head of the corresponding generalized fragment query; only the body of this query changes.

The size of Gq obviously admits that of Lq as a lower bound. For a query q of n atoms, a upper bound is Bn * n * 2 n-1 , where Bn is the n-th Bell number: for each safe cover C (of which there are at most Bn, see the previous section), each of the n atoms may, in the worst case, be added or not to all the fragments to which it does not belong. In the worst case, there are n -1 such fragments.

The core result allowing us to benefit of the performance savings of generalized covers in order to efficiently answer queries is: Theorem 3 (Gq cover-based query answering). The reformulation of a query q based on T and a generalized cover C ∈ Gq is a FOL reformulation of q w.r.t. T .

Proof. The proof follows from that of Theorem 1. It relies on the fact that, given a safe cover C = {g1, . . . , gm} of q and a generalized cover C = {f1||g1, . . . , fm||gm} of q, the queries q(x) ← m i=1 q |g i and q (x) ← m i=1 q |f i ||g i are equivalent, though each q |g i subsumes q |f i ||g i . Indeed, q is obtained from q by duplicating atoms already present in q, thus q e only adds redundancy w.r.t. q, hence remains equivalent to it.

Example 11 (Generalized cover-based reformulation). Recall the query and KB from Example 7. Let f0 = {PhDStudent(x)} and f1 = {worksWith(x, y), supervisedBy(z, y)} be the two fragments of the root cover Croot. Consider also the generalized cover C3 = {f1 f1, f2 f0}, where f2 = {PhDStudent(x), worksWith(x, y)}.

The generalized fragment query q |f 1 f 1 of q w.r.t. C3 is the subquery q |f 1 f 1 (x) ← worksWith(x, y) ∧ supervisedBy(z, y). Observe that y is not a free variable of q |f 1 f 1 , as it is neither a free variable of q nor a variable in f0, whereas f2 f0 is the only other fragment in the cover C3.

The generalized fragment query q |f 2 f 0 of q w.r.t. C3 is the subquery q |f 2 f 0 (x) ← PhDStudent(x) ∧ worksWith(x, y). Again, note that y is not a (free) variable of f0, and therefore it is not a free variable of q |f 2 f 0 .

Then, the generalized cover-based reformulation corresponding to C3 is the FOL query:

q g (x) ← q FOL |f 1 f 1 (x) ∧ q FOL |f 2 f 0 (x) where: q FOL |f 1 f 1 (x) ← (worksWith(x, y) ∧ supervisedBy(z, y)) ∨ supervisedBy(x, y) ∨ Graduate(x) q FOL |f 2 f 0 (x) ← (PhDStudent(x) ∧ worksWith(x, y)) ∨ (PhDStudent(x) ∧ supervisedBy(x, y)) ∨ (PhDStudent(x) ∧ Graduate(x))
Applying supervisedBy worksWith to q |f 1 f 1 leads to:

(worksWith(x, y) ∧ supervisedBy(z, y)) ∨ (supervisedBy(x, y) ∧ supervisedBy(x, y)) ≡ (worksWith(x, y) ∧ supervisedBy(z, y))

∨ supervisedBy(x, y)

Then, applying Graduate ∃supervisedBy, we obtain the reformulation of q |f 1 f 1 w.r.t. TBox T , i.e., q FOL |f 1 f 1 . Similarly, applying to q |f 2 f 0 the constraint supervisedBy worksWith and subsequently Graduate ∃supervisedBy leads to q FOL |f 2 f 0 . Note that ans(q g , ∅, A ) = {Damian} = ans(q, T , A ).

Cost-based cover search algorithms

Our first algorithm, EDL (Exhaustive Covers for DL), starts from Croot and builds all Lq covers by unioning fragments, and all Gq covers by adding atoms; the algorithm appears in [START_REF]Efficient query answering in the presence of DL-LiteR constraints[END_REF].

The second one, GDL (Greedy Covers for DL) (Algorithm 1) works in a greedy fashion. It is based on exploring, from a given cover C, the set of possible next moves (lines 2-4 and 5-7); these are all the covers that may be created from C by unioning two of its fragments or by enlarging one of its fragments, i.e., turning a fragment f g into f ∪ {a} g for some query atom a sharing a variable Algorithm 1: Greedy Cover Search for DL-LiteR (GDL) with f . The best one seen at a given point (w.r.t. the estimated evaluation cost) is kept as the selected next move in the move variable. At the end of this exploration step (line 9), the best move is applied, leading to the new best cover C from which the next exploration step starts. The exploration stops when no possible next move improves the cost of the currently selected best cover C.

Input : CQ q(x) ← a1 ∧ • • • ∧ an, KB K Output: Best cover for reformulating q 1 C ← Croot; move ← ∅; 2 foreach f1, f2 ∈ C do
When unioning two fragments, decreases if the resulting fragment is more selective than the two fragments it replaces. Therefore, the RDBMS may find a more efficient way to evaluate the query of this fragment, and/or its result may be smaller, making the evaluation of q FOL based on the new cover C faster. When adding an atom to an extended fragment, decreases if the conditions are met for the semijoin reducer to be effective (Section 5.2). In our context, many such opportunities exist, as our experiments show.

EXPERIMENTAL EVALUATION

We implemented our cover-based query answering approach in Java 8; the source code has about 10.000 lines, including the statistics and cost estimation (see below).

Experimental settings

First, we used PostgreSQL v9.3.2 to store the data and evaluate FOL query reformulations. We stored a unary table for each concept and a binary table for each role, and built all one-and two-attribute indexes, respectively, on those tables.

Second, we used the IBM DB2 Express-C 10.5. We chose it because (i) we found out in prior work [START_REF] Bursztyn | Optimizing reformulation-based query answering in RDF[END_REF] (and confirm below) that it evaluates large FOL reformulations better than Postgres, and (ii) it provides a relatively recent, smart storage layout for RDF graphs [START_REF] Bornea | Building an efficient RDF store over a relational database[END_REF], intelligently bundling assertions into a small set of tables with potentially many attributes, so that the roles to which an individual participates are stored, to the extent possible, in the same tuple. This reduces the number of joins needed for query evaluation, and has been shown [START_REF] Bornea | Building an efficient RDF store over a relational database[END_REF] to improve query performance. However, DB2 does not support reasoning, i.e., it only provides query evaluation. For DB2, we report results based on the concept and role tables (denoted simple layout) and on the RDF layout of [START_REF] Bornea | Building an efficient RDF store over a relational database[END_REF].

In the simple layout, as customary in efficient Semantic Web data management systems, e.g., [START_REF] Neumann | The RDF-3X engine for scalable management of RDF data[END_REF], facts are dictionary-encoded into integers, prior to storing them in the RDBMS. The TBox and predicates dependencies are stored in memory.

Hardware. The database servers ran on an 8-core Intel Xeon E5506 2.13 GHz machine with 16GB RAM, using Mandriva Linux r2010.0. Datasets, queries, and reformulation engine. We used two LUBM ∃ benchmark KBs, comprising a DL-LiteR TBox and two ABoxes of 15 million, respectively, 100 million facts, obtained using the EUDG data generator [START_REF] Lutz | The combined approach to OBDA: taming role hierarchies using filters[END_REF]. The TBox consists of 34 roles, 128 concepts and 212 constraints.

We devised a set of 13 CQs, reported in [START_REF]Efficient query answering in the presence of DL-LiteR constraints[END_REF]. The queries have between 2 and 10 atoms, with an average of 5.77 atoms. Their UCQ reformulations are unions of 35 to 667 CQs, 290.2 on average. This parameter characterizing the query can be seen as a (rough) measure of the complexity of its reformulation.

We relied on the RAPID [START_REF] Chortaras | Optimized query rewriting for OWL 2 QL[END_REF] CQ-to-UCQ reformulation tool to reformulate (simple or generalized) fragment queries (Definitions 2 and 7); any other CQ-to-UCQ or CQ-to-USCQ reformulation technique could have been used instead.

Cost estimation function.

For the cost function estimation , we first used the RDBMS cost estimation for the SQL translation of each candidate FOL reformulation produced by our algorithms (explain in Postgres and db2expln in DB2).

Further, for the simple layout, we implemented our own Javabased cost estimation, based on statistics on the stored data (cardinality and number of distinct values in each stored table attribute), and on the uniform distribution and independent distributions assumptions. Better RDF cardinality estimation techniques such as [START_REF] Neumann | Characteristic sets: Accurate cardinality estimation for RDF queries with multiple joins[END_REF] may be used to improve the accuracy of our cost model.

Our cost model assumes joins run in linear time in the size of the input (e.g., hash joins when sufficient memory is available), and estimates data access costs by comparing all the applicable indexes. We calibrated the cost model for each of Postgres and DB2, by empirically determining the values of a few constant coefficients of the cost model formulas. The cost model is detailed in [START_REF]Efficient query answering in the presence of DL-LiteR constraints[END_REF].

Search space and EDL running time

We first studied the number of covers in Lq and Gq (recall Section 5). Our workload features some queries of 2 atoms, and the immediately larger ones have 6; the number of generalized covers is prohibitively high for 6 or more atoms. Thus, we derived from our first (six-atoms) query Q1 a set of queries Ai, 3 ≤ i ≤ 6, each of which is a star-join of i atoms on a common subject; in particular, A6 is Q1. The sizes of the resulting search spaces are reported in Table 6; for A6 we stopped the search at 20.003 generalized covers (there were more). This demonstrates that exploring the full Gq space is in general not feasible. Thus, in the sequel, we do not use EDL for our tests, as it is impractical beyond (very) small queries. Table 6 also shows the number of covers explored by the greedy GDL: these grow very moderately with the query size.

Finally, for A3-A6, the running times of the best reformulation found by EDL and GDL (limited at 20.000 covers for A6) coincided. In general this is not guaranteed, but it is still an encouraging indicator of the good options found by GDL. 4. the JUCQ reformulation corresponding to the best-performing (safe or generalized) cover, found by our algorithm GDL, using our cost estimation (ext).

Evaluation time of reformulated queries

GDL running time is not reported in these graphs (see Section 6.4).

We first analyze the top graph corresponding to LUBM ∃ 15M. It shows, first, that the UCQ reformulation is inefficient (one order of magnitude slower than the best reformulation found, e.g., for Q5 and Q9). Second, the cover derived from Croot may also be very inefficient, in some cases (Q6-Q8, Q13) much worse than the UCQ. These are both very large and complex queries; Figure 2 demonstrates that Postgres' optimizer called directly on the fixed-form reformulation may performed quite poorly. The GDL-selected covers, in contrast, lead to the best-performing reformulations for all queries (often by an order of magnitude). Thus, our cost-based approach helps ask the RDBMS the optimization question it can best answer, among its equivalent formulations from the search space Gq. Striking exceptions are Q9, Q10 which have both many atoms and complex reformulations, and Q11 which has 2 atoms but the maximum number (667) of reformulations. Here, the GDL reformulations selected using the RDBMS cost model perform very poorly, whereas the ones based on our own cost estimation are much faster. This may be because Postgres takes drastic shortcuts when estimating the cost of an extremely large query; in contrast, our cost estimation treats uniformly queries of all sizes. Recall that Postgres' optimizer always has the last word in chosing how to evaluate the reformulation we select, using its own cost model. Thus, the difference can only be attributed to the cost estimation. The bottom graph in Figure 2 corresponds to LUBM ∃ 100M; note the logarithmic y axis. Overall, the findings are the same: the UCQ and (especially in this case) the Croot reformulation perform poorly, while those picked by GDL are faster than the standard UCQ by a factor of up to 6.6 (Q3). Table 6: Search space sizes for queries A3 to A6.

Evaluation on DB2. The graph at the top of Figure 3 shows the evaluation time for DB2, on LUBM ∃ 15M, of seven reformulations: the same four which we ran on Postgres, to which we add, on the RDF layout [START_REF] Bornea | Building an efficient RDF store over a relational database[END_REF]: the UCQ reformulation, the one based on Croot, and the ones selected by GDL with the help of the RDBMS cost model. We did not code a cost estimation corresponding to this RDF-specific store, since (i) an accurate model of data access costs under such a complex layout (determined by running a linear programming solver etc.) seemed very hard to attain outside the server and (ii) DB2's cost model performed similarly to (or better than) ours for all the GDL-selected covers, on the simple layout. Thus, replacing it with our own seemed unlikely to improve the performance. Note the logarithmic y axis of the graph. First, note that five bars are missing (replaced by the vertical lines), one for Q9 and four for Q10. They all correspond to reformulations against the RDF layout. The server error was "The statement is too long or too complex. Current SQL statement size is 2,247,118" for the UCQ of Q9, and the same error (with similar query sizes) in the other cases. This shows that the cummulated impact of, first, the DB2RDF storage layout (which leads to IF... THEN... ELSE and nesting in the SQL query corresponding to a simple CQ), and second, of ontology-based reformulation, yields queries too large for evaluation. For illustration, the SQL versions of Q1 before and after UCQ reformulation on DB2's RDF store appear at http://bit.ly/1TqeVMA. In cases where DB2 handled them, the reformulations corresponding to the UCQ, Croot and GDL on the RDF layout performed very poorly, up to 1 (UCQ) or even 4 (Croot) orders of magnitude worse than the best reformulations identified. Thus, our (somehow unexpected) conclusion is that the RDF-specific layout, while interesting for CQ evaluation, is not the best alternative when evaluating queries issued from reformulation against an ontology.

Focusing only on the simple layout, we see that the cost-unaware UCQ and Croot-derived reformulations perform again poorly, while the GDL ones perform best and in many cases coincide. The two cost estimations behaved mostly the same, except that our estimation worked better for Q8 and worse for Q9. Overall, our chosen reformulations lead to performance gains of up to a factor of 9 w.r.t. the UCQ and/or Croot on the simple layout, for which we found DB2's cost estimation quite reliable.

At the bottom of Figure 3 we show the evaluation times on LUBM ∃ 100M for the first eight among the ten reformulations shown in the top graph (we gave up GDL on the RDF layout, given our experience on the smaller dataset). The four execution errors (grey vertical lines) on the UCQ and Croot reformulations on the RDF layout are again due to overly large SQL queries. The first four alternatives are overall the worse, with Croot and at a lesser extent UCQ on the RDF layout performing very poorly. When focusing on the simple layout only, we notice that the cost-based reformulations improve over the simple UCQ performance by a factor of up to 36 (4.85 on average). There is an exception for Q8, where the UCQ was best; in this case, both DB2's and our cost estimations were inaccurate, which we believe cannot be avoided in all cases. DB2's estimation lead to significantly better reformulations than ours for the queries Q2, Q8, Q9 and Q12, while our cost model was clearly better for Q13. Overall, we found DB2's cost estimation more accurate than our own (while the opposite holds 1.E+00 for Postgres). By inspecting query plans, we confirmed that DB2 and Postgres do not apply any CSE across union terms. The better performance of DB2 is likely due to efficient runtime support for repeated scans [START_REF] Lang | Increasing buffer-locality for multiple relational table scans through grouping and throttling[END_REF].

In all experiments presented in this section, GDL ran between 1 ms (for 2-atom queries) to 207 ms (for the larger Q1); this includes the time to estimate costs using our model. Asking for RDBMSs' cost estimations is more expensive, as we report in [START_REF]Efficient query answering in the presence of DL-LiteR constraints[END_REF]; when the estimation is accessible through JDBC, the overhead may still be interesting given the performance savings.

Finally, always (when using our cost model) and about half of the time (with the RDBMS cost model), GDL picked a generalized cover. This confirms the interest of searching in the Gq space.

Time-limited GDL

We have measured the running time of algorithm GDL, and found that in all cases, most of its running time is spent estimating reformulation costs: GDL running time other than cost estimation is at most 24 ms; the time spent estimating costs with our Java-based model is up to 100 ms; cost estimation through Postgres (accessed via JDBC) takes up to 10 6 ms, and cost estimation through DB2 is up to 10 7 ms. Cost estimation times grow with the size of the query (and is 1 ms for all algorithms for the smallest queries of 2 atoms). Clearly, the overhead of cost estimations through Postgres and DB2 (through JDBC calls, respectively, a system call to an executable DB2 utility) can be prohibitive. Time-limited GDL. Therefore, we investigated a time-limited version of GDL, which we stopped after 20 ms. We compared the running time of the cover found by GDL after only 20 ms, with that of the cover found by GDL allowed to run to completion. We found [START_REF]Efficient query answering in the presence of DL-LiteR constraints[END_REF] that the running times are quite close, demonstrating that interesting covers are quickly found. Thus, we find time-limited GDL performs well in practice, for a modest overhead.

Experiment conclusions

Our experiments show that plain UCQ reformulation is evaluated poorly by both Postgres and DB2, even more so (or even fails) on DB2's RDF-specific data layout. On the simple layout, the fixed cover-based reformulation corresponding to the root cover Croot also performs very poorly. In contrast, GDL-selected reformulation improve over the UCQ in all 13 queries ×2 systems ×2 datasets but one, and they do so by up to a factor of 36. Our cost estimation helped w.r.t. Postgres' explain, but when using DB2, we find db2explain's estimation more accurate overall.

The generalized cover space has prohibitive size, thus EDL is impractical. In contrast, our greedy GDL is efficient when used with a low-overhead cost estimation (such as the one we implemented), and effective in optimizing reformulated queries. GDL attains most of its cost reductions early on during the search, making it a robust tool for improving reformulated query answering performance.

RELATED WORK AND CONCLUSION

We proposed a novel framework for any OBDA setting enjoying FOL reducibility of query answering, for which we studied a space of alternative FOL reformulations to evaluate through an RDBMS. We applied this framework to the DL-LiteR description logic, and experimentally demonstrated its performance benefits.

Our approach departs from the literature focused on a single FOL query reformulation, where optimization mainly reduces to producing fast a UCQ reformulation as minimized as possible: [START_REF] Chortaras | Optimized query rewriting for OWL 2 QL[END_REF][START_REF] De Giacomo | MASTRO: A reasoner for effective ontology-based data access[END_REF][START_REF] Venetis | Incremental query rewriting for OWL 2 QL[END_REF][START_REF] König | A sound and complete backward chaining algorithm for existential rules[END_REF][START_REF] Virgilio | NYAYA: A system supporting the uniform management of large sets of semantic data[END_REF][START_REF] Orsi | Optimizing query answering under ontological constraints[END_REF][START_REF] Gottlob | Query rewriting and optimization for ontological databases[END_REF] consider DL-LiteR, existential rules and Datalog ± . [START_REF] Thomazo | Compact rewriting for existential rules[END_REF] studies CQ-to-USCQ reformulation for existential rules encompassing DL-LiteR; USCQ reformulations are shown to perform overall better than UCQ ones in an RDBMS. We build on these works to devise CQ-to-JUCQ and CQ-to-JUSCQ reformulation techniques, and used cost estimations to speed up reformulated query evaluation. Our generalized covers can be seen as adapting semijoin-based reducers to the query answering setting. [START_REF] Rosati | Improving query answering over DL-Lite ontologies[END_REF] proposes a cost-unaware CQ-to-Datalog reformulation technique; it produces a non-recursive Datalog program, which amounts to a JUCQ.

One contribution of this work is an optimization framework (Section 3) for any formalism for which query answering is FOL-reducible, e.g., some Description Logics, Datalog ± and Existential Rules fragments. Our previous work [START_REF] Bursztyn | Optimizing reformulation-based query answering in RDF[END_REF] is a particular case of this framework for the RDFS ontology language, which corresponds only to the constraints 1, 4, 5 and 11 from Table 3, while the DL-LiteR language we use (foundational for W3C's standard for very large Semantic Web data management OWL2 QL ) comprises 22 such constraints. When reformulating under this rich language, some covers are unsafe (recall Example 7), while in [START_REF] Bursztyn | Optimizing reformulation-based query answering in RDF[END_REF] any cover leads to a correct query reformulation for the 4 constraints considered there. Thus, the other contributions of our work are: to identify and characterize safe covers, guaranteed to lead to reformulations, and a carefully chosen extra space of generalized covers which lead to equivalent FOL reformulations and often improve query performance. Our EDL and GDL optimization algoritms (Section 5.3) respectively explore exhaustively and greedily this DL-LiteR-specific space to speed up reformulation-based query answering under DL-LiteR constraints. Another difference w.r.t. [START_REF] Bursztyn | Optimizing reformulation-based query answering in RDF[END_REF] is that this work explores the usage of DB2's RDF store, and find it unsuitable to the complex queries resulting from reformulation.

In the database and Semantic Web communities, there have been intense efforts invested in developing scalable RDF data management platforms, including distributed ones; see e.g., the survey [START_REF] Kaoudi | RDF in the Clouds: A Survey[END_REF]. However, these platforms do not take constraints into account, and thus only support query evaluation, not query answering. Our work is the first to consider optimized algorithms for answering queries under DL-LiteR constraints through relational databases.

In the area of cost-based complex query optimization, MQO/CSE algorithms have been described e.g., in [START_REF] Giannikis | Shared workload optimization[END_REF][START_REF] Manegold | A multi-query optimizer for Monet[END_REF][START_REF] Neumann | Generating optimal DAG-structured query evaluation plans[END_REF][START_REF] Zhou | Efficient exploitation of similar subexpressions for query processing[END_REF]. Oracle includes several query rewrites to improve nested query performance, among which subquery coalesce reduces some redundancy and thus can be seen as related to CSE [START_REF] Bellamkonda | Enhanced subquery optimizations in Oracle[END_REF]. A different class of techniques [START_REF] Lang | Increasing buffer-locality for multiple relational table scans through grouping and throttling[END_REF][START_REF] Zukowski | Cooperative scans: Dynamic bandwidth sharing in a DBMS[END_REF] improve the performance of multiple concurrent reads of a table; this can be seen as a physical-level MQO only applying to one-table plans. Such techniques are implemented in DB2, and they indeed help evaluating our reformulations. However, as stated in Section 2.3, our approach does not require detecting repeated subexpressions.

We plan to extend our framework to efficient query answering using materialized CQ views, which may partially or completely rewrite the CQs appearing in the reformulated fragments.

Figure 1 :

 1 Figure 1: Optimized FOL reformulation approach.

3 if 9 C 10 move ← ∅; 11 /

 391011 (move is empty and C.union(f1, f2) est. cost ≤ C est. cost) or (C.union(f1, f2) est. cost < apply(move) est. cost) then 4 move ← (C, f1, f2); 5 foreach f ∈ C, a ∈ q s.t. a is connected to f do 6 if (move is empty and C.enlarge(f, a) est. cost ≤ C est. cost) or (C.enlarge(f, a) est. cost < apply(move) est. cost) then 7 move ← (C, f, {a}); 8 while move = ∅ do ← apply(move); // the cover obtained from that move / Gather move starting from C as was done at lines 2-7 above 12 return C;

Figure 2

 2 Figure 2 depicts the evaluation time, using Postgres with the simple layout, of four FOL reformulations:1. the UCQ produced by the RAPID[START_REF] Chortaras | Optimized query rewriting for OWL 2 QL[END_REF] reformulation engine; 2. the JUCQ reformulation based on Croot; 3. the JUCQ reformulation corresponding to the best-performing (safe or generalized) cover, found by our algorithm GDL, using Postgres' cost estimation (RDBMS);

Figure 2 :

 2 Figure 2: Evaluation time (ms) on Postgres on LUBM ∃ 15M (top) and 100M (bottom).

Figure 3 :

 3 Figure 3: Evaluation time (ms) on DB2 and LUBM ∃ 15M (top) and 100M (bottom).

Table 1 :

 1 Conjunctive query (Section 2.2) UCQ: Union of conjunctive queries (Section 2.2) JUCQ: Join of a set of UCQs (Section 2.2) q |f i : Fragment query of a CQ (Definition 2) dep(N ): Concepts and role names on which N depends (Definition 4) Main notations introduced in this work.

	Croot: Root cover (Definition 6)
	Lq: Lattice of safe covers (Section 5.1)
	Gq: Space of generalized covers (Section 5.1)
	f ||g: Generalized query fragment (Definition 7)
	q g : Generalized cover-based reformulation (Section 5.2)

A: Database of facts (Section 2.1) T : Ontology (semantic rules) (Section 2.1) K: Knowledge base K = T , A (Section 2.1) Ci: Concept (unary relation) (Section 2.1) Rj: Role (binary relation) (Section 2.1) CQ:

Table 4 :

 4 FOL query dialects.

We checked this on Postgres, DB2, and MySQL plans; according to Paul Larson (among the authors of[START_REF] Zhou | Efficient exploitation of similar subexpressions for query processing[END_REF]), no major RDBMS engine as of

April 2016 has a comprehensive MQO approach.

For performance, these SQL subqueries use DISTINCT to reduce the size of the intermediate materialized results.

Acknowledgments. We thank Guy Lohman for his insights on cost-based optimization in DB2, and Mario Briggs and Priya Ranjan Sahoo for help with DB2's RDF store [9]. The work has been partially funded the PIA Datalyse and the ANR PAGODA projects.