<!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>Towards Reusable Explanation Services in Protege</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Yevgeny Kazakov</string-name>
          <email>yevgeny.kazakov@uni-ulm.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pavel Klinov</string-name>
          <email>pavel@stardog.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alexander Stupnikov</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Stardog Union</institution>
          ,
          <country country="US">USA</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>The University of Ulm</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Tyumen State University</institution>
          ,
          <country country="RU">Russia</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>We present several extensions of the explanation facility of the ontology editor Protege. Currently, explanations of OWL entailments in Protege are provided as justifications-minimal subsets of axioms that entail the given axiom. The plugin called 'explanation workbench' computes justifications using a black-box algorithm and displays them in a convenient way. Recently, several other (mostly glass-box) tools for computing justifications have been developed, and it would be of interest to use such tools in Protege. To facilitate the development of justification-based explanation plugins for Protege, we have separated the explanation workbench into two reusable components-a plugin for blackbox computation of justifications and a plugin for displaying (any) justifications. Many glass-box methods compute justifications from proofs, and we have also developed a reusable plugin for this service that can be used with (any) proofs. In addition, we have developed an explanation plugin that displays such proofs directly. Both plugins can be used, e.g., with the proofs provided by the ELK reasoner. This paper describes design, features, and implementation of these plugins.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Protégé is currently the de facto standard domain independent tool for working with
