<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Extended Caching and Backjumping for Expressive Description Logics</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Andreas Steigmiller</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Thorsten Liebig</string-name>
          <email>liebig@derivo.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Birte Glimm</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Ulm University</institution>
          ,
          <addr-line>Ulm, Germany, &lt;first name&gt;.&lt;last</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>derivo GmbH</institution>
          ,
          <addr-line>Ulm</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Due to the wide range of modelling constructs supported by the expressive DL SROIQ, the typically used tableau algorithms in competitive reasoning systems such as FaCT++ [16], HermiT,3 or Pellet [14] have a very high worst-case complexity. The development of tableau optimisations that help to achieve practical e ciency is, therefore, a longstanding challenge in DL research (see, e.g., [11, 17]). A very e ective and widely implemented optimisation technique is “caching”, where one caches, for a set of concepts, whether they are known to be, or can safely be assumed to be, satisfiable or unsatisfiable [4]. If the set of concepts appears again in a model abstraction, then a cache-lookup allows for skipping further applications of tableau rules. Unfortunately, with increasing expressivity naively caching become unsound, for instance, due to the possible interaction of inverse roles with universal restrictions [1, Chapter 9]. With this contribution we push the boundary of the caching optimisation to the expressive DL SROIQ. The developed unsatisfiability caching method is based on a sophisticated dependency management, which further enables better informed tableau backtracking and more e cient pruning (Section 3). Our techniques are grounded in the widely implemented tableau calculus for SROIQ [9], which makes it easy to transfer our results into existing implementations. The optimisations are integrated within a novel reasoning system, called Konclude [13]. Our empirical evaluation shows that the proposed optimisations result in significant performance improvements (Section 4).</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Motivation</title>
      <p>Model construction calculi, such as tableau, decide the consistency of a knowledge
base K by trying to construct an abstraction of a model for K , a so-called “completion
graph”. A completion graph G is a tuple (V; E; L; ,˙), where each node x 2 V represents
one or more individuals, and is labelled with a set of concepts, L(x), which the
individuals represented by x are instances of; each edge hx; yi represents one or more pairs of
individuals, and is labelled with a set of roles, L(hx; yi), which the pairs of individuals
represented by hx; yi are instances of. The relation ,˙ records inequalities, which must
hold between nodes, e.g., due to at-least cardinality restrictions.
3 http://www.hermit-reasoner.com</p>
      <p>The algorithm works by initialising the graph with one node for each Abox
individual/nominal in the input KB, and using a set of expansion rules to syntactically
decompose concepts in node labels. Each such rule application can add new concepts
to node labels and/or new nodes and edges to the completion graph, thereby
explicating the structure of a model. The rules are repeatedly applied until either the graph is
fully expanded (no more rules are applicable), in which case the graph can be used to
construct a model that is a witness to the consistency of K , or an obvious contradiction
(called a clash) is discovered (e.g., both C and :C in a node label), proving that the
completion graph does not correspond to a model. The input knowledge base K is
consistent if the rules (some of which are non-deterministic) can be applied such that they
build a fully expanded, clash free completion graph. A cycle detection technique called
blocking ensures the termination of the algorithm.
2.1</p>
      <sec id="sec-1-1">
        <title>Dependency Tracking</title>
        <p>Dependency tracking keeps track of all dependencies that cause the existence of
concepts in node labels, roles in edge labels as well as accompanying constrains such as
inequalities that must hold between nodes. Dependencies are associated with so-called
facts, defined as follows:
Definition 1 (Fact) We say that G contains a concept fact C(x) if x 2 V and C 2 L(x),
G contains a role fact r(x; y) if hx; yi 2 E and r 2 L(hx; yi), and G contains an inequality
fact x ,˙ y if x; y 2 V and (x; y) 2 ,˙. We denote the set of all (concept, role, or inequality)
facts in G as FactsG.</p>
        <p>Dependencies now relate facts in a completion graph to the facts that caused their
existence. Additionally, we annotate these relations with a running index, called dependency
number, and a branching tag to track non-deterministic expansions:
Definition 2 (Dependency) Let d be a pair in FactsG FactsG. A dependency is of the
form dn;b with n 2 IN0 a dependency number and b 2 IN0 a branching tag.</p>
        <p>We inductively define the dependencies DepG for G: If G is an initial completion
