<!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>Why Not? Explaining Missing Entailments with Evee</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Christian Alrabbaa</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Stefan Borgwardt</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tom Friese</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Patrick Koopmann</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mikhail Kotlov</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science, Vrije Universiteit Amsterdam</institution>
          ,
          <addr-line>1081 Amsterdam</addr-line>
          ,
          <country country="NL">Netherlands</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institute of Theoretical Computer Science, Technische Universität Dresden</institution>
          ,
          <addr-line>01062 Dresden</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Understanding logical entailments derived by a description logic reasoner is not always straight-forward for ontology users. For this reason, various methods for explaining entailments using justifications and proofs have been developed and implemented as plug-ins for the ontology editor Protégé. However, when the user expects a missing consequence to hold, it is equally important to explain why it does not follow from the ontology. In this paper, we describe a new version of Evee, a Protégé plugin that now also provides explanations for missing consequences, via existing and new techniques based on abduction and counterexamples.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Protégé plugin</kwd>
        <kwd>Explanations</kwd>
        <kwd>Abduction</kwd>
        <kwd>Counterexamples</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        We present a Protégé plugin for explaining missing entailments from OWL ontologies. The
importance of explaining description logic reasoning to end-users has long been understood,
and has been studied in many forms over the past decades. Indeed, explainability is one of the
main advantages of logic-based knowledge representations over sub-symbolic methods. The
ifrst approaches to explain why a consequence follows from a Description Logic (DL) ontology
were based on step-by-step proofs [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ], but soon research focused on justifications [
        <xref ref-type="bibr" rid="ref3 ref4 ref5">3, 4, 5</xref>
        ]