OWL ontologies. It provides rich functionality for editing and browsing ontologies as
well as integration with backend reasoning services [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The characteristic property of
Protégé is its extensible and modular architecture which enables developers to easily
add new features via pluggable modules (or plugins for short) which are automatically
loaded at runtime using the OSGi framework. Most of user facing functionality such
as reasoning, query answering, modularity, learning, etc. is implemented via plugins
available from the Protégé Plugin Library.4
      </p>
      <p>Importance of explanations for working with OWL ontologies has been long
recognised and Protégé has a special extension point for plugins providing explanations
services. It defines a high level API for getting explanations for entailments. Any
explanation services plugin is responsible for two things: obtaining information about why an
entailment holds and displaying that information to the user in a UI widget.
4 https://protegewiki.stanford.edu/wiki/Protege_Plugin_Library</p>
      <p>The Protégé distribution ships with one standard explanation plugin called
“Explanations Workbench”. It displays a particular kind of explanations called justifications,
i.e. the minimal subsets of the ontology which are sufficient for the entailment to hold,
and computes them using a black-box algorithm (cf. next section for distinction
between black-box and glass-box algorithms). The plugin provides some useful insights
into the structure of explanations, e.g. identifies axioms which occur in multiple, or
even all, justifications.</p>
      <p>As useful as it is, the standard plugin is hard to extend or reuse. The key issue is
that it combines both presentation and computation aspects making it difficult to reuse
either functionality. For example, if a particular reasoner provides efficient means for
computing justifications, it would be desirable to use it together with the built-in
presentation method. On the other hand, one may want to customise UI for a particular use
case but reuse the computation method. Both such tasks currently require modification,
rather than extension, of the explanation workbench. Our first goal is to rectify this by
providing reusable and flexible explanation architecture.</p>
      <p>Our second goal is to complement justification-based explanation services in
Protégé with proof-based explanations. Proofs provide insights into which steps
(inferences) are performed to derive a particular result from the ontology. Similarly to
justifications we aim at providing reusable services which allow other developers to plug in
their proof generators or customise proof rendering.</p>
      <p>The remainder of the paper is structured as follows: Section 2 defines terminology
and introduces different approaches to explanations. Section 3 presents our
architecture of explanation services in Protégé. Section 4 describes the main features and
optimisation for both justification-based and proof-based explanation services. Section 5
concludes the paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Explanations</title>
      <p>
        We begin with terminology which will allow us to formally define the guarantees that
our plugins provide to the user. As usual, an (OWL) ontology is a set of (OWL) axioms.
Given an ontology O and an axiom , a justification (for the entailment O j= ) is a
minimal subset J O such that J j= [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>An inference is an object inf of the form h 1; : : : ; n ` i where 1; : : : ; n is a
(possibly empty) sequence of axioms called the premises of the inference and is an
axiom that is the conclusion of the inference. Informally, an inference corresponds to
application of a particular inference rule to particular axioms (asserted or inferred) to
derive an axiom. Axioms asserted in the ontology can also appear as conclusions in
inferences. An inference h 1; : : : ; n ` i is sound if 1; : : : ; n j= .</p>
      <p>An inference set is any set of inferences. Let O be an ontology. A derivation (from
O) using an inference set I is a sequence of inferences d = hinf1; : : : ; infki from I
(k 0) such that for every i with 1 i k, and each premise of infi that does
not appear in O, there exists j &lt; i such that is the conclusion of infj . We say that
an axiom is derivable from O using an inference set I if there exists a derivation d
such that is the conclusion of the last inference in d. In this set we will often call the
inference set I a proof for . A proof I is complete for the entailment O j= if for
each justification J O for O j= , is derivable from J using I.</p>
      <p>A proof structure over inferences in I is a triplet P = hN; L; Si where N is a set of
nodes, L a labeling function that assigns an axiom to each n 2 N , and S a set of proof
steps of the form hn1; : : : ; nk ` ni with n1; : : : ; nk; n 2 N such that for i = L(ni)
(1 i k) and = L(n), we have h 1; : : : ; k ` i 2 I. Similarly to inferences, for
a proof step s = hn1; : : : ; nk ` ni, the nodes n1; : : : ; nk are called the premises of s and
the node n is called the conclusion of s. Similar to derivations, a proof structure over
I represents a particular strategy of applications of inferences in I aimed at deriving
a particular axiom. But unlike derivations, this strategy is not linear and might contain
non-derivable axioms in the labels, e.g., due to cycles. Specifically, the proof structure
P is cyclic if the binary relation E = fhni; ni j hn1; : : : ; nk ` ni 2 N; 1 i kg is
cyclic, and otherwise it is acyclic. The derivable nodes of P w.r.t. an ontology O is the
smallest subset D N of nodes such that (i) if n 2 N is labeled by an axiom in O
then n 2 D, and (ii) if hn1; : : : ; nk ` ni 2 S and n1; : : : ; nk 2 D then n 2 D. A
proof structure P is entailment-complete for a node n 2 N such that O j= = L(n) if
for every justification J for O j= , n is derivable w.r.t. J .</p>
      <p>
        Justifications and proofs offer two orthogonal approaches to explaining entailments:
the former point to minimal subsets of the ontology which are necessary for the
entailment to hold while the latter show specific inference steps. Justifications have the
additional property that they can be computed in a reasoner-agnostic way using a black-box
algorithm [
        <xref ref-type="bibr" rid="ref2 ref3">3, 2</xref>
        ]. In other words, the reasoner does not need to implement any
nonstandard reasoning service and is used as an oracle for entailment queries. Alternatively
both justifications and proofs can be computed using glass-box algorithms which get
information from inside the reasoner. Glass-box justification algorithms have been
designed based on tableau tracing for expressive DLs [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and connections between the
E L reasoning and propositional SAT [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. For proofs, the reasoner must offer some
insight into the inference steps it takes to derive the entailment, so all proof generation
algorithms are glass-box. One such algorithm for E L has recently been developed for
the ELK reasoner [
        <xref ref-type="bibr" rid="ref5 ref6">5, 6</xref>
        ]. While the proof- and justification-based approach are
fundamentally different, there are important connections between their results, in particular,
justifications can be computed from proof inferences, e.g., using SAT solvers [
        <xref ref-type="bibr" rid="ref10 ref11 ref12 ref7 ref8 ref9">7–12</xref>
        ].
      </p>
      <p>Our proof explanations plugin computes and displays acyclic (entailment-complete)
proofs from the provided (entailment-complete) inference sets. Our justification
explanation plugin displays the provided justifications. Additionally, our proof justification
plugin computes (all) justifications from the reasoner-provided (entailment-complete)
inference sets. Together with the black-box justification plugin, it can be used as a
service for the justification-based explanation plugin. The plugins have many options that,
for example, may filter out superfluous inferences while guaranteeing completeness
w.r.t. entailments and justifications.
3</p>
    </sec>
    <sec id="sec-3">
      <title>The New Explanation Services for Protégé</title>
      <p>
        Protégé is a powerful ontology editor, which provides many possible ways of extending
functionality and adding new features. This mechanism is based on so-called extension
points and plugins that can be provided using an OSGi framework or, specifically, its
implementation used for the Eclipse IDE [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In a nutshell, an extension point is a Java
abstract class or an interface which the extending plugin should extend or, respectively,
implement in order to provide the additional functionality. For example, Protégé defines
an extension point for explanation services using the code like in Listing 1.1.
      </p>
      <p>
        Listing 1.1. Explanation service extension point of Protégé
This means that any plugin that provides an explanation service should implement a
function, that given an OWL axiom, draws a widget (JPanel) that somehow explains
why this axiom was entailed. The ‘explanation workbench’5 plugin [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] that is
bundled with Protégé implements this method by first computing justifications for the
axiom using a black-box procedure [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and then displaying these justifications in a
wellformatted way. An example output of this plugin is shown in Figure 1(a).
5 https://github.com/protegeproject/explanation-workbench
      </p>
      <p>
        Unfortunately, it is not possible to use the explanation workbench for displaying
explanations computed by other tools, e.g., those based on SAT solvers [
        <xref ref-type="bibr" rid="ref10 ref11 ref12 ref7 ref8 ref9">7–12</xref>
        ]. To
address these limitations, we have separated the explanation workbench on two plugins:
‘justification explanations’6—a plugin for displaying justifications, and ‘black-box
justifications’7—a plugin for computing justifications using a black-box procedure. These
plugins are schematically shown in the left part of Figure 2. Here, within the
‘justification explanations’ plugin, we have defined another extension point called justification
service using which other plugins can provide justifications that are then displayed by
this plugin. The simplified code for defining this extension point is given in Listing 1.2.
      </p>
      <p>Listing 1.2. Justification service extension point of the ‘justification explanations’ plugin
abstract class JustificationService {
abstract void enumerateJustifications(OWLAxiom</p>
      <p>entailment, JustificationListener listener);
interface JustificationListener {</p>
      <p>void foundJustification(Set&lt;OWLAxiom&gt; justification);
Based on this code, any plugin that provides a justification service, must implement the
method enumerateJustifications() that, given an axiom, computes
justifications for the entailment of this axiom and reports them one by one using the given
6 https://github.com/liveontologies/protege-justification-explanation
7 https://github.com/liveontologies/protege-black-box-justification
JustificationListener by calling the method foundJustification()
with the computed justification as the argument. That is, the plugin can report each
justification as soon as it is computed, without waiting for the method to return.</p>
      <p>For example, the ‘black-box justifications’ plugin, shown in the bottom left part of
Figure 2, implements this method by repeatedly calling the reasoner on subsets of the
ontology to identify a minimal subset that entails the given axiom, reporting the found
justification using the listener, and continuing searching for other minimal subsets.</p>
      <p>
        Recently, a number of efficient glass-box methods for computing justifications have
been developed, that use as an input an inference set, usually obtained by
consequencebased procedures for E L ontologies [
        <xref ref-type="bibr" rid="ref16 ref17 ref18">16–18</xref>
        ]. Now, it is possible to use these tools with
the re-engineered ‘justification explanation’ plugin. As an example, we have
implemented a plugin ‘proof justifications’8 shown in the bottom of Figure 2, that uses a
resolution-based procedure for computing justifications from the Proof Utility Library
(PULi).9 In order to use arbitrary proofs for computing justifications, this plugin
declares an extension point proof service with the simplified code shown in Listing 1.3.
      </p>
      <p>Listing 1.3. Proof service extension point of the ‘proof justifications’ plugin
}
}
interface Proof&lt;C&gt; {</p>
      <p>Collection&lt;? extends Inference&lt;C&gt;&gt; getInferences(C
conclusion);
interface Inference&lt;C&gt; {</p>
      <p>String getName();
C getConclusion();</p>
      <p>
        List&lt;? extends C&gt; getPremises();
A plugin that provides a proof service, should implement a method getProof() that,
given an axiom, returns a proof using which this axiom can be derived. The inferences
of this proof can be recursively unravelled using the method getInferences() of
Proof. The latest version of the ELK reasoner10 provides an implementation of this
extension point using a goal-directed tracing procedure for E L ontologies [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Note
that, the inferences for each conclusion may be returned as any collection, e.g., a list or
a set, but the premises of each inference should be a list since the order of premises is
important to match inferences against the rules, e.g., for automated proof verification.
      </p>
      <p>A proof provided by a proof service according to Listing 1.3 can be also regarded
as an explanation for the entailment, and we next have developed a plugin ‘proof
ex8 https://github.com/liveontologies/protege-proof-justification
9 https://github.com/liveontologies/puli
10 https://github.com/liveontologies/elk-reasoner
planations’11 that can display any such proof. This plugin is shown in the right part of
Figure 2. Although the extension point Proof service of this plugin is similar to the
extension point of the ‘proof justifications’ plugin, for technical reason, these two plugins
cannot share a common extension point, so any plugin that implements a proof service
must explicitly specify for which extension point it is provided.</p>
      <p>As it is usual for OSGI plugins, all plugins shown in Figure 2 are optional and are
not required for functionality of Protégé. In particular, if any other reasoner providing
reasoning services but not proof services is used instead or in addition to ELK, it can
be used for reasoning with ontologies as usual, but will not be used within the ‘proof
explanations’ or ‘proof justifications’ plugins.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Features, Implementation, and Optimizations</title>
      <p>In this section, we look more closely into design and implementation of the plugins
shown in Figure 2.</p>
      <p>Since, in general, there can be many plugins implementing each particular
extension point, there should be a mechanism of selecting which plugin should be used. In
case there are several plugins implementing the explanation service, Protégé displays a
drop-down menu at the top of the explanation window in which the required explanation
service can be chosen. The content of the window is then updated according to the
selected plugin. See Figure 1(a) and Figure 1(b) comparing the windows for ‘explanation
workbench’ (old design) and ‘justification explanations’ (new design) respectively.</p>
      <p>We have adapted this principle for all other extension points. For example, if there
are several plugins implementing the justification service, a drop-down menu listing
these plugins appears. A similar design applies for plugin preferences. Each extension
point in Figure 2, in addition to the corresponding methods in Listings 1.1–1.3, provides
a method getPreferences() using which specific plugin settings can be displayed.
The preferences for all installed plugins are then assembled in the Protégé preferences
menu in the Explanations tab (see Figure 3). All plugins implementing a particular
extension point, e.g., ‘black-box justifications’ and ‘proof justifications’, are listed in
the respective ‘General’ tab of the plugin providing the extension point, and the specific
settings for each plugin are located on a separate tab as shown in Figure 3.</p>
      <p>We next consider the specific features of justification explanations and proof
explanations in more detail.
4.1</p>
      <sec id="sec-4-1">
        <title>Justification-based explanations</title>
        <p>Most of the changes in the newly designed ‘justification explanations’ plugin were
dictated by the improved performance of (glass-box) justification computation tools.
Whereas the default ‘explanation workbench’ was usually able to compute only a few
of justifications for real ontologies, the new tools can compute thousands of
justifications in a few seconds (see Figure 4). Such large number of justifications is usually not
possible to display in one window; even with less than a hundred of justifications there
were some significant lags during both the opening and scrolling of the window.
11 https://github.com/liveontologies/protege-proof-explanation</p>
        <p>To improve the performance of the visual components, we have limited the
number of justifications that can be (initially) displayed in the window. If the number of
computed justification exceeds this limit, there is a possibility to load more
justifications using a button in the bottom of the window (see Figure 4). Both, the the initial
limit value and the maximal number of justifications that can be loaded by pressing the
button, can be changed in the preferences of the plugin (see the upper part of Figure 3).</p>
        <p>Even with the limited number of justifications, the plugin has exhibited a
considerable delay before displaying the window. The delay was caused by the initial sorting of
all computed justifications so that simpler justifications are shown first.12 Sorting
thousands of justifications seems unnecessary if only a few of them should be displayed. To
address this problem, we store all computed justifications in a priority queue that allows
retrieving elements in a specified (priority) order. Finding an element in the queue that
is minimal with respect to the order is a logarithmic operation; it does not require all
elements in the queue to be sorted.</p>
        <p>
          We have made a few further changes to improve the overall ‘look and feel’ and
make the components more native for Protégé. The original ‘explanation workbench’
12 The ‘explanation workbench’ prioritizes justifications first according to the number of different
types of axiom constructors used, then according to the number of different types of concept
constructors used, and, finally, according to the number of axioms in justifications—those with
the lowest values in the lexicographical order appear first in the list.
displays next to each axiom in justifications the number of justifications this axiom
appears in. Since for large justifications this view becomes too crowded and also has
problems with automated line breaking for long axioms (see the left part of Figure 1),
we have moved this information into tooltips, shown when moving the mouse over
the axiom (see Figure 4). We have also cached the values of the numbers; previously
they were computed every time the window is redrawn. Finally, as in other Protégé
components, we have highlighted in yellow the (entailed) axioms that are not present in
the ontology. Such axioms appear, for example, when the ‘show laconic justifications’
setting of ‘black-box justifications’ is selected. In this case the axioms in justifications
are ‘simplified’ to axioms that are not present in the ontology [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ].
4.2
        </p>
      </sec>
      <sec id="sec-4-2">
        <title>Proof-based explanations</title>
        <p>The ‘proof explanations’ plugin is a new plugin that was designed from scratch. The
main idea is to present to the user all relevant inferences that derive the axiom in
question, and let the user explore these inferences interactively.</p>
        <p>Naturally, such proofs can be presented in a tree-like component, where the nodes
are labeled by axioms. Unfortunately, the standard Java component JTree has some
limitations, which does not allow us to use it for displaying proofs. First, there is no
easy way of displaying information about inferences since for this, a second type of
nodes is needed. Second, wrapping node labels cannot be easily implemented. Third,
the standard Protégé buttons for explaining, annotating, deleting, and editing axioms,
cannot be easily displayed in a JTree. Therefore, we chose to implement a custom
treelike component for proofs based on lists.13 The result can be seen on the left of Figure 5.</p>
        <p>
          In order to display this window, the inferences I obtained by the proof service (see
Listing 1.3) are grouped in a proof structure P = (N; L; S) as defined in Section 2,
whose nodes N and labels L(n) for n 2 N are respectively the nodes and the
axiom labels of the proof tree. A straightforward solution would be to set N as the set
of all axioms appearing in I, define L( ) = for 2 N , and set S = I. This
proof, however, may be cyclic, which is undesirable since the user would not be able
to completely expand the proof. This situation is rather common in practice. For
example, E L procedures [
          <xref ref-type="bibr" rid="ref16 ref17 ref18">16–18</xref>
          ] often apply inferences that both decompose conjunctions:
hC v D1 u D2 ` C v D1i and compose them: hC v D1; C v D2 ` C v D1 u D2i.
Figure 6 illustrates this situation: notice that the inference for C v D1 u D2 cannot be
expanded in the left proof, but can be expanded in the right proof.
        </p>
        <p>To solve this problem we eliminate cycles in proofs. Intuitively, it is sufficient to
consider only proof structures in which every branch does not contain duplicate
labels. Specifically, if an inference producing a label of some node contains a premise
that already appears on the path from the proof root, we do not display this inference.
Removing such inferences from the proof tree, however, is not enough since this may
result in some dead nodes—the nodes that cannot be derived (as defined in Section 2)
due to the removed inferences. To determine if a node is dead (and thus should not be
shown), we check if the label of the node is derivable using the inferences in I without
using axioms on the path leading to this node. This can be easily verified in linear time
(in the size of I) by simply removing from I all inferences whose conclusions are those
axioms on the path, and checking if the label is derivable using the remaining
inferences. It is easy to see that this operation also preserves completeness of proofs: if there
is a (part of the) proof from some justification J of O, it has an acyclic sub-proof.
Arguably, completeness is a desirable property of proofs, since by expanding such proofs
the user is able to find all possible subsets of axioms which entail the axiom of interest.</p>
        <p>The ‘proof explanations’ plugin has a number of further interesting features. First,
the proofs are dynamically updated after changes are made with axioms in the ontology.
For example, when an axiom is deleted (see the left of Figure 5), the proof is
automatically updated to remove the fragments that use this axiom (see the right of Figure 5).
13 Specifically on MList used in Protégé for displaying lists of OWL objects
For axiom modifications, this may require a reasoner ‘synchronization’ to recompute
the entailments (and hence, the inferences). To support the proof updates, the proof
service must return a DynamicProof, which, in addition to the methods of Proof (see
Listing 1.3), allows to register listeners to monitor for changes.</p>
        <p>Next, the ‘proof explanations’ plugin provides several tooltips that display some
additional useful information to the user. Apart from specifying if axioms are stated or
inferred, tooltips can display examples for inferences used in the proofs. Examples are
simple instances of inferences that can help the user to understand how the inference
used in the proof is applied in general (see the right of Figure 5).</p>
        <p>The plugin can be also customized using some preference settings (see the bottom
of Figure 3). For example, the proof can be recursively expanded up to a certain limit
of inferences (using ALT+click or long press), one can limit the number of inferences
initially shown per conclusion, and some inferences can be automatically removed from
the proof if this preserves completeness of the proof.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>We have described a range of new Protégé plugins aimed at improving debugging
experience for OWL ontologies. Some of these plugings, such as ‘justification explanations’
and ‘black-box justifications’ are obtained by re-engineering the existing ‘explanation
workbench’ explanation plugin. Others, like ‘proof explanations’ and ‘proof
justifications’ were built from scratch. The main goal was to being able to provide flexible and
reusable explanation services for Protégé. This is achieved by separating computation
of explanations from displaying explanations to the user.</p>
      <p>There are many ways to further improve the described plugins. For example, the
‘justification explanations’ plugin currently does not support updates after changes like
in the ‘proof explanations’ plugin. The ‘proof explanations’ and ‘proof justifications’
plugins can potentially reuse a common proof service, if it is moved to a new plugin
that is added as common dependency of these two plugins. This would then allow other
plugins to use proof services without additional extension points, just like it is
possible now for ontology reasoners. However, currently Protégé lacks the mechanism to
manage plugin dependencies, which poses some difficulties in this regards.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Musen</surname>
            ,
            <given-names>M.A.</given-names>
          </string-name>
          :
          <article-title>The protégé project: a look back and a look forward</article-title>
          .
          <source>AI Matters</source>
          <volume>1</volume>
          (
          <issue>4</issue>
          ) (
          <year>2015</year>
          )
          <fpage>4</fpage>
          -
          <lpage>12</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Kalyanpur</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sirin</surname>
          </string-name>
          , E.:
          <article-title>Finding all justifications of OWL DL entailments</article-title>
          . In Aberer,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Choi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.S.</given-names>
            ,
            <surname>Noy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            ,
            <surname>Allemang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.I.</given-names>
            ,
            <surname>Nixon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Golbeck</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Mika</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            ,
            <surname>Maynard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Mizoguchi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Schreiber</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Cudré-Mauroux</surname>
          </string-name>
          , P., eds.
          <source>: Proc. 6th Int. Semantic Web Conf. (ISWC'07)</source>
          . Volume 4825 of LNCS., Springer (
          <year>2007</year>
          )
          <fpage>267</fpage>
          -
          <lpage>280</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Kalyanpur</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Debugging and Repair of OWL Ontologies</article-title>
          .
          <source>PhD thesis</source>
          , University of Maryland College Park, USA (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Baader</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peñaloza</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Suntisrivaraporn</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Pinpointing in the description logic EL+</article-title>
          . In Hertzberg, J.,
          <string-name>
            <surname>Beetz</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Englert</surname>
          </string-name>
          , R., eds.
          <source>: KI 2007: Advances in Artificial Intelligence, 30th Annual German Conference on AI, KI</source>
          <year>2007</year>
          , Osnabrück, Germany,
          <source>September 10-13</source>
          ,
          <year>2007</year>
          , Proceedings. Volume
          <volume>4667</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2007</year>
          )
          <fpage>52</fpage>
          -
          <lpage>67</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Kazakov</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klinov</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Goal-directed tracing of inferences in E L ontologies</article-title>
          .
          <source>In: The Semantic Web - ISWC 2014 - 13th International Semantic Web Conference, Riva del Garda, Italy, October 19-23</source>
          ,
          <year>2014</year>
          . Proceedings,
          <string-name>
            <surname>Part</surname>
            <given-names>II</given-names>
          </string-name>
          . (
          <year>2014</year>
          )
          <fpage>196</fpage>
          -
          <lpage>211</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kazakov</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Klinov</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Advancing</surname>
            <given-names>ELK</given-names>
          </string-name>
          :
          <article-title>not only performance matters</article-title>
          . In Calvanese, D.,
          <string-name>
            <surname>Konev</surname>
          </string-name>
          , B., eds.
          <source>: Proceedings of the 28th International Workshop on Description Logics</source>
          , Athens,Greece, June 7-10,
          <year>2015</year>
          . Volume 1350 of CEUR Workshop Proceedings., CEURWS.org (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Sebastiani</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vescovi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Axiom pinpointing in lightweight description logics via horn-sat encoding and conflict analysis</article-title>
          . In Schmidt, R.A., ed.
          <source>: Proc. 22st Conf. on Automated Deduction (CADE'09)</source>
          . Volume
          <volume>5663</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2009</year>
          )
          <fpage>84</fpage>
          -
          <lpage>99</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Vescovi</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Exploiting SAT and SMT Techniques for Automated Reasoning and Ontology Manipulation in Description Logics</article-title>
          .
          <source>PhD thesis</source>
          , University of Trento, Italy (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Arif</surname>
            ,
            <given-names>M.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mencía</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marques-Silva</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Efficient axiom pinpointing with EL2MCS</article-title>
          . In Hölldobler, S.,
          <string-name>
            <surname>Krötzsch</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peñaloza</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rudolph</surname>
          </string-name>
          , S., eds.
          <source>: Proc. 38th Annual GermanConf. on Artificial Intelligence (KI'15)</source>
          . Volume
          <volume>9324</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2015</year>
          )
          <fpage>225</fpage>
          -
          <lpage>233</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Manthey</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peñaloza</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rudolph</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Efficient axiom pinpointing in EL using SAT technology</article-title>
          . In Lenzerini,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Peñaloza</surname>
          </string-name>
          , R., eds.
          <source>: Proc. 29th Int. Workshop on Description Logics (DL'16)</source>
          . Volume 1577 of CEUR Workshop Proceedings., CEUR-WS.org (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Arif</surname>
            ,
            <given-names>M.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mencía</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marques-Silva</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Efficient MUS enumeration of Horn formulae with applications to axiom pinpointing</article-title>
          .
          <source>CoRR abs/1505</source>
          .04365 (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Arif</surname>
            ,
            <given-names>M.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mencía</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ignatiev</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Manthey</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Peñaloza</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marques-Silva</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>BEACON: an efficient sat-based tool for debugging E L+ ontologies</article-title>
          . In Creignou, N.,
          <string-name>
            <surname>Berre</surname>
          </string-name>
          , D.L., eds.
          <source>: Proc. 19th Int. Conf. on Theory and Applications of Satisfiability Testing (SAT'16)</source>
          . Volume
          <volume>9710</volume>
          of Lecture Notes in Computer Science., Springer (
          <year>2016</year>
          )
          <fpage>521</fpage>
          -
          <lpage>530</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Bartlett</surname>
          </string-name>
          , N.: OSGi In Practice. (
          <year>2009</year>
          ) Available online at http://njbartlett.name/ osgibook.html.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Horridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sattler</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Explanation of OWL entailments in Protégé 4</article-title>
          . In Bizer,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Joshi</surname>
          </string-name>
          , A., eds.
          <source>: Proceedings of the Poster and Demonstration Session at the 7th International Semantic Web Conference (ISWC2008)</source>
          , Karlsruhe, Germany, October
          <volume>28</volume>
          ,
          <year>2008</year>
          . Volume 401 of CEUR Workshop Proceedings., CEUR-WS.org (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Horridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sattler</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Laconic and precise justifications in OWL</article-title>
          . In Sheth,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Staab</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            ,
            <surname>Dean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Paolucci</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Maynard</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            ,
            <surname>Finin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            ,
            <surname>Thirunarayan</surname>
          </string-name>
          , K., eds.
          <source>: Proc. 7th Int. Semantic Web Conf. (ISWC'08)</source>
          . Volume 5318 of LNCS., Springer (
          <year>2008</year>
          )
          <fpage>323</fpage>
          -
          <lpage>338</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Baader</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brandt</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lutz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Pushing the E L envelope</article-title>
          . In Kaelbling, L.,
          <string-name>
            <surname>Saffiotti</surname>
          </string-name>
          , A., eds.
          <source>: Proc. 19th Int. Joint Conf. on Artificial Intelligence (IJCAI'05)</source>
          , Professional Book Center (
          <year>2005</year>
          )
          <fpage>364</fpage>
          -
          <lpage>369</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Baader</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Brandt</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lutz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Pushing the E L envelope further</article-title>
          . In Clark, K.G., PatelSchneider, P.F., eds.
          <source>: Proc. OWLED 2008 DC Workshop on OWL: Experiences and Directions</source>
          . Volume
          <volume>496</volume>
          of CEUR Workshop Proceedings., CEUR-WS.org (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Kazakov</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krötzsch</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simancˇík</surname>
          </string-name>
          , F.:
          <article-title>The incredible ELK: From polynomial procedures to efficient reasoning with E L ontologies</article-title>
          .
          <source>J. of Automated Reasoning</source>
          <volume>53</volume>
          (
          <issue>1</issue>
          ) (
          <year>2014</year>
          )
          <fpage>1</fpage>
          -
          <lpage>61</lpage>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>