graph, then DepG = ;. We initialise the beginning for the next dependency numbers nm
with 1 if DepG = ;; otherwise, nm = 1 + maxfn j dn;b 2 DepGg. Let R be a tableau rule
applicable to a completion graph G. If R is non-deterministic, the next non-deterministic
branching tag bR for R is 1 + maxff0g [ fb j dn;b 2 DepGgg; for R deterministic, bR = 0.
Let G0 be the completion graph obtained from G by applying R with c0; : : : ; ck the facts
to satisfy the preconditions of R and c00; : : : ; c0` the newly added facts in G0, then
DepG0 = DepG [ f(c0j; ci)n;b j 0
i
k; 0
j</p>
        <p>`; n = nm + ( j k) + i;
b = maxffbRg [ fb0 j (ci; c)n0;b0 2 DepGggg:
The branching tag indicates which facts were added non-deterministically:
Definition 3 (Non-deterministic Dependency) For dn;b 2 DepG with d = (c1; c2), let
Dd = f(c2; c3)n0;b0 j (c2; c3)n0;b0 2 DepGg. The dependency dn;b is a non-deterministic
dependency in G if b &gt; 0 and either Dd = ; or maxfb0 j (c; c0)n0;b0 2 Ddg &lt; b.</p>
        <p>L(a0) = f (9r:(A u (9r:(8r :B)))) ; (8r::B) ; (C t D) ; C g
L(x1) = f (A u (9r:(8r :B))) ; :B ; A ; (9r:(8r :B)) ; B g</p>
        <p>f 6;0
c3;0
d4;0</p>
        <p>e5;0
i9;0
h8;0
j10;0
k11;0
a1;1</p>
        <p>a0 : (9r:(A u (9r:(8r :B)))) a0 : (8r::B) a0 : (C t D):
Thus, the completion graph is initialised with the node a0, which has the three
concepts in its label. Initially, the set of dependencies is empty. For the concepts and roles
added by the application of tableau rules, the dependencies are shown with dotted lines,
labelled with the dependency. The dependency number increases with every new
dependency. The branching tag is only non-zero for the non-deterministic addition of C to
the label of a0 in order to satisfy the disjunction (C t D). Note the presence of a clash
due to B and :B in the label of x1.
3</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Extended Caching and Backtracking</title>
      <p>In the following we introduce improvements to caching and backjumping by
presenting a more informed dependency directed backtracking strategy that also allows for
extracting precise unsatisfiability cache entries.
3.1</p>
      <sec id="sec-2-1">
        <title>Dependency Directed Backtracking</title>
        <p>
          Dependency directed backtracking is an optimisation that can e ectively prune
irrelevant alternatives of non-deterministic branching decisions. If branching points are not
involved in clashes, it will not be necessary to compute any more alternatives of these
branching points, because the other alternatives cannot eliminate the cause of the clash.
To identify involved non-deterministic branching points, all facts in a completion graph
are labelled with information about the branching points they depend on. Thus, the
united information of all clashed facts can be used to identify involved branching points.
A typical realisation of dependency directed backtracking is backjumping [
          <xref ref-type="bibr" rid="ref1 ref17">1, 17</xref>
          ], where
the dependent branching points are collected in the dependency sets for all facts.
3.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Unsatisfiability Caching</title>
        <p>Another widely used technique to increase the performance of a tableau implementation
is caching. For unsatisfiability caching, one caches sets of concepts that are known to
be unsatisfiable. For such a cache entry, it holds that any superset is also unsatisfiable.
Thus, if, in a future tableau expansion, one encounters a node label that is a superset of
a cache entry, one can stop expanding the branch.</p>
        <p>Analogously to unsatisfiability caching, one can define satisfiability caching and
many systems combine both caches. We focus here, however, on unsatisfiability caching
since the two problems are quite di erent in nature and the required data structures for
an e cient cache retrieval can di er significantly. Before we define how and when we
create cache entries, we formalise our notion of an unsatisfiability cache.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Definition 4 (Unsatisfiability Cache) Let K be a knowledge base and ConK the set</title>
      <p>of (sub-)concepts that occur in K . An unsatisfiability cache UCK for K is a subset of
2ConK such that each cache entry S 2 UCK is unsatisfiable w.r.t. K . An unsatisfiability
retrieval for UCK and a completion graph G for K takes a set of concepts S ConK
from a node label of G as input. If UCK contains a set S? S , then S? is returned;
otherwise, the empty set is returned.</p>
      <p>
        Although node labels can have many concepts that are not involved in any clashes,
most implementations cache complete node labels. One reason for this might be that
the often used backjumping [
        <xref ref-type="bibr" rid="ref1 ref17">1, 17</xref>
        ] only allows the identification of all branching points
involved in a clash, but there is no information about how the clash is exactly caused. We
refer to this form of caching as label caching. Systems that use label caching typically
also only check whether the exact node label from the current tableau is in the cache.
      </p>
      <p>
        The creation of cache entries rapidly becomes di cult with increasing expressivity
of the used DL. Already with blocking for the DL ALC, one can easily generate invalid
cache entries [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Apart from a node x with a clash in its label, the question is which
other node labels are also unsatisfiable. For ALC, this is the case for all labels from
x up to the ancestor y with the last non-deterministic expansion. With ALCI, a
nondeterministic rule application on a descendant node of x can be involved in the clash,
which makes it di cult to determine node labels that can be cached. Nevertheless,
caching techniques for ALCI have been proposed [
        <xref ref-type="bibr" rid="ref2 ref3 ref5">2, 3, 5</xref>
        ], but the di culty further
increases in the presence of nominals and, to the best of our knowledge, the problem
of caching with inverses and nominals has not yet been addressed in the literature. In
order to avoid unsound results, current systems often deactivate caching in presence of
inverse roles or at least in presence of nominals, especially with combined satisfiability
and unsatisfiability caching [
        <xref ref-type="bibr" rid="ref14 ref17">14, 17</xref>
        ].
      </p>
      <p>
        The extraction of a small still unsatisfiable subset of a node label would yield better
cache entries. The use of subset retrieval methods for the cache further increases the
number of cache hits. We call such a technique precise caching. Although techniques
to realise e cient subset retrieval exist [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], unsatisfiability caches that use such subset
retrieval are only implemented in very few DL reasoners [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>Going back to the example in Figure 1, for the node x1 the set f:B; (9r:(8r :B))g
could be inserted into the cache as well as f:B; (Au(9r:(8r :B)))g. The number of cache
entries should, however, be kept small, because the performance of the retrieval
decreases with an increasing number of entries. Thus, the insertion of concepts for which
the rule application is cheap (e.g., concept conjunction) should be avoided. Concepts
that require the application of non-deterministic or generating rules are more suitable,
because the extra e ort of querying the unsatisfiability cache before the rule
application can be worth the e ort. Optimising cache retrievals for incremental changes further
helps to e ciently handle multiple retrievals for the same node with identical or slightly
extended concept labels.</p>
      <p>The creation of new unsatisfiability cache entries based on dependency tracking
can be done during backtracing, which is also coupled with the dependency directed
backtracking as described next.
3.3</p>
      <sec id="sec-3-1">
        <title>Dependency Backtracing</title>
        <p>The dependency tracking defined in Section 2.1 completely retains all necessary
information to exactly trace back the cause of the clash. Thus, this backtracing is qualified
to identify all involved non-deterministic branching points for the dependency directed
backtracking and also to identify small unsatisfiable sets of concepts that can be used
to create new unsatisfiability cache entries.</p>
        <p>Algorithm 1 performs the backtracing of facts and their tracked dependencies in the
presence of inverse roles and nominals. If all facts and their dependencies are collected
on the same node while backtracing, an unsatisfiability cache entry with these facts can
be generated, assuming all facts are concept facts. As long as no nominal or Abox
individual occurs in the backtracing, the unsatisfiability cache entries can also be generated
while all concept facts have the same node depth. Thus, an important task of the
backtracing algorithm is to hold as many facts as possible within the same node depth to
allow for the generation of many cache entries. To realise the backtracing, we introduce
the following data structure:</p>
      </sec>
      <sec id="sec-3-2">
        <title>Definition 5 (Fact Dependency Node Tuple) A fact dependency node tuple for G is a</title>
        <p>triple hc; dn;b; xi with c 2 FactsG; dn;b 2 DepG and x 2 V. As abbreviation we also write
hC; dn;b; xi if c is the concept fact C(x).</p>
        <p>If a clash is discovered in the completion graph, a set of fact dependency node tuples
is generated for the backtracing. Each tuple consists of a fact involved in the clash, an
associated dependency and the node where the clash occurred. The algorithm gets this
set T of tuples as input and incrementally traces the facts back from the node with the
clash to nodes with depth 0 (Abox individuals or root nodes).</p>
        <p>In each loop round (line 3) some tuples of T are exchanged with tuples, whose facts
are the cause of the exchanged one. To identify which tuple has to be traced back first,
the current minimum node depth (line 4) and the maximum branching tag (line 5) are
extracted from the tuples of T . All tuples, whose facts are located on a deeper node and
whose dependencies are deterministic, are collected in the set A. Such tuples will be
directly traced back until their facts reach the current minimum node depth (line
1012). If there are no more tuples on deeper nodes with deterministic dependencies, i.e.,
A = ;, the remaining tuples from deeper nodes with non-deterministic dependencies
minimumNodeDepth(T )
maximumBranchingTag(T )
ft 2 T j nodeDepth(t)&gt; minD ^ hasDeterministicDependency(t)g
b getNonDeterministicBranchingPoint(t)
if allAlternativesOfNonDetBranchingPointProcessed(b) then</p>
        <p>T T [ loadTuplesFromNonDetBranchingPoint(b)
T (T n t) [ getCauseTuplesByDependency(t)
T backtraceTuplesBeforeBranchingPoint(T; b)
pendingUnsatCaching tryCreateUnsatCacheEntry(T )
and the current branching tag are copied into B (line 14) in the next round. If B is not
empty, one of these tuples (line 25) and the corresponding non-deterministic branching
point (line 29) are processed. The backtracing is only continued, if all alternatives of
the branching point are computed as unsatisfiable. In this case, all tuples, saved from
the backtracing of other unsatisfiable alternatives, are added to T (line 31). Moreover,
for c the concept fact in the tuple t, t can be replaced with tuples for the fact on which
c non-deterministically depends (line 32).</p>
        <p>For a possible unsatisfiability cache entry all remaining tuples, which also depend
on the non-deterministic branching point, have to be traced back until there are no tuples
with facts of some alternatives of this branching point left (line 33). An unsatisfiability
cache entry is only generated (line 34), if all facts in T are concept facts for the same
node or on the same node depth.</p>
        <p>Unprocessed alternatives of a non-deterministic branching point have to be
computed before the backtracing can be continued. It is, therefore, ensured that tuples do
not consist of facts and dependencies from this alternative, which also allows for
releasing memory (line 36). The tuples are saved to the branching point (line 37) and the
algorithm jumps back to an unprocessed alternative (line 38).</p>
        <p>If B is also empty, but there are still dependencies to previous facts, some tuples
based on the current branching tag have to remain on the current minimum node depth.
These tuples are collected in the set C (line 23) and are processed separately one per
loop round, similar to the tuples of B, because the minimum node depth or maximum
branching tag may change. The tuples of C can have deterministic dependencies, which
are processed like the tuples of A (line 27). If all tuples have no more dependencies to
previous facts, the algorithm terminates (line 21).</p>
        <p>Besides the creation of unsatisfiability cache entries after non-deterministic
dependencies (line 34), cache entries may also be generated when switching from a deeper
node to the current minimum node depth in the backtracing (line 9 and 17) or when the
backtracing finishes (line 20). The function that tries to create new unsatisfiability cache
entries (line 17, 20, and 34) returns a Boolean flag that indicates whether the attempt
has failed, so that the attempt can be repeated later.</p>
        <p>For an example, we consider the clash f:B; Bg in the completion graph of Figure 1.
The initial set of tuples for the backtracing is T1 (see Figure 2). Thus, the minimum node
depth for T1 is 1 and the maximum branching tag is 0. Because there are no tuples on a
deeper node, the sets A and B are empty for T1. Since all clashed facts are generated
deterministically, the dependencies of the tuples have the current maximum branching tag
0 and are all collected into the set C. The backtracing continues with one tuple t from
C, say t = hB; k11;0; x1i. The dependency k of t relates to the fact (8r :B)(x2), which is a
part of the cause and replaces the backtraced tuple t in T1. The resulting set T2 is used in
the next loop round. The minimum node depth and the maximum branching tag remain
unchanged, but the new tuple has a deeper node depth and is traced back with a higher
priority to enable unsatisfiability caching again. Thus, h(8r :B); i9;0; x2i is added to the
set A and then replaced by its cause, leading to T3. Additionally, a pending creation
of an unsatisfiability cache entry is noted, which is attempted in the third loop round
since A and B are empty. The creation of a cache entry is, however, not yet sensible
and deferred since T3 still contains an atomic clash. Let t = hB; j10;0; x1i 2 C be the
tuple from T3 that is traced back next. In the fourth round, the creation of a cache entry
is attempted again, but fails because not all facts are concepts facts. The backtracing
of hr(x1; x2); h8;0; x1i then leads to T5. In the following round an unsatisfiability cache
entry is successfully created for the set f:B; (9r:(8r :B))g. Assuming that now the tuple
h:B; e5;0; x1i is traced back, we obtain T6, which includes the node a0. Thus, the
minimum node depth changes from 1 to 0. Two more rounds are required until T8 is reached.
Since all remaining facts in T8 are concept assertions, no further backtracing is possible
and an additional cache entry is generated for the set f(9r:(A u (9r:(8r :B)))); (8r::B)g.</p>
        <p>If a tuple with a dependency to node a0 had been traced back first, it would have
been possible that the first unsatisfiability cache entry for the set f:B; (9r:(8r :B))g
was not generated. In general, it is not guaranteed that an unsatisfiability cache entry
is generated for the node where the clash is discovered if there is no non-deterministic
rule application and if the node is not a root node or an Abox individual. Furthermore,
if there are facts that are not concept facts, these can be backtraced with higher priority,
analogous to the elements of the set A, to make unsatisfiability cache entries possible
again. To reduce the repeated backtracing of identical tuples in di erent rounds, an
additional set can be used to store processed tuples for the alternative for which the
backtracing is performed.</p>
        <p>The backtracing can also be performed over nominal and Abox individual nodes.
However, since Abox and absorbed nominal assertions such as fag v C have no previous
dependencies, this can lead to a distributed backtracing stuck on di erent nodes. In this
case, no unsatisfiability cache entries are possible.</p>
        <p>A less precise caching can lead to an adverse interaction with dependency directed
backtracking. Consider the example of Figure 3, where the satisfiability of the
combination of the concepts (9r:(9s:(AuB))), ((C1u8r:C)t(C2u8r:C)), and ((D1u8r:(8s::A))t
(D2 u8r:(8s::A))) is tested. Note that, in order to keep the figure readable, we no longer
show complete dependencies, but only the branching points for non-deterministic
decisions. First, the two disjunctions are processed. Assuming that the alternative with the
disjuncts (C1 u 8r:C) and (D1 u 8r:(8s::A)) is considered first (shown on the left-hand
side of Figure 3), an r-successor x1 with label f(9s:(A u B)); C1; (8s::A)2g is
generated. The branching points indicate which concepts depend on which non-deterministic
x0
x1
x2
r
s
decision. For example, C is in L(x1) due to the disjunct (C1 u 8r:C) of the first
nondeterministic branching decision (illustrated in Figure 3 with the superscript 1). In
the further generated s-successor x2 a clash is discovered. For the only involved
nondeterministic branching point 2, we have to compute the second alternative. Thus, an
identical r-successor x1 is generated again for which we can discover the
unsatisfiability with a cache retrieval. If the entire label of x1 was inserted to the cache, the
dependent branching points of all concepts in the newly generated node x1 would have
to be considered for further dependency directed backtracking. Thus, the second
alternative of the first branching decision also has to be evaluated (c.f. Figure 3, case a.,
label caching). In contrast, if the caching was more precise and only the combination of
the concepts (9s:(A u B)) and (8s::A) was inserted into the unsatisfiability cache, the
cache retrieval for the label of node x1 would return the inserted subset. Thus, only the
dependencies associated to the concepts of the subset could be used for further
backjumping, whereby it would not be necessary to evaluate the remaining alternatives (c.f.
Figure 3, case b., precise caching).
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Evaluation</title>
      <p>
        Our Konclude reasoning system implements the enhanced optimisation techniques for
SROIQ described above. We evaluate dependency directed backtracking and
unsatisfiability caching with the help of concept satisfiability tests from the well-known DL
98 benchmark suite [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] and spot tests from [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. An extended evaluation and a
comparison of Konclude with other reasoners can be found in the accompanying technical
report [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. From the DL 98 suite we selected satisfiable and unsatisfiable test cases
(with _n resp. _p postfixes) and omitted those for which unsatisfiability caching is
irrelevant and tests that were too easy to serve as meaningful and reproducible sample.
processed alternatives
precise caching
label caching
without caching
100000
10000
1000
100
We distinguish between precise caching and label caching as described in
Section 3.2. To recall, precise caching stores precise cache entries consisting of only those
backtraced sets of concepts that are explicitly known to cause an unsatisfiability in
combination with subset retrieval, while label caching stores and returns only entire node
labels.
      </p>
      <p>
        Konclude implements precise unsatisfiability caching based on hash data
structures [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] in order to e ciently facilitate subset cache retrieval. Figure 4 shows the total
number of processed non-deterministic alternatives for precise caching, label caching
and without caching for a selection of test cases solvable within one minute.
      </p>
      <p>Note that runtime is not a reasonable basis of comparison since the label caching
has been implemented (just for the purpose of evaluation) on top of the built-in and
computationally more costly precise caching approach. System profiling information,
however, strongly indicate that building and querying the precise unsatisfiability cache
within Konclude is negligible in terms of execution time compared to the saved
processing time for disregarded alternatives. However, we have experienced an increase of
memory usage by a worst-case factor of two in case of dependency tracking in
comparison to no dependency handling.</p>
      <p>Figure 4 reveals that precise caching can, for some test cases, reduce the number
of non-deterministic alternatives by two orders of magnitude in comparison to label
caching. Particularly the test cases k_path_n/p are practically solvable for Konclude
only with precise caching for larger available problem sizes.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions</title>
      <p>We have presented an unsatisfiability caching technique that can be used in conjunction
with the very expressive DL SROIQ. The presented dependency management allows
for more informed backjumping, while also supporting the creation of precise cache
unsatisfiability entries. In particular the precise caching approach can reduce the
number of tested non-deterministic branches by up to two orders of magnitude compared
to standard caching techniques. The optimisations are well-suited for the integration
into existing tableau implementations for SROIQ and play well with other commonly
implemented optimisation techniques.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Baader</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Calvanese</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nardi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P</given-names>
          </string-name>
          . (eds.):
          <article-title>The Description Logic Handbook: Theory, Implementation, and Applications</article-title>
          . Cambridge University Press, second edn. (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Ding</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haarslev</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          :
          <article-title>Tableau caching for description logics with inverse and transitive roles</article-title>
          .
          <source>In: Proc. 2006 Int. Workshop on Description Logics</source>
          . pp.
          <fpage>143</fpage>
          -
          <lpage>149</lpage>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Ding</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haarslev</surname>
          </string-name>
          , V.:
          <article-title>A procedure for description logic ALCF I</article-title>
          .
          <source>In: Proc. 16th European Conf. on Automated Reasoning with Analytic Tableaux and Related Methods (TABLEAUX'07)</source>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Donini</surname>
            ,
            <given-names>F.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Massacci</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>EXPTIME tableaux for ALC</article-title>
          .
          <source>J. of Artificial Intelligence</source>
          <volume>124</volume>
          (
          <issue>1</issue>
          ),
          <fpage>87</fpage>
          -
          <lpage>138</lpage>
          (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Goré</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Widmann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Sound global state caching for ALC with inverse roles</article-title>
          .
          <source>In: Proc. 18th European Conf. on Automated Reasoning with Analytic Tableaux and Related Methods (TABLEAUX'09)</source>
          . LNCS, vol.
          <volume>5607</volume>
          , pp.
          <fpage>205</fpage>
          -
          <lpage>219</lpage>
          . Springer (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Haarslev</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Möller</surname>
          </string-name>
          , R.:
          <article-title>Consistency testing: The RACE experience</article-title>
          .
          <source>In: Proceedings, Automated Reasoning with Analytic</source>
          . pp.
          <fpage>57</fpage>
          -
          <lpage>61</lpage>
          . Springer-Verlag (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Haarslev</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Möller</surname>
            ,
            <given-names>R.:</given-names>
          </string-name>
          <article-title>High performance reasoning with very large knowledge bases: A practical case study</article-title>
          .
          <source>In: Proc. 17th Int. Joint Conf. on Artificial Intelligence (IJCAI'01)</source>
          . pp.
          <fpage>161</fpage>
          -
          <lpage>168</lpage>
          . Morgan Kaufmann (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Ho</surname>
            <given-names>mann</given-names>
          </string-name>
          , J.,
          <string-name>
            <surname>Koehler</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>A new method to index and query sets</article-title>
          .
          <source>In: Proc. 16th Int. Conf. on Artificial Intelligence (IJCAI'99)</source>
          . pp.
          <fpage>462</fpage>
          -
          <lpage>467</lpage>
          . Morgan Kaufmann (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kutz</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sattler</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>The even more irresistible SROIQ</article-title>
          .
          <source>In: Proc. 10th Int. Conf. on Principles of Knowledge Representation and Reasoning (KR'06)</source>
          . pp.
          <fpage>57</fpage>
          -
          <lpage>67</lpage>
          . AAAI Press (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.F.</given-names>
          </string-name>
          :
          <article-title>DL systems comparison</article-title>
          .
          <source>In: Proc. 1998 Int. Workshop on Description Logics (DL'98)</source>
          . vol.
          <volume>11</volume>
          , pp.
          <fpage>55</fpage>
          -
          <lpage>57</lpage>
          (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.F.</given-names>
          </string-name>
          :
          <article-title>Optimizing description logic subsumption</article-title>
          .
          <source>J. of Logic and Computation</source>
          <volume>9</volume>
          (
          <issue>3</issue>
          ),
          <fpage>267</fpage>
          -
          <lpage>293</lpage>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Liebig</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Reasoning with OWL - system support and insights -</article-title>
          .
          <source>Tech. Rep. TR-2006-04</source>
          , Ulm University, Ulm, Germany (
          <year>September 2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Liebig</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Steigmiller</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Noppens</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>Scalability via parallelization of OWL reasoning</article-title>
          .
          <source>In: Proc. Workshop on New Forms of Reasoning for the Semantic Web: Scalable &amp; Dynamic (NeFoRS'10)</source>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Sirin</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grau</surname>
            ,
            <given-names>B.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kalyanpur</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Katz</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Pellet: A practical OWL-DL reasoner</article-title>
          .
          <source>J. of Web Semantics</source>
          <volume>5</volume>
          (
          <issue>2</issue>
          ),
          <fpage>51</fpage>
          -
          <lpage>53</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Steigmiller</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liebig</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Glimm</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Extended caching, backjumping and merging for expressive description logics</article-title>
          .
          <source>Tech. Rep. TR-2012-01</source>
          , Ulm University, Ulm, Germany (
          <year>2012</year>
          ), available online at http://www.uniulm.de/fileadmin/website_uni_ulm/iui/Ulmer_Informatik_Berichte/2012/UIB-2012-01.pdf
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Tsarkov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horrocks</surname>
          </string-name>
          , I.:
          <article-title>FaCT++ description logic reasoner: System description</article-title>
          .
          <source>In: Proc. 3rd Int. Joint Conf. on Automated Reasoning (IJCAR'06)</source>
          . LNCS, vol.
          <volume>4130</volume>
          , pp.
          <fpage>292</fpage>
          -
          <lpage>297</lpage>
          . Springer (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Tsarkov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.F.</given-names>
          </string-name>
          :
          <article-title>Optimizing terminological reasoning for expressive description logics</article-title>
          .
          <source>J. of Automated Reasoning</source>
          <volume>39</volume>
          ,
          <fpage>277</fpage>
          -
          <lpage>316</lpage>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>