that are easier to compute, but still very useful for pointing out the axioms responsible for
an entailment. Consequently, the ontology editor Protégé supports black-box methods for
computing justifications for arbitrary OWL DL ontologies [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. More recently, a series of papers
investigated diferent methods of computing good proofs for entailments in DLs ranging from
ℰ ℒ to ℒℐ [
        <xref ref-type="bibr" rid="ref10 ref7 ref8 ref9">7, 8, 9, 10</xref>
        ], and the Protégé plug-ins proof-explanation [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and Evee [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ],
as well as the web-based application Evonne [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], were developed to make these algorithms
available to ontology engineers.
      </p>
      <p>
        While reasoning can sometimes reveal unexpected entailments that need explaining, very
often the problem is not what is entailed, but what is not entailed. In order to explain such
missing entailments, and ofer suggestions on how to repair them, both counterexamples and
abduction have been suggested in the literature. A counterexample is a model of the ontology
that does not satisfy the entailment, which may be further augmented to focus the attention of
the user to the part of the model that is most relevant for explaining the non-entailment [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. In
abduction, the non-entailment is explained by means of hypotheses, which are sets of axioms that
can be added to the ontology in order to entail the missing consequence [
        <xref ref-type="bibr" rid="ref14 ref15 ref16">14, 15, 16</xref>
        ]. However,
despite there being a lot of research on these explanation services of both theoretical and more
practical form, so far, this tool support has not been integrated into standard ontology tools.
      </p>
      <p>
        In this paper, we present version 0.2 of Evee, a collection of plugins for the OWL ontology
editor Protégé, which now also ofers explanations for missing entailments. Those plugins integrate
the functionality provided by the external tools Capi and Lethe-Abduction for abduction, as
well as the counterexample generation methods discussed in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The explanations are provided
by Evee through a new Missing Entailment Explanation tab that contains a unified interface for
explanations based on both counterexamples and abduction. After specifying the missing
entailment(s) and optionally a vocabulary for the explanation, the user can choose between diferent
non-entailment explanation algorithms, which then provide either a graphical representation
of a counterexample, or a list of diferent hypotheses to fix the missing entailments. Evee 0.2
has been tested with Java 8, OWL API 4.5.20, and Protégé 5.5.0, and can be downloaded and
installed following the instructions at https://github.com/de-tu-dresden-inf-lat/evee. The new
plugins depend on the external libraries Capi,1 Spass,2 and Lethe-Abduction.3 This paper also
presents a new method for counterexample generation in Section 3.1 and new post-processing
steps to make the output of Capi and Lethe-Abduction easier to interpret (see Section 4).
      </p>
      <p>
        We describe the new Missing Entailment tab of Evee in the next section, before explaining in
detail the diferent explanation services and how they are accessed through the user interface.
In Section 5, we explain how developers can use the infrastructure of the Evee Java libraries to
provide new explanation services for missing entailments. Additional proofs can be found in
the technical report [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Explanations for Non-Entailments</title>
      <p>
        We assume the reader to be familiar with the syntax and semantics of DLs [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The use case
of our plugins is the following: we have an active ontology  opened in the ontology editor
Protégé, and there is a set of axioms  that does not follow from , i.e.  ̸|= . The user may
also specify a vocabulary Σ to be used for the explanations, which is in particular useful for
the abduction services. The evee-protege-core component provides the core functionality to
specify  and Σ and extension points for the actual explanation plug-ins. After installing the
core plugin, a new tab is available via Window → Tabs → Missing Entailment Explanation.
      </p>
      <p>Figure 1 shows this tab in action. It is divided into three major parts: In the upper part, one
of the installed missing entailment explanation services can be chosen, the computation process
can be started, and general information is displayed. On the left, the missing entailment and</p>
      <sec id="sec-2-1">
        <title>1https://lat.inf.tu-dresden.de/~koopmann/CAPI</title>
        <p>2https://www.mpi-inf.mpg.de/departments/automation-of-logic/software/spass-workbench/
classic-spass-theorem-prover
3https://lat.inf.tu-dresden.de/~koopmann/LETHE-Abduction
vocabulary can be entered, and in the center, the explanation will be displayed. The explanation
view depends on the selected explanation service (see Sections 3 and 4). If the entered missing
entailment and vocabulary are not supported by the service, the Generate Explanation button at
the top will be disabled and an explanatory message will be shown.</p>
        <p>How missing entailments are entered can be see on the left in Figure 1. The text field at the
top can be used to enter individual axioms. The buttons in the middle allow the user to add
an axiom to the list below, remove a selected axiom, or reset the whole list. Only OWL logical
axioms are allowed, e.g. subclass-, equivalence-, and disjointness axioms and assertions. The
selected missing entailment can also be saved to or loaded from an OWL ontology file, which
can be useful for demonstration purposes.</p>
        <p>By selecting the Vocabulary tab, the users can restrict the vocabulary used by the explanations,
which can be seen in Figure 2. Here, the Ontology Vocabulary of the currently active ontology
can be accessed via the class hierarchy, object property hierarchy, and list of individuals. The
vocabulary of the explanation will be restricted to the names in the tab Permitted Vocabulary on
the bottom, while Forbidden Vocabulary shows the remaining names of the ontology vocabulary.
Depending on the currently opened tabs, the arrows and the button Add missing entailment
vocabulary can be used to add or remove names to and from the selected vocabulary. Again,
the permitted vocabulary can be saved to and loaded from an external file. By default, the
whole ontology vocabulary is permitted, but this can be changed in the plug-in preferences at
Preferences → Explanations → Missing Entailment → General.</p>
        <p>While the explanation is generated, a progress window is used to indicate the computation
status and show additional information. The computation can be canceled by closing the
window or clicking the Cancel button. This will show a separate cancelation window while the
computation is being terminated.</p>
        <p>As a running example to illustrate the diferent explanation services, we consider a modified,
incomplete version of the Pizza ontology.4 This version is missing some axioms to make it entail
SpicyAmerican ⊑ SpicyPizza. It will turn out that other things are missing in this ontology as
well, and the plugin will help the user in adding those missing parts.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Counterexamples</title>
      <p>
        The first obvious way to explain the missing entailment is to show an example of a SpicyAmerican
that is not a SpicyPizza, as shown in Figure 1. Evee 2.0 includes two plug-ins that provide
counterexample generation services: the Small Model Counterexample Generator and the Relevant
Counterexample Generator using Elk [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. For a missing entailment  ⊑ , a counterexample is
a model of the ontology that contains an element that belongs to , but does not belong to . The
plug-ins visualize counterexamples as directed graphs, where the nodes are individuals labeled
by concept names and the edges are labeled by role names. The Small Model Counterexample
Generator is developed for ℰ ℒ⊥, which supports disjointness axioms. This generator generates
complete models, but tries to reduce the number of elements to keep the model small. The ELK
Relevant Counterexample Generator instead focuses on relevant fragments of models, using
the methods described in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. It was developed for the description logic ℰ ℒ. Both generators
require a single GCI to be entered as non-entailment, and support arbitrary vocabularies Σ.
Since we only explain non-entailed GCIs, the counterexample generators ignore the ABox of the
active ontology, and only consider the TBox. The generated counterexample only shows names
from Σ. We first describe the counterexample view, before explaining the diferent methods in
detail.
      </p>
      <p>To visualize the counterexamples, we use GraphStream,5 a Java library for modeling,
analyzing and visualizing graphs. Its functionality allows not only to visualize models, but also to
dynamically make changes to models when the ontologies change. In the generated graphs,
domain elements are depicted as circles. We highlight elements that are of particular importance
for understanding the generated model. For instance, each counterexample contains a root
element, marked in black, which satisfies the concept on the left-hand side of the GCI to be
explained. For readability, only some of the concept names for each domain element are shown,
whose number can be adapted using the Number of displayed classes slider on the right panel of
the counterinterpretation view. When the user selects a node, the Classes of selected element list
in the right panel displays all the concept names to which the selected element belongs. In the</p>
      <sec id="sec-3-1">
        <title>4http://protege.stanford.edu/ontologies/pizza/pizza.owl 5https://graphstream-project.org</title>
        <p>node selected in Figure 1, the user notices in this way an element that is both a TomatoTopping
and a MozzarellaTopping, pointing at another bug in the ontology—but more on this later.</p>
        <p>The graphical model view allows zoom to facilitate exploring large graphs, and users can
move the nodes of the graph. Dragging the mouse over the background canvas navigates
through the graph. To make the graphical representation of a counterexample more informative,
we display concept names in the order from more specific to less specific. In Figure 1, we display
that the root element belongs only to SpicyAmerican and MeatyPizza, but it implicitly is also a
Pizza, a Food, and ultimately a DomainThing, since the first two classes are subsumed by them.
However, if we instead displayed in the graph that this element is a DomainThing, we would
give no useful information about the element.</p>
        <p>As in the present example, the visualized model can also reveal missing disjointness axioms
in the ontology. As already noticed, in Figure 1, the selected element is both a
MozzarellaTopping and a TomatoTopping. The reason is a missing disjointness between CheeseTopping and
VegetableTopping. The right panel allows the user to add new disjointness axioms as needed and
visualize the result. For this, the user selects the corresponding concept names in the Classes
of selected element list and presses Add disjointnesses. A disjointness axiom with the selected
names is then added to the Disjointnesses list, as shown in the figure. By pressing the Recompute
example button, the user gets shown an updated model with the new disjointness applied. If
the user is not satisfied with the changes to the model resulting from the new axioms, they can
be deleted using the Remove disjointnesses button. Finally, axioms from the Disjointnesses list
can be added to the active ontology with a click of the Add all to ontology button.</p>
        <sec id="sec-3-1-1">
          <title>3.1. Small Model Counterexample Generator</title>
          <p>
            In this explanation service, counterexamples are generated using a tableau-based algorithm
for the description logic ℰ ℒ⊥. Given a GCI  ⊑ , the algorithm first initializes an ABox 
containing as only axiom (* ), where * is a fresh individual name. Next, it adds  ⊑ *
to the TBox, where * is a fresh concept name, and normalizes [
            <xref ref-type="bibr" rid="ref18">18</xref>
            ] the TBox. Note that
 |=  ⊑  if  ∪ { ⊑ * } |=  ⊑ * . Thus, if *ℐ ̸∈ *ℐ in the generated model ℐ,
then *ℐ ̸∈ ℐ . Therefore, the generated model is a counterexample if *ℐ ̸∈ *ℐ [
            <xref ref-type="bibr" rid="ref18">18</xref>
            ].
          </p>
          <p>The model of the ontology is obtained using a complete and clash-free ABox ′ obtained from
the ABox  by an exhaustive application of the expansion rules from Table 1. The ⊑-rule is
almost identical to the similar rule in algorithms for ℒ. The only diference is that it takes into
account the structure of the normalized TBox. It becomes applicable only to concept assertions
with concept names or with a concept name under an existential restriction. The ⊓- and ∃1-rules
are designed to add assertions that make the ⊑-rule applicable. For individual names having a
successor belonging to some concept name, the ∃1-rule creates a concept assertion with this
concept name under an existential restriction. The ⊓-rule breaks conjunctions into simpler
assertions.</p>
          <p>To keep the model small, we reuse existing individuals as successors when trying to satisfy
existential role restrictions. Before reusing an individual name, a consistency check is performed,
so that the rule cannot introduce any inconsistency. Moreover, we only reuse an individual as
successor if this does not make the root element an instance of * , since the aim is to construct
a counterexample for  ⊑ * .
if  contains (), but not (),  ∈ At() then  →−  ∪ { ()}
if  contains (, ) and (),  is a concept name or ⊤, but not ∃.()
 →−  ∪ {∃ .()}
if  contains ∃.(), but there is no  s.t. (, ) and ()</p>
          <p>if there is some , s.t.  ∩  ∪ {(, ), ()} is consistent and does not
entail * (* ) then  →−  ∪ { (, ), ()}
else  →−  ∪ { (, ), (), ⊤()}, where  is new in 
if () ∈ ,  ⊑  ∈  or {1(), 2()} ⊆  , 1 ⊓ 2 ⊑  ∈  or
∃.() ∈ , ∃. ⊑  ∈  and () ̸∈ .</p>
          <p>then  →−  ∪ { ()}</p>
          <p>
            The expansion rules are applied exhaustively, but the ∃2-rule is applied only if no other rule is
applicable. This restriction reduces the number of applications of the ∃2-rule, and consequently
the number of individuals added. The algorithm iteratively applies the rules until no more rule
is applicable, and then translates the resulting ABox into an interpretation in the usual way.
The correctness of the algorithm is shown in the technical report [
            <xref ref-type="bibr" rid="ref17">17</xref>
            ].
          </p>
        </sec>
        <sec id="sec-3-1-2">
          <title>3.2. Relevant Counterexample Generator</title>
          <p>
            A more focussed explanation to missing entailments is provided by the Relevant
Counterexample Generator. Relevant counterexamples explain missing entailments by showing relevant
parts of the models of ℰ ℒ ontologies, where this time canonical models [
            <xref ref-type="bibr" rid="ref18">18</xref>
            ] are used.
Canonical models have two properties that are beneficial for explanations. First, they reuse domain
elements, i.e. when a concept  appears multiple times in a TBox  , the substructure of the
canonical model ℐ satisfying  is reused. This makes ℐ a compact interpretation. Second, for
any non-entailment  ,  ̸|=  if ℐ ̸|=  , and hence ℐ directly serves as a counterexample.
However, the size of these models can still be large. To overcome this, we focus on certain
parts of the model, since in general not the entire model is relevant for the explanation of the
current  .
          </p>
          <p>
            We distinguish four types of relevance as shown in [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ], which define the  -,  -, Δ-, and
Δ¯ -relevant parts of ℐ . One possible explanation for  ̸|=  ⊑  is to show the user an element
that satisfies , does not satisfy , and satisfies all axioms in  . This element serves as a witness
for the non-entailment, and together with its required successors forms the  -relevant part of the
canonical model. Another possibility is to contrast  with , by including also a representative
element satisfying , which gives rise to the  -relevant part of the canonical model.
          </p>
          <p>
            The Δ-relevant part is a refinement of the  -relevant part that focuses on the conditions
that are imposed by the ontology on , but not on . This allows for an “explanation by
contradiction” as follows. If  |=  ⊑ , then every subsumer  of  must also subsume .
However, there is a model of  (the canonical model) in which there is an element of 
that intuitively does not satisfy some condition  that is satisfied by every element of .
Hence,  cannot be subsumed by  w.r.t.  . Therefore, the Δ-relevant part contains only those
elements illustrating the contrasting conditions , e.g. -successors (not) satisfying  in case
that  = ∃. . The Δ¯ -relevant part is a further refinement of the Δ-relevant part that tries to
generalize these conditions . For example, if  |=  ⊑ ,  ̸|=  ⊑  and  = ∃.∃.∃. ,
then it is suficient to consider ∃.⊤ instead of , assuming that  ̸|=  ⊑ ∃.⊤. For more
details we refer the reader to [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ].
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. Abduction</title>
      <p>
        Counterexamples always focus only on one model, and they do not necessarily make it obvious
what needs to be done to fix a missing entailment. This is where the explanation services based
on abduction come into play. For our running example, we show an explanation based on
abduction in Figure 2. Evee 0.2 includes two plug-ins based on abduction, namely the Complete
Signature-Based Abduction solver based on Lethe [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]6 and the Connection-Minimal Abduction
solver utilizing CAPI [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].7 Given a non-entailment  ̸|= , abduction computes a set of
hypotheses ℋ, which are sets of axioms such that  ∪ ℋ |= . Without further restrictions,
 is already a hypothesis, which is why usually additional constraints on the solution space
are given. Signature-based abduction [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] relies on a user-given vocabulary. The
signaturebased abduction service computes a set of alternative hypotheses using only names from the
vocabulary, such that any other such hypothesis can be obtained by strengthening or combining
those hypotheses. In contrast, CAPI computes hypotheses satisfying a minimality criterion
called connection-minimality [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], with the aim of focussing on those hypotheses that have
a more direct connection to the observation. The signature-based explanations support the
DL ℒ, observations can be a mix of several ABox and TBox axioms, and the hypotheses
can make arbitrary use of DL constructs, which in particular means that the result can be an
unbounded sequence of hypotheses. Connection minimal explanations support ℰ ℒ ontologies,
      </p>
      <sec id="sec-4-1">
        <title>6https://lat.inf.tu-dresden.de/~koopmann/LETHE-Abduction 7https://lat.inf.tu-dresden.de/~koopmann/CAPI</title>
        <p>entailments consisting of a single GCI, and hypotheses are always without role restrictions.
To use CAPI, the FOL theorem prover SPASS needs to be installed separately. We require an
adapted version of SPASS, which can be installed following the instructions on the web page of
CAPI.8</p>
        <p>
          After computing an explanation with an abduction solver, one or more hypotheses will be
displayed in a list, as shown in Figures 2 and 3. Depending on the input and the algorithm,
the number of results may difer and may even be infinite. Therefore, the user can specify the
number of new results that are added to the list whenever the Generate Explanation button
is clicked again. Using additional buttons shown at each hypothesis, the user can then easily
add the hypothesis to the ontology (to repair the non-entailment) and get an explanation
why the hypothesis entails the non-entailment, using the proof functionality provided by the
proof-explanation and Evee 0.1 plug-ins [
          <xref ref-type="bibr" rid="ref11 ref7">7, 11</xref>
          ]. The third button can be used to revert the
changes to the ontology. Each service resets the displayed results if any changes are made to
the active ontology, unless these changes are made via these Add and Delete buttons.
        </p>
        <sec id="sec-4-1-1">
          <title>4.1. Complete Signature-Based Abduction</title>
          <p>
            Signature based hypotheses are computed by the abduction extension of the external library
LETHE [
            <xref ref-type="bibr" rid="ref14 ref20">14, 20</xref>
            ]. We extended the original method by an additional, equivalence-preserving
simplification step to make the hypotheses more user-friendly. The method computes so-called
complete signature-based hypotheses, which are hypotheses that are fully in the signature, and
which generalize any other possible such hypothesis. This is only possible by using disjunctions
8When using the CAPI abduction plug-in for the first time, it will ask for the directory that SPASS was installed to.
This directory can later be changed in the Protégé preferences, see Section 4.2.
and least fixpoint operators, which is why the output of this method is a disjunction of the form
 
⋁︀ (︀ ⋀︀  , ︀) , with each  , an ℒℐ axiom. Intuitively, each disjunct is an alternative
=1 =1
hypothesis, but their axioms may include least fixpoint concepts of the form . [] [
            <xref ref-type="bibr" rid="ref21">21</xref>
            ]. To
obtain from this disjunction a sequence of hypotheses that can be displayed in Protégé, the
ifxpoint concepts need to be unraveled. This is done in order of increasing role depth, i.e. the
shallowest hypotheses are shown first. For example, in Figure 3, hypotheses 4 and 5 are obtained
by unravelling of the following assertion, followed by some syntactic reformulations:
2 : . ∃infected− .(︀ ∃contactWith.EbolaBat ⊔ {1} ⊔ )︀
          </p>
        </sec>
        <sec id="sec-4-1-2">
          <title>4.2. Capi Abduction solver</title>
          <p>
            The CAPI abduction solver internally relies on the FOL theorem prover SPASS to compute the
solutions to an abduction problem. In particular, based on a translation into first-order logic
clauses, SPASS computes a set of prime implicates, which are then used by the Java component
of the tool to construct the diferent hypotheses (see [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ] for details). The Protégé plugin takes
some additional input parameters that can be configured by the user. By default, Spass stops
generating prime implicates after a time limit of 10 seconds is reached. This is usually suficient
to obtain a large set of hypotheses, but if the results are unsatisfactory, the time limit can
be changed under Preferences → Explanations → Missing Entailment → Connection-Minimal
Abduction (CAPI). Further options concern the post-processing of solutions generated by SPASS,
which were not included in the original implementation presented in [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ], but later added for
convenience: 1) explanations can be simplified by removing redundant axioms, 2) axioms can
be simplified by removing redundant conjuncts or disjuncts, and 3) hypotheses can be ordered
by specificity, which means: if one hypothesis implies another one, the implied hypothesis
is shown later. Without these post-processing steps, hypotheses may be long and generally
contain long lists of conjunctions, which is why the optimizations are turned on by default. On
the other hand, by deactivating all post-processing steps, we obtain hypotheses that are faithful
to the method described in [
            <xref ref-type="bibr" rid="ref16">16</xref>
            ].
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Adding New Non-Entailment Explanation Services</title>
      <p>For developers who want to add their own non-entailment explanation services, the module
evee-protege-core provides two new extension points for Protégé plug-ins:</p>
      <p>de.tu_dresden.inf.lat.evee.nonEntailment_explanation_service
for explanation services and</p>
      <p>de.tu_dresden.inf.lat.evee.nonEntailment_preferences
for managing plug-in-specific preference settings.</p>
      <p>The preferences extension point is simple: One implements the interface PreferencesPanel
provided by Protégé, and the resulting panel will be displayed in a tabbed pane accessible via
Preferences → Explanations → Missing Entailment. Using the explanation service extension
point requires a few more steps. Essentially, an explanation service needs to provide the
nonentailment explanations as a Java Stream and visualize the elements of this stream in Protégé.
To facilitate this for abduction and counterexamples, we provide two abstract base classes for
abduction and counterexample services.</p>
      <p>The main interface for explanation services is IOWLNonEntailmentExplainer, whose
most important methods are supportsExplanation() and generateExplanations().
The first method determines whether the Generate Explanation button should be enabled or
disabled. Since this method is called whenever the input changes, its implementation should
not be computationally expensive. The second method returns the explanation in the form of
a Stream&lt;Set&lt;OWLAxiom&gt;&gt;, where each set represents a single explanation for the missing
entailment.9 We use streams to accommodate a potentially infinite number of explanations, as
in the case of signature-based abduction.</p>
      <p>On top of these generic methods, INonEntailmentExplanationService provides
functionality to connect to the user interface. The method computeExplanation() is called when
the Generate Explanation button is clicked, and cancel() is called when the user wants to
cancel. The explanation service can also use an IProgressTracker to send information to the
loading window and an IExplanationGenerationListener to send events to the main tab.
To the loading window, one can send the current progress as well as a String describing the
current computation status. The events for the listener can have an ExplanationEventType of
COMPUTATION_COMPLETE, RESULT_RESET, WARNING, or ERROR. This allows the explanation
service to display new results, clear the shown result, or display warnings or errors, respectively.
The main tab ultimately requires the result in the form of a java.awt.Component, which is
retrieved via the method getResult right after an event of type COMPUTATION_COMPLETE is
received. This way, each service enjoys a great degree of freedom in displaying its
explanation. We already provide pre-built functionality for abduction and counterexample services, as
described in the following sections.</p>
      <sec id="sec-5-1">
        <title>5.1. Abstract Counterexample Generation Service</title>
        <p>The class AbstractCounterexampleGenerationService contains all functionality related
to the visualization of counterexamples and implements all methods of the
INonEntailmentExplanationService interface. Classes extending
AbstractCounterexampleGenerationService difer primarily in the used counterexample generator, which must be specified
in the constructor using the method setCounterexampleGenerator().</p>
        <p>Each counterexample generator implements the IOWLCounterexampleGenerator
interface. The interface extends IOWLNonEntailmentExplainer by generateModel() and
getMarkedIndividuals(). The model returned by generateModel() is represented using
a set of OWLIndividualAxioms. Each of those should be an instance of either
OWLClassAssertionAxiom or OWLObjectPropertyAssertionAxiom, which specify the content of
the classes and properties in the interpretation. These axioms are also returned by the method
generateExplanations() of the interface IOWLCounterexampleGenerator. Finally,
using the method getMarkedIndividuals(), the service can specify individual names that
will be highlighted in the visualization of the model.
9For abduction, these sets are the hypotheses, and for counterexamples they are sets of assertions that describe
models.</p>
        <p>As an example of how the abstract counterexample generator operates, consider again the
algorithm described in Section 3.1. This algorithm is implemented in a separate
counterexample generator and executed when generateModel() is called. Afterwards, the abstract
counterexample generator sends an ExplanationEvent of type COMPUTATION_COMPLETE
to the main tab. The resulting counter example is then provided to the main tab via the method
generateExplanations().</p>
      </sec>
      <sec id="sec-5-2">
        <title>5.2. Abstract Abduction Solver</title>
        <p>The class AbstractAbductionSolver is used by both of the plug-ins presented in Section 4.
The main responsibilities of this class are caching the results computed for a specific input,
creating and maintaining the actual result component that is displayed to the user, and handling
user input when any of the Add- or Delete-buttons of a hypothesis are clicked (see Figure 3).
The class is generic in order to facilitate the caching of diferent kinds of results for each
implementing solver via its generic type parameter. Caching is not done automatically by the abstract
solver class. Instead, the implementing solver can use the methods checkResultInCache,
saveResultToCache and loadResultFromCache.</p>
        <p>In contrast to these user-experience-related functionalities, the actual computation of the
missing entailment explanation is left to the individual implementations of the abstract class.
As explained above, implementing the interface IOWLNonEntailmentExplainer requires
providing a stream of explanations via the method generateExplanations(), i.e. a stream
of sets of OWLAxioms, where each set represents a single hypothesis. This method will
ultimately be called by the AbstractAbductionSolver when creating the list of non-entailment
explanations that is shown to the user.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion</title>
      <p>We believe that our plug-ins are an important step towards making reasoning more
understandable to ontology users. The implementation is still relatively new and there are little performance
issues that need to be solved. We hope that our framework will encourage other developers to
implement their own explanation services in Evee. In addition to further improving Evee, we
would like to evaluate our plug-ins in a user study. It would also be interesting to investigate
whether Evee can be used to improve university-level teaching on ontologies and description
logics.</p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgments</title>
      <p>This work was supported by DFG grant 389792660 as part of TRR 248 – CPEC (see https:
//perspicuous-computing.science).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>A.</given-names>
            <surname>Borgida</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Franconi</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Horrocks</surname>
          </string-name>
          ,
          <article-title>Explaining ALC subsumption</article-title>
          , in: W. Horn (Ed.),
          <source>ECAI 2000, Proceedings of the 14th European Conference on Artificial Intelligence</source>
          , IOS Press,
          <year>2000</year>
          , pp.
          <fpage>209</fpage>
          -
          <lpage>213</lpage>
          . URL: http://www.frontiersinai.com/ecai/ecai2000/pdf/p0209.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>D. L.</given-names>
            <surname>McGuinness</surname>
          </string-name>
          ,
          <source>Explaining Reasoning in Description Logics, Ph.D. thesis</source>
          , Rutgers University, NJ, USA,
          <year>1996</year>
          . doi:
          <volume>10</volume>
          .7282/t3-q0c6-5305.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Peñaloza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Suntisrivaraporn</surname>
          </string-name>
          ,
          <article-title>Pinpointing in the description logic EL+</article-title>
          , in: J.
          <string-name>
            <surname>Hertzberg</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Beetz</surname>
          </string-name>
          , R. Englert (Eds.),
          <source>KI 2007: Advances in Artificial Intelligence, 30th Annual German Conference on AI</source>
          , volume
          <volume>4667</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2007</year>
          , pp.
          <fpage>52</fpage>
          -
          <lpage>67</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -74565-
          <issue>5</issue>
          _
          <fpage>7</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>M.</given-names>
            <surname>Horridge</surname>
          </string-name>
          ,
          <source>Justification Based Explanation in Ontologies, Ph.D. thesis</source>
          , University of Manchester, UK,
          <year>2011</year>
          . URL: https://www.research.manchester.ac.uk/portal/files/54511395/ FULL_TEXT.PDF.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Schlobach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cornet</surname>
          </string-name>
          ,
          <article-title>Non-standard reasoning services for the debugging of description logic terminologies</article-title>
          , in: G. Gottlob, T. Walsh (Eds.),
          <source>IJCAI-03, Proceedings of the Eighteenth International Joint Conference on Artificial Intelligence</source>
          , Morgan Kaufmann,
          <year>2003</year>
          , pp.
          <fpage>355</fpage>
          -
          <lpage>362</lpage>
          . URL: http://ijcai.org/Proceedings/03/Papers/053.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Horridge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Parsia</surname>
          </string-name>
          , U. Sattler,
          <article-title>Explaining inconsistencies in OWL ontologies</article-title>
          , in: L.
          <string-name>
            <surname>Godo</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          . Pugliese (Eds.), Scalable Uncertainty Management, Third International Conference, SUM, Proceedings, volume
          <volume>5785</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2009</year>
          , pp.
          <fpage>124</fpage>
          -
          <lpage>137</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -04388-8_
          <fpage>11</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kazakov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Klinov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Stupnikov</surname>
          </string-name>
          ,
          <article-title>Towards reusable explanation services in protege</article-title>
          , in: A.
          <string-name>
            <surname>Artale</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Glimm</surname>
          </string-name>
          , R. Kontchakov (Eds.),
          <source>Proceedings of the 30th International Workshop on Description Logics</source>
          , volume
          <volume>1879</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2017</year>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-1879/paper31.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>C.</given-names>
            <surname>Alrabbaa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Borgwardt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kovtunova</surname>
          </string-name>
          ,
          <article-title>Finding small proofs for description logic entailments: Theory and practice</article-title>
          , in: E.
          <string-name>
            <surname>Albert</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          Kovács (Eds.),
          <source>LPAR 2020: 23rd International Conference on Logic for Programming</source>
          ,
          <source>Artificial Intelligence and Reasoning</source>
          , volume
          <volume>73</volume>
          of EPiC Series in Computing, EasyChair,
          <year>2020</year>
          , pp.
          <fpage>32</fpage>
          -
          <lpage>67</lpage>
          . doi:
          <volume>10</volume>
          . 29007/nhpp.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>C.</given-names>
            <surname>Alrabbaa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Borgwardt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kovtunova</surname>
          </string-name>
          ,
          <article-title>On the complexity of finding good proofs for description logic entailments</article-title>
          , in: S. Borgwardt, T. Meyer (Eds.),
          <source>Proceedings of the 33rd International Workshop on Description Logics (DL</source>
          <year>2020</year>
          ), volume
          <volume>2663</volume>
          <source>of CEUR Workshop Proceedings, CEUR-WS.org</source>
          ,
          <year>2020</year>
          . URL: http://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>2663</volume>
          /paper-1.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>C.</given-names>
            <surname>Alrabbaa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Borgwardt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Kovtunova</surname>
          </string-name>
          ,
          <article-title>Finding good proofs for description logic entailments using recursive quality measures</article-title>
          , in: A.
          <string-name>
            <surname>Platzer</surname>
          </string-name>
          , G. Sutclife (Eds.),
          <source>Automated Deduction - CADE 28 - 28th International Conference on Automated Deduction</source>
          , volume
          <volume>12699</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2021</year>
          , pp.
          <fpage>291</fpage>
          -
          <lpage>308</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -79876-5_
          <fpage>17</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>C.</given-names>
            <surname>Alrabbaa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Borgwardt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Friese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Méndez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Popovic</surname>
          </string-name>
          ,
          <article-title>On the eve of true explainability for OWL ontologies: Description logic proofs with Evee and Evonne</article-title>
          , in: O.
          <string-name>
            <surname>Arieli</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Homola</surname>
            ,
            <given-names>J. C.</given-names>
          </string-name>
          <string-name>
            <surname>Jung</surname>
          </string-name>
          , M. Mugnier (Eds.),
          <source>Proceedings of the 35th International Workshop on Description Logics (DL)</source>
          , volume
          <volume>3263</volume>
          <source>of CEUR Workshop Proceedings</source>
          , CEURWS.org,
          <year>2022</year>
          . URL: https://ceur-ws.
          <source>org/</source>
          Vol-
          <volume>3263</volume>
          /paper-2.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J.</given-names>
            <surname>Méndez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Alrabbaa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Langner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Dachselt</surname>
          </string-name>
          ,
          <article-title>Evonne: A visual tool for explaining reasoning with OWL ontologies and supporting interactive debugging</article-title>
          ,
          <source>Computer Graphics Forum</source>
          (
          <year>2023</year>
          ). doi:https://doi.org/10.1111/cgf.14730.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>C.</given-names>
            <surname>Alrabbaa</surname>
          </string-name>
          , W. Hieke,
          <article-title>Explaining non-entailment by model transformation for the description logic ℰℒ</article-title>
          , in: A.
          <string-name>
            <surname>Artale</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Calvanese</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          Zhang (Eds.),
          <source>Proceedings of the 11th International Joint Conference on Knowledge Graphs</source>
          ,
          <string-name>
            <surname>IJCKG</surname>
          </string-name>
          , ACM,
          <year>2022</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>9</lpage>
          . doi:
          <volume>10</volume>
          .1145/3579051.3579060.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Del-Pinto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Tourret</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <article-title>Signature-based abduction for expressive description logics</article-title>
          , in: D.
          <string-name>
            <surname>Calvanese</surname>
          </string-name>
          , E. Erdem, M. Thielscher (Eds.),
          <source>Proceedings of the 17th International Conference on Principles of Knowledge Representation and Reasoning</source>
          , KR,
          <year>2020</year>
          , pp.
          <fpage>592</fpage>
          -
          <lpage>602</lpage>
          . doi:
          <volume>10</volume>
          .24963/kr.2020/59.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <article-title>Signature-based abduction with fresh individuals and complex concepts for description logics</article-title>
          , in: Z.
          <string-name>
            <surname>Zhou</surname>
          </string-name>
          (Ed.),
          <source>Proceedings of the Thirtieth International Joint Conference on Artificial Intelligence, IJCAI, ijcai.org</source>
          ,
          <year>2021</year>
          , pp.
          <fpage>1929</fpage>
          -
          <lpage>1935</lpage>
          . doi:
          <volume>10</volume>
          .24963/ ijcai.
          <year>2021</year>
          /266.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>F.</given-names>
            <surname>Haifani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Tourret</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Weidenbach</surname>
          </string-name>
          ,
          <article-title>Connection-minimal abduction in ℰℒ via translation to FOL</article-title>
          , in: J.
          <string-name>
            <surname>Blanchette</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Kovács</surname>
          </string-name>
          , D. Pattinson (Eds.),
          <source>Automated Reasoning</source>
          , Springer International Publishing, Cham,
          <year>2022</year>
          , pp.
          <fpage>188</fpage>
          -
          <lpage>207</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>031</fpage>
          -10769-6_
          <fpage>12</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>C.</given-names>
            <surname>Alrabbaa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Borgwardt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Friese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kotlov</surname>
          </string-name>
          ,
          <article-title>Why not? Explaining missing entailments with Evee</article-title>
          (
          <source>Technical report)</source>
          ,
          <year>2023</year>
          . doi:
          <volume>10</volume>
          .48550/arXiv.2308.07294.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>F.</given-names>
            <surname>Baader</surname>
          </string-name>
          , I. Horrocks,
          <string-name>
            <given-names>C.</given-names>
            <surname>Lutz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Sattler</surname>
          </string-name>
          , An Introduction to Description Logic, Cambridge University Press,
          <year>2017</year>
          . doi:
          <volume>10</volume>
          .1017/9781139025355.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kazakov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Krötzsch</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Simancik</surname>
          </string-name>
          ,
          <article-title>The incredible ELK - from polynomial procedures to eficient reasoning with ℰℒ ontologies</article-title>
          ,
          <source>J. Autom. Reason</source>
          .
          <volume>53</volume>
          (
          <year>2014</year>
          )
          <fpage>1</fpage>
          -
          <lpage>61</lpage>
          . doi:
          <volume>10</volume>
          .1007/ s10817-013-9296-3.
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <article-title>LETHE: forgetting and uniform interpolation for expressive description logics</article-title>
          ,
          <source>Künstliche Intell</source>
          .
          <volume>34</volume>
          (
          <year>2020</year>
          )
          <fpage>381</fpage>
          -
          <lpage>387</lpage>
          . doi:
          <volume>10</volume>
          .1007/s13218-020-00655-w.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>D.</given-names>
            <surname>Calvanese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. D.</given-names>
            <surname>Giacomo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lenzerini</surname>
          </string-name>
          ,
          <article-title>Reasoning in expressive description logics with fixpoints based on automata on infinite trees</article-title>
          , in: T.
          <string-name>
            <surname>Dean</surname>
          </string-name>
          (Ed.),
          <source>Proceedings of the Sixteenth International Joint Conference on Artificial Intelligence</source>
          , IJCAI, Morgan Kaufmann,
          <year>1999</year>
          , pp.
          <fpage>84</fpage>
          -
          <lpage>89</lpage>
          . URL: http://ijcai.org/Proceedings/99-1/Papers/013.pdf.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>