<!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>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Zuzana Hlávková</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Martin Homola</string-name>
          <email>homola@fmph.uniba.sk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Patrick Koopmann</string-name>
          <email>patrick.koopmann@tu-dresden.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Júlia Pukancová</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Comenius University in Bratislava</institution>
          ,
          <addr-line>Mlynská dolina, 842 41 Bratislava</addr-line>
          ,
          <country country="SK">Slovakia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Theoretical Computer Science, TU Dresden</institution>
          ,
          <addr-line>Dresden</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>As abduction is getting more attention in the world of ontologies, multiple abduction solvers for description logics (DL) have been developed. So far, however, there was no attempt for a unified API that would facilitate the integration of diferent DL abduction solvers in an application, in the way e.g. the OWL API does it for deductive OWL reasoning systems. In order to fill this gap, we abstract the common functionalities of diferent DL abduction solvers and introduce the DL Abduction API.</p>
      </abstract>
      <kwd-group>
        <kwd>abduction</kwd>
        <kwd>description logics</kwd>
        <kwd>ontologies</kwd>
        <kwd>software engineering</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>API for DL</p>
    </sec>
    <sec id="sec-2">
      <title>1. Introduction</title>
      <p>
        Abduction, stemming from the ideas of Peirce [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], is a reasoning task to provide
hypothetical explanations of why some observations of a modelled phenomenon are not supported by
deductive entailments of a knowledge model of the phenomenon. Specifically in DL, given a
knowledge base 
and an observation in form of a set of axioms  s.t. 
⊧ ̸  , we are looking for
explanations in form of sets of axioms ℰ that one can add to  to support  , that is, for which
 ∪ ℰ ⊧ 
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. For example, consider a knowledge base  :
      </p>
      <sec id="sec-2-1">
        <title>Mother ⊔ Father ⊑ Parent</title>
      </sec>
      <sec id="sec-2-2">
        <title>Parent ⊑ Happy</title>
      </sec>
      <sec id="sec-2-3">
        <title>Person(Jack),</title>
      </sec>
      <sec id="sec-2-4">
        <title>Parent(Jill)</title>
        <p>We may explain the observation  1 = {Happy(jack)} by any of the following explanations:
ℰ1 = {Mother(jack)}, ℰ2 = {Father(jack)}, ℰ3 = {Parent(jack)}.</p>
        <p>
          Depending on the type of axioms which are allowed in  , and for which we are looking in ℰ,
we distinguish ABox abduction (as in our example above) which looks for explanations on the
data level, i.e. providing explanations as ABox axioms [
          <xref ref-type="bibr" rid="ref3 ref4 ref5 ref6">3, 4, 5, 6</xref>
          ].
        </p>
        <p>
          In turn, TBox abduction looks for explanations on the conceptual level, i.e. providing
explanations as TBox axioms [
          <xref ref-type="bibr" rid="ref7 ref8 ref9">7, 8, 9</xref>
          ]. Assume again 
be explained by ℰ4 = {Parent ⊑ Person}.
as above, then  2 = {Mother ⊑ Person} may
nEvelop-O
LGOBE
https://dai.fmph.uniba.sk/~homola/ (M. Homola); https://lat.inf.tu-dresden.de/~koopmann/ (P. Koopmann);
        </p>
        <p>
          More generally, knowledge base abduction is not constrained to ABox or TBox axioms [
          <xref ref-type="bibr" rid="ref10 ref2">10,
2</xref>
          ]. For instance,  1 may also be explained w.r.t.  by ℰ5 = {loves(jack, jill), Parent ⊑
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>Person, ∃loves.Person ⊑ Happy}.</title>
        <p>The definition of abduction outlined above provides the basic semantic framework for
establishing what is an explanation of a given problem. On the other hand, if one does not further
constrain possible explanations, there may be too many. In fact, due to the monotonicity of
standard DL, if there is one explanation, then there are already infinitely many in the general
sense. Explanations are therefore often constrained to be minimal. This may be either
considered in a syntactic sense (subset minimal), e.g. all ℰ1–3 are subset minimal explanations of  1
while on the other hand ℰ6 = {{Parent(jack), {Person(jack)} is not, as ℰ3 ⊊ ℰ6 is smaller.</p>
        <p>
          Or in a more refined semantic sense where only semantically weakest 1 explanations are
considered [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ], e.g. out of ℰ1–3, only ℰ3 is semantically minimal, as  ∪ℰ 1 ⊧ ℰ3 and  ∪ℰ 2 ⊧ ℰ3,
but not the other way around.
        </p>
        <p>
          Other relevant constraints which are almost always assumed are consistency ( ∪ ℰ is
consistent), relevance (ℰ ⊧ ̸  ), and explanatoriness ( ⊧ ̸  ). However, depending on the
application, diferent additional constraints may be useful, e.g. solipsisticity (ℰ only contains
individuals from  ). All explanations illustrated above are consistent, relevant and explanatory,
and all but ℰ5 are also solipsistic. For more details refer to Elsenbroich et al. [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>
          Another way how to constrain the explanations – and thus the search space for the abduction
reasoner – is by constraining the set of expressions that could possibly become explanations.
This is done by specifying the abducibles. Here, abducibles may either refer to a restricted set
of axioms of which the explanation has to be a subset [
          <xref ref-type="bibr" rid="ref12 ref13">12, 13</xref>
          ], or to a restricted signature of
individual, concept and role names [
          <xref ref-type="bibr" rid="ref14 ref4">14, 4</xref>
          ], in which case there is still an unbounded set of axioms
that can be used in an explanation. Indeed, given a particular application, the user may only be
interested in explanations involving a certain specific set of concepts, roles or individuals. If
such constraints are known beforehand, it may significantly improve the reasoner’s running
time, but they can also impact the computational complexity of abduction negatively [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
        </p>
        <p>
          Abduction in DL has a number of interesting applications, e.g. ontology debugging and support
for test-driven ontology development [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], manufacturing control [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], medical diagnosis [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ],
multimedia interpretation [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], ontology repair [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] and explaining missing entailments [
          <xref ref-type="bibr" rid="ref13 ref14 ref18">18, 14,
13</xref>
          ].
        </p>
        <p>
          A number of DL abduction solvers have been developed, including the works of Du et al.
[
          <xref ref-type="bibr" rid="ref12">12</xref>
          ], Del-Pinto and Schmidt [
          <xref ref-type="bibr" rid="ref19 ref20">19, 20</xref>
          ], Pukancová and Homola [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ], and Homola et al. [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], and
Koopmann et al. [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. Each of the solvers provides its own interface to the user (most often a
command-line interface).
        </p>
        <p>
          To our best knowledge, there was no attempt so far to specify a unified API interface, that
could be used to integrate one of the solvers into an application that needs to use abductive
reasoning – much in the fashion of how the popular OWL API [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] covers this task for deductive
reasoning.
        </p>
        <p>
          We propose the DL Abduction API with the aim to fill this gap. Similarly to the OWL API, it
is implemented in Java. Once an abduction solver implements the API, any Java application
can easily integrate it to compute answers for abduction problems over ontologies. The API
1Depending on the application, in some cases semantically strongest explanations may be preferred [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ].
encapsulates the most common abduction inputs such as the input ontology, observations and
abducibles, and includes switches for other common options. As most of the inputs and outputs
are in fact OWL ontologies, axioms, and symbols, the OWL API is used for their handling,
conveniently for developers already acquainted with it.
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>2. Abduction Solvers</title>
      <p>
        A DL abduction solver needs to process inputs and provide outputs. We have analyzed several
stand-alone solvers (mainly AAA [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], MHS-MXP [
        <xref ref-type="bibr" rid="ref22 ref24">22, 24</xref>
        ], and LETHE [
        <xref ref-type="bibr" rid="ref10 ref4">10, 4</xref>
        ]), and herein we
summarize their main common characteristics:
Input ontology: Also called background knowledge, this is usually specified as a set of DL
axioms in form of an OWL ontology.
      </p>
      <p>
        Observations: Some solvers support observations that are single axioms [
        <xref ref-type="bibr" rid="ref20 ref7">20, 7</xref>
        ], while others
support observations that consist of several axioms [
        <xref ref-type="bibr" rid="ref10 ref21">21, 10</xref>
        ].
      </p>
      <p>Abducibles: The simplest approach is to specify abducibles by giving a set of abducible axioms.</p>
      <p>
        Hypotheses are then generated by picking appropriate subsets of the given set of abducible
axioms [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. In contrast, in signature-based abduction, abducibles are provided in form
of a set of concept and role names, so that hypotheses are required to only use those
abducible names provided, but can combine those names to build respective axioms
[
        <xref ref-type="bibr" rid="ref21 ref24">21, 24</xref>
        ], including possibly complex ones [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] in arbitrary ways. Finally, approaches
like [
        <xref ref-type="bibr" rid="ref21 ref24">21, 24</xref>
        ] allow to give further constraints on the shape of the axioms in addition to
the signature restriction, for example by allowing loops in role assertions, allowing only
concept names rather than complex concepts, or only allowing concepts of the form 
and ¬ for an atomic concept  .
      </p>
      <p>
        Outputs: Each abduction solver computes one or several solutions, called hypotheses or
explanations, which usually consist of a single axiom or a set of axioms. For some
approaches, the space of solutions is potentially infinite, or can at least get very large [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ],
and the computation of solutions can potentially take a long time.
      </p>
      <p>In addition to these, even if the proposed API is very broad in trying to incorporate all possible
features, there might always be some additional internal settings and debug outputs and it
might be desired to allow these to be handled by the API in a solver specific format. Thus, an
API for DL abduction needs to address the following challenges:
• find a uniform way of representing abducibles, while supporting the diferent types of
abducibles each solver may support;
• not only specify abducibles by means of axiom sets or signatures, but also allow to give
specific restrictions on the syntactic shape;
• be flexible regarding the shape of axioms allowed in observations and explanations: in
TBox abduction, those are restricted to be TBox axioms; in ABox abduction, they have to
be ABox axioms, and finally, in KB abduction, there is no restriction at all;
• deal with potentially long computation times;
• deal with potentially large to infinite solution sets.</p>
    </sec>
    <sec id="sec-4">
      <title>3. DL Abduction API</title>
      <p>
        We implemented the proposed DL Abduction API in Java using OWL API [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. A UML
class diagram of the central classes and interfaces is shown in Figure 1. In order to
support the API with their abduction library, developers have to implement the interfaces
A b d u c t i o n M a n a g e r , A b d u c i b l e C o n t a i n e r and A b d u c t i o n M a n a g e r A n d A b d u c i b l e C o n t a i n e r F a c t o r y .
The A b d u c t i o n M a n a g e r handles the main abduction process: here one specifies background
knowledge, the observation and abducibles, and starts the abduction process. Since the
computation of hypotheses can take time, it is possible to use the abduction manager in an asynchronous
manner. For this, the user registers an abduction M o n i t o r , which receives the hypotheses from
the abduction manager once they are computed. For the abducibles, we ofer a range of
settings restricting the shape of axioms that can be used in the explanation. This is managed by
A b d u c i b l e C o n t a i n e r , which stores information about abducible axioms, abducible signatures,
and additional properties on the shape of axioms. To deal with the diferent types of axioms
that are allowed in the abducibles, explanations and hypotheses, we use generic types, which
allow to parametrize the type for instance to only allow for TBox axioms as explanations and
observations.
      </p>
      <p>In the following, we illustrate the usage of the API step-by-step, where for simplicity, we do
not showcase the use of generics.</p>
      <sec id="sec-4-1">
        <title>3.1. Basic Initialization</title>
        <p>To instantiate A b d u c t i o n M a n a g e r and A b d u c i b l e C o n t a i n e r , the user uses the interface
A b d u c t i o n M a n a g e r A n d A b d u c i b l e C o n t a i n e r F a c t o r y as implemented by the respective abduction
library. The initialization is as follows:
A b d u c t i o n M a n a g e r A n d A b d u c i b l e C o n t a i n e r F a c t o r y a b d u c t i o n F a c t o r y
= new A b d u c t i o n M a n a g e r A n d A b d u c i b l e C o n t a i n e r F a c t o r y I m p l ( ) ;
A b d u c t i o n M a n a g e r a b d u c t i o n M a n a g e r</p>
        <p>= a b d u c t i o n F a c t o r y . c r e a t e A b d u c t i o n M a n a g e r ( ) ;
A b d u c i b l e C o n t a i n e r a b d u c i b l e C o n t a i n e r</p>
        <p>= a b d u c t i o n F a c t o r y . c r e a t e A b d u c i b l e C o n t a i n e r ( ) ;
a b d u c t i o n M a n a g e r . s e t A b d u c i b l e s ( a b d u c i b l e C o n t a i n e r ) ;</p>
        <p>We then use the A b d u c t i o n M a n a g e r instance to configure the background ontology w.r.t. which
we will perform the abduction task. The ontology is initialized and loaded via OWL API via an
O W L O n t o l o g y M a n a g e r instance and it is loaded from an IRI.</p>
        <p>OWLOntologyManager man = OWLManager . createOWLOntologyManager ( ) ;
I R I b g O I R I = I R I . c r e a t e ( ” h t t p : / / e x a m p l e . o r g / o n t o l o g y ” ) ;
OWLOntology b g O n t o l o g y = man . l o a d O n t o l o g y ( b g O I R I ) ;
a b d u c t i o n M a n a g e r . s e t B a c k g r o u n d K n o w l e d g e ( b g O n t o l o g y ) ;</p>
        <p>We also use the A b d u c t i o n M a n a g e r instance to specify the observation. Most abduction
reasoners accept observations in the form of a single axiom (which we will treat a singleton
set) or set of axioms. Observations consisting of several axioms may not be supported and also
not all possible forms of axioms may be accepted by the given reasoner. If the user supplies an
&lt;&lt;Interface&gt;&gt;</p>
        <p>AbductionManager
 + monitor: Monitor
+ run():                                     void
+ getMonitor():                           Monitor
+ setAbducibles(ABDUCIBLES):                 void
+ setObservation(OBSERVATION_TYPE):          void
+ setObservation(Set&lt;OBSERVATION_TYPE&gt;):     void
+ getObservation():            &lt;OBSERVATION_TYPE&gt;
+ getExplanations():        Set&lt;OBSERVATION_TYPE&gt;
+ getExplanationsIncrementally():            void
+ getOutputAdditionalInfo():               String
+ setAdditionalSolverSettings(String):       void
+ setBackgroundKnowledge(BCKGRNDKNW_TYPE):   void
+ getBackgroundKnowledge():     &lt;BCKGRNDKNW_TYPE&gt;
+ sendExplanation(EXPLANATION_TYPE):         void
+ getAbducibles():                     ABDUCIBLES</p>
        <p>&lt;&lt;Interface&gt;&gt;
AbductionManagerAndAbducibleContainerFactory</p>
        <p>&lt;ABDUCTION_MANAGER, ABDUCIBLE_CONTAINER&gt;
+ createAbducibleContainer():  ABDUCIBLE_CONTAINER
+ createAbductionManager():      ABDUCTION_MANAGER</p>
        <p>&lt;&lt;Interface&gt;&gt;</p>
        <p>AbducibleContainer
 + allowLoops(Boolean):                      void
 + allowRoleAssertions(Boolean):             void
 + allowConceptAssertions(Boolean):          void
 + allowComplexConcepts(Boolean):            void
 + allowConceptComplement(Boolean):          void
 + areLoopsEnabled():                     boolean
 + areRoleAssertionsEnabled():            boolean
 + areConceptAssertionsEnabled():         boolean
 + areConceptComplementsEnabled():        boolean
 + addSymbol(SYMBOL_ABDUCIBLE):              void
 + addSymbols(Collection&lt;SYMBOL_ABDUCIBLE&gt;): void
+ Monitor()
+ addNewExplanation(EXPLANATION_TYPE):      void
+ getNextExplanation():         EXPLANATION_TYPE
+ getExplanations():      List&lt;EXPLANATION_TYPE&gt;
Extends
exception
«interface»</p>
        <p>Runnable
+ ThreadVersionException()</p>
        <p>ThreadVersionException</p>
        <p>AxiomObservationException
+ AxiomObservationException(Exception)
+ AxiomObservationException(String)</p>
        <p>MultiObservationExceptionException
+ MultiObservationException()
«interfa«cien»terface»
RuntimeERxucnetpitmieoEnxception</p>
        <p>Extends</p>
        <p>CommonException
+ serialVersionUID: long
+ CommonException(String, Exception)
+ CommonException(String)</p>
        <p>Extends
Extends</p>
        <p>Extends</p>
        <p>Extends</p>
        <p>AxiomAbducibleSymbolExceptionException
+ AxiomAbducibleSymbolException(Exception)
+ AxiomAbducibleSymbolException(String)</p>
        <p>AxiomAbducibleAssertionExceptionException
+ AxiomAbducibleAssertionException(Exception)
+ AxiomAbducibleAssertionException(String)</p>
        <p>AxiomAbducibleException
+ AxiomAbducibleException()
observation that is not supported, the abduction manager will throw MultiObservationException
or AxiomObservationException respectively.</p>
        <p>I R I obsOIRI = I R I . c r e a t e ( ” http : / / example . org / o b s e r v a t i o n s ” ) ;
OWLOntology obsOntology = man . loadOntology ( obsOIRI ) ;
Set &lt;OWLOntology&gt; obsOntologySet = new HashSet &lt; &gt;() ;
o b s O n t o l o g y S e t . . add ( o b s O n t o l o g y ) ;
t r y {</p>
        <p>a b d u c t i o n M a n a g e r . s e t O b s e r v a t i o n ( o b s O n t o l o g y S e t ) ;
} c a t c h ( CommonException ex ) {</p>
        <p>throw new CommonException ( ” S o l v e r e x c e p t i o n : ” , ex ) ;</p>
      </sec>
      <sec id="sec-4-2">
        <title>3.2. Configuring Abducibles</title>
        <p>Abducibles are vital to constrain the solution space. They can be specified in multiple ways. The
ifrst option is to specify possible symbols from which possible explanations may be constructed
(in which case we are essentially performing signature-based abduction). For this we initialize
an instance of and OWLDataFactory. Consecutively the abducibleContainer is configured by
adding all these OWL API entity representations.</p>
        <p>OWLDataFactory d f = o . getOWLOntologyManager ( ) . getOWLDataFactory ( ) ;
O W L I n d i v i d u a l i n d J a c k = d f . getOWLNamedIndividual ( bgOIRI +”# j a c k ” ) ;
O W L I n d i v i d u a l i n d J i l l = d f . getOWLNamedIndividual ( bgOIRI +”# j i l l ” ) ;
OWLClass c l s P a r e n t = d f . getOWLClass ( bgOIRI +”# P a r e n t ” ) ;
OWLObjectProperty o p r H a s C h i l d = d f . g e t O W L O b j e c t P r o p e r t y ( bgOIRI +”#
h a s C h i l d ” ) ;
t r y {
a b d u c i b l e C o n t a i n e r . addSymbol ( i n d J a c k ) ;
a b d u c i b l e C o n t a i n e r . addSymbol ( i n d J i l l ) ;
a b d u c i b l e C o n t a i n e r . addSymbol ( c l s P a r e n t ) ;
a b d u c i b l e C o n t a i n e r . addSymbol ( o p r H a s C h i l d ) ;
} c a t c h ( CommonException ex ) {</p>
        <p>throw new CommonException ( ” S o l v e r e x c e p t i o n : ” , ex ) ;
}
}</p>
        <p>Alternatively, we allow passing of abducible symbols via an ontology that contains
declarations of all abducible symbols.</p>
        <p>OWLOntology a b d S y m b o l L i s t =</p>
        <p>man . loadOntologyFromOntologyDocument ( new F i l e ( ” abd −s y m b o l s . owl ” ) ) ;
t r y {</p>
        <p>a b d u c i b l e C o n t a i n e r . addSymbols ( a b d S y m b o l L i s t ) ;
} c a t c h ( CommonException ex ) {</p>
        <p>throw new CommonException ( ” S o l v e r e x c e p t i o n : ” , ex ) ;</p>
        <p>The addSymbol and addSymbols methods may throw an AxiomAbducibleSymbolException in
case the passed symbols are not supported by the respective abduction solver.</p>
        <p>In addition to specifying the signature, AbducibleContainerImpl features a number of
Boolean switches to control the shape of the axioms in a solution. allowConceptAssertions
and allowRoleAssertions respectively allow or disallow axioms in the hypotheses that are
concept or role assertions. If concept assertions are allowed, allowConceptComplement and
allowComplexConcepts can be used to determine whether only concept names, negated concept
names, or also complex concepts are allowed. With role assertions enabled, allowLoops may be
used to toggle reflexive role assertions (loops).</p>
        <p>Alternatively to the option above (i.e. to specify abducible symbols, possibly supplemented
by constraints on the generated axioms), users may also directly specify the set of abducible
axioms. Both approaches are mutually exclusive: if one tries to specify abducible symbols
and abducible axioms, the API will throw an exception. Similarly it is not possible to specify
abducible axioms and additional constraints on their shape (as constraints only apply to axioms
generated from abducible symbols).</p>
        <p>An example of the latter option (i.e. abducible axioms) follows:
O W L I n d i v i d u a l i n d J a c k = d f . getOWLNamedIndividual ( bgOIRI +”# j a c k ” ) ;
OWLClass c l s P e r s o n = d f . getOWLClass ( bgOIRI +”# P e r s o n ” ) ;
OWLClass c l s P a r e n t = d f . getOWLClass ( bgOIRI +”# P a r e n t ” ) ;
OWLObjectComplementOf c l s C 1 = d f . getOWLObjectComplementOf ( c l s P a r e n t ) ;
O W L O b j e c t I n t e r s e c t i o n O f c l s C 2</p>
        <p>= d f . g e t O W L O b j e c t I n t e r s e c t i o n O f ( c l s P e r s o n , c l s C 1 ) ;
t r y {
a b d u c i b l e C o n t a i n e r . a d d A s s e r t i o n (</p>
        <p>d f . g e t O W L C l a s s A s s e r t i o n A x i o m ( c l s P e r s o n , i n d J a c k ) ) ;
a b d u c i b l e C o n t a i n e r . a d d A s s e r t i o n (</p>
        <p>d f . g e t O W L C l a s s A s s e r t i o n A x i o m ( c l s P a r e n t , i n d J a c k ) ) ;
a b d u c i b l e C o n t a i n e r . a d d A s s e r t i o n (</p>
        <p>d f . g e t O W L C l a s s A s s e r t i o n A x i o m ( c l s C 1 , i n d J a c k ) ) ;
a b d u c i b l e C o n t a i n e r . a d d A s s e r t i o n (</p>
        <p>d f . g e t O W L C l a s s A s s e r t i o n A x i o m ( c l s C 2 , i n d J a c k ) ) ;
} c a t c h ( CommonException ex ) {</p>
        <p>throw new CommonException ( ” S o l v e r e x c e p t i o n : ” , ex ) ;
}
}</p>
        <p>Similarly as for the abducible signatures, it is possible to add several assertions at once by
providing an OWLOntology object. Then, all axioms of that ontology are added.
OWLOntology a b d A x i o m L i s t =</p>
        <p>man . loadOntologyFromOntologyDocument ( new F i l e ( ” abd −axioms . owl ” ) ) ;
t r y {</p>
        <p>a b d u c i b l e C o n t a i n e r . a d d A s s e r t i o n s ( a b d A x i o m L i s t ) ;
} c a t c h ( CommonException ex ) {
throw new CommonException ( ” S o l v e r e x c e p t i o n : ” , ex ) ;</p>
        <p>Depending on the solver implementation, if e.g. an unsupported abducible axiom is passed
then AxiomAbducibleAssertionException is thrown.</p>
      </sec>
      <sec id="sec-4-3">
        <title>3.3. Internal Solver Settings</title>
        <p>Diferent solvers may have additional specific functionalities which are not covered by our API.
While this being the case it may still be useful to pass control parameters into the solver. We
include a method to pass such information as a single string in a format prescribed by the given
solver:
a b d u c t i o n M a n a g e r . s e t A d d i t i o n a l S o l v e r S e t t i n g s ( ” i n t e r n a l S e t t i n g s ” ) ;</p>
      </sec>
      <sec id="sec-4-4">
        <title>3.4. Running the Solver</title>
        <p>Once everything is configured, users can run the solver and compute explanations, for which
we again support diferent methods. If the number of solutions is finite, the following method
can be used to compute all explanations:
S e t &lt; E x p l a n a t i o n &gt; e x p l a n a t i o n s = a b d u c t i o n M a n a g e r . g e t E x p l a n a t i o n s ( ) ;</p>
        <p>If one only requires single explanation, i.e. one that is found first, this can be computed as
follows:
E x p l a n a t i o n e x p l a n a t i o n = a b d u c t i o n M a n a g e r . g e t E x p l a n a t i o n ( ) ;</p>
        <p>The solvers may output additional information associated with the explanations (debug logs,
etc.). This is also accessible via the API as follows:
S t r i n g l o g = a b d u c t i o n M a n a g e r . g e t O u t p u t A d d i t i o n a l I n f o ( ) ;</p>
        <p>The search for all abductive explanations is computationally hard, and the implementation
of the solver may in fact find some explanations early on, while it may take much longer to
completely search through the whole search space. In order to make the explanations accessible
on-the-fly, as soon as they are computed DL Abduction API implements a multi-threaded version
based on the monitor design pattern. The respective UML sequential diagram in printed in
Fig. 2.</p>
        <p>First the monitor that handles the communication is obtained from the a b d u c t i o n M a n a g e r
instance:
m o n i t o r = a b d u c t i o n M a n a g e r . g e t M o n i t o r ( ) ;</p>
        <p>Then, in order to process the explanations as they are obtained, we initialize a second thread
in which we iteratively query the monitor for new explanations:
T h r e a d c t = new T h r e a d ( ) {
p u b l i c v o i d run ( ) {
w h i l e ( t r u e ) {
s y n c h r o n i z e d ( m o n i t o r ) {
t r y {
m o n i t o r . w a i t ( ) ;
O b j e c t e x p l a n a t i o n = m o n i t o r . g e t N e x t E x p l a n a t i o n ( ) ;
i f ( e x p l a n a t i o n == n u l l ) {
m o n i t o r . n o t i f y ( ) ;
b r e a k ;
: app
thread 1
: Monitor
: AbductionManager
thread 2
: solver</p>
        <p>Then abduction is called by the method getExplanationsIncrementally and a new the
computation is started in a new thread in the abductionManager:
a b d u c t i o n M a n a g e r . g e t E x p l a n a t i o n s I n c r e m e n t a l l y ( ) ;</p>
        <p>Once the solver’s search for new explanations is over, the monitor.getNextExplanation() call
returns null and the processing loop will break.</p>
        <p>start()
addExplanation
getNextExplanation()
return newExplanation</p>
        <p>notify()
getNextExplanation()
return newExplanation
opt
[solver is terminated]
addNewExplanation(explanation)</p>
        <p>notify()
addNewExplanation(null)
notify()</p>
        <p>solve()
sendExplanation()</p>
        <p>return</p>
        <p>List of explanations
sendExplanation(null)</p>
        <p>computing
newExplanation</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>4. Implementation in MHS-MXP Solver</title>
      <p>
        The DL Abduction API has been implemented into MHS-MXP [
        <xref ref-type="bibr" rid="ref22 ref24">22, 24</xref>
        ] which is an ABox
abduction reasoner. The API functionality integrated includes all main abduction inputs:
passing the background ontology, the observation (including a set of axioms), and abducibles.
      </p>
      <p>Signature-based abducibles are supported by passing symbols (individuals and concepts),
and the switch to allow or disallow negated concept assertions in explanations is implemented
too. Axiom-based abducibles are also supported. (These two options are exclusive.) A
depthlimitation for the MHS-tree and a time out can be passed as internal settings.</p>
      <p>The solver may be run via both the non-threaded and threaded version of the API. If the
solver is extended in the future to support role explanations and abducibles, also this part of the
API implementation is already prepared.</p>
    </sec>
    <sec id="sec-6">
      <title>5. Conclusions and Future Work</title>
      <p>Based on our analysis of several ABox abduction solvers, we have proposed DL Abduction
API, a Java API that may be implemented by DL abduction solvers in order to facilitate their
integration into applications.</p>
      <p>Our API allows to pass the most relevant inputs, including the background ontology,
observations, and abducibles, and it features settings to toggle the most common options. Any
additional specific options can be also passed in a format required specific to a given solver.</p>
      <p>
        The inputs and outputs such as ontologies, axioms, or symbols are passed using OWL API
[
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] constructs as much as possible to facilitate the implementation for developers who are
likely already acquainted with OWL API due to its popularity in the DL community.
      </p>
      <p>As abduction is computationally demanding and explanations are found by exploring the
given search space, our API includes a mechanism of incremental reporting of the found
explanations that is based on the monitor design pattern.</p>
      <p>
        The API is available as source code and as a j a r file 2. It has been already integrated into the
latest version3 of the experimental reasoner MHS-MXP [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ]. Its integration into the LETHE
reasoner [
        <xref ref-type="bibr" rid="ref10 ref4">10, 4</xref>
        ] is currently ongoing.
      </p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgments</title>
      <p>This work was supported by the Slovak Research and Development Agency under the
Contract no. APVV-19-0220 (ORBIS) and by the EU H2020 programme under Contract no. 952215
(TAILOR). Martin Homola is also supported by projects VEGA 1/0621/22 and APVV-20-0353.
2https://github.com/elratondesusi/DT
3https://github.com/elratondesusi/DT-demo</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>C. S.</given-names>
            <surname>Peirce</surname>
          </string-name>
          ,
          <article-title>Illustrations of the logic of science VI: Deduction, induction, and hypothesis</article-title>
          ,
          <source>Popular Science Monthly</source>
          <volume>13</volume>
          (
          <year>1878</year>
          )
          <fpage>470</fpage>
          -
          <lpage>482</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C.</given-names>
            <surname>Elsenbroich</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Kutz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Sattler</surname>
          </string-name>
          ,
          <article-title>A case for abductive reasoning over ontologies</article-title>
          ,
          <source>in: Proceedings of the OWLED*06 Workshop on OWL: Experiences and Directions</source>
          , Athens, GA, US, volume
          <volume>216</volume>
          <source>of CEUR-WS</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Pukancová</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Homola</surname>
          </string-name>
          ,
          <article-title>Tableau-based ABox abduction for description logics: Preliminary report</article-title>
          ,
          <source>in: Proceedings of the 29th International Workshop on Description Logics</source>
          , Cape Town, South Africa,
          <source>April 22-25</source>
          ,
          <year>2016</year>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <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</source>
          <year>2021</year>
          , Virtual Event / Montreal, Canada,
          <fpage>19</fpage>
          -27
          <source>August</source>
          <year>2021</year>
          ,
          <article-title>ijcai</article-title>
          .org,
          <year>2021</year>
          , pp.
          <fpage>1929</fpage>
          -
          <lpage>1935</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>S.</given-names>
            <surname>Klarman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Endriss</surname>
          </string-name>
          , S. Schlobach,
          <article-title>ABox abduction in the description logic  ℒ</article-title>
          ,
          <source>Journal of Automated Reasoning</source>
          <volume>46</volume>
          (
          <year>2011</year>
          )
          <fpage>43</fpage>
          -
          <lpage>80</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>K.</given-names>
            <surname>Halland</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Britz</surname>
          </string-name>
          , Abox abduction in  ℒ
          <article-title>using a DL tableau</article-title>
          , in: 2012 South African Institute of Computer Scientists and Information Technologists Conference, SAICSIT '12,
          <string-name>
            <surname>Pretoria</surname>
          </string-name>
          , South Africa,
          <year>2012</year>
          , pp.
          <fpage>51</fpage>
          -
          <lpage>58</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <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
          <source>: Proceedings of the International Joint Conference on Automated Reasoning (IJCAR 2022), Lecture Notes on Computer Science</source>
          , Springer,
          <year>2022</year>
          . To appear.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Du</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Wan</surname>
          </string-name>
          , H. Ma,
          <article-title>Practical TBox abduction based on justification patterns</article-title>
          ,
          <source>in: Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>1100</fpage>
          -
          <lpage>1106</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Wei-Kleiner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Z.</given-names>
            <surname>Dragisic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Lambrix</surname>
          </string-name>
          ,
          <article-title>Abduction framework for repairing incomplete ℰ ℒ ontologies: Complexity results and algorithms</article-title>
          ,
          <source>in: Proceedings of the Twenty-Eighth AAAI Conference on Artificial Intelligence, July 27 -31</source>
          ,
          <year>2014</year>
          ,
          <string-name>
            <given-names>Québec</given-names>
            <surname>City</surname>
          </string-name>
          , Québec, Canada.,
          <year>2014</year>
          , pp.
          <fpage>1120</fpage>
          -
          <lpage>1127</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <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>
          ,
          <source>in: Proceedings of the 17th International Conference on Principles of Knowledge Representation and Reasoning</source>
          , KR 2020, Rhodes, Greece,
          <year>2020</year>
          , pp.
          <fpage>592</fpage>
          -
          <lpage>602</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>G.</given-names>
            <surname>Petasis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Möller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Karkaletsis</surname>
          </string-name>
          ,
          <string-name>
            <surname>BOEMIE</surname>
          </string-name>
          :
          <article-title>Reasoning-based information extraction</article-title>
          ,
          <source>in: Proceedings of the 1st Workshop on Natural Language Processing and Automated Reasoning co-located with 12th International Conference on Logic Programming and Nonmonotonic Reasoning (LPNMR</source>
          <year>2013</year>
          ),
          <string-name>
            <given-names>A</given-names>
            <surname>Corunna</surname>
          </string-name>
          , Spain,
          <year>September 15th</year>
          ,
          <year>2013</year>
          .,
          <year>2013</year>
          , pp.
          <fpage>60</fpage>
          -
          <lpage>75</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J.</given-names>
            <surname>Du</surname>
          </string-name>
          , G. Qi,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Shen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. Z.</given-names>
            <surname>Pan</surname>
          </string-name>
          ,
          <article-title>Towards practical ABox abduction in large description logic ontologies</article-title>
          ,
          <source>Int. J. Semantic Web Inf. Syst</source>
          .
          <volume>8</volume>
          (
          <issue>2012</issue>
          )
          <fpage>1</fpage>
          -
          <lpage>33</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>İ.</given-names>
            <surname>İ. Ceylan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Lukasiewicz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Malizia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Molinaro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Vaicenavicius</surname>
          </string-name>
          ,
          <article-title>Explanations for negative query answers under existential rules</article-title>
          , in: D.
          <string-name>
            <surname>Calvanese</surname>
          </string-name>
          , E. Erdem, M. Thielscher (Eds.),
          <source>Proceedings of KR</source>
          <year>2020</year>
          , AAAI Press,
          <year>2020</year>
          , pp.
          <fpage>223</fpage>
          -
          <lpage>232</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>D.</given-names>
            <surname>Calvanese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ortiz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Simkus</surname>
          </string-name>
          , G. Stefanoni,
          <article-title>Reasoning about explanations for negative query answers in DL-Lite</article-title>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Artif</surname>
          </string-name>
          .
          <source>Intell. Res</source>
          .
          <volume>48</volume>
          (
          <year>2013</year>
          )
          <fpage>635</fpage>
          -
          <lpage>669</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>K.</given-names>
            <surname>Schekotihin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Rodler</surname>
          </string-name>
          , W. Schmid, Ontodebug:
          <article-title>Interactive ontology debugging plug-in for protégé</article-title>
          ,
          <source>in: Foundations of Information and Knowledge Systems - 10th International Symposium, FoIKS</source>
          <year>2018</year>
          , Budapest, Hungary, May
          <volume>14</volume>
          -18,
          <year>2018</year>
          , Proceedings, volume
          <volume>10833</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2018</year>
          , pp.
          <fpage>340</fpage>
          -
          <lpage>359</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>T.</given-names>
            <surname>Hubauer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Legat</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Seitz</surname>
          </string-name>
          ,
          <article-title>Empowering adaptive manufacturing with interactive diagnostics: A multi-agent approach</article-title>
          ,
          <source>in: Advances on Practical Applications of Agents and Multiagent Systems - 9th International Conference on Practical Applications of Agents and Multiagent Systems, PAAMS</source>
          <year>2011</year>
          , Salamanca, Spain,
          <year>2011</year>
          , pp.
          <fpage>47</fpage>
          -
          <lpage>56</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>J.</given-names>
            <surname>Pukancová</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Homola</surname>
          </string-name>
          ,
          <article-title>Abductive reasoning with description logics: Use case in medical diagnosis</article-title>
          ,
          <source>in: Proceedings of the 28th International Workshop on Description Logics (DL</source>
          <year>2015</year>
          ), Athens, Greece, volume
          <volume>1350</volume>
          <source>of CEUR-WS</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>P.</given-names>
            <surname>Koopmann</surname>
          </string-name>
          ,
          <article-title>Two ways of explaining negative entailments in description logics using abduction</article-title>
          ,
          <source>in: XLoKR 21</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>W.</given-names>
            <surname>Del-Pinto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <article-title>Forgetting-based abduction in  ℒ</article-title>
          ,
          <source>in: Proceedings of the Workshop on Second-Order Quantifier Elimination and Related Topics (SOQE</source>
          <year>2017</year>
          ), Dresden, Germany, volume
          <volume>2013</volume>
          <source>of CEUR-WS</source>
          ,
          <year>2017</year>
          , pp.
          <fpage>27</fpage>
          -
          <lpage>35</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>W.</given-names>
            <surname>Del-Pinto</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. A.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <article-title>Abox abduction via forgetting in ALC, in: The Thirty-</article-title>
          <source>Third AAAI Conference on Artificial Intelligence</source>
          ,
          <source>AAAI</source>
          <year>2019</year>
          , Honolulu, Hawaii, USA, AAAI Press,
          <year>2019</year>
          , pp.
          <fpage>2768</fpage>
          -
          <lpage>2775</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>J.</given-names>
            <surname>Pukancová</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.</surname>
          </string-name>
          <article-title>Homola, The AAA abox abduction solver</article-title>
          ,
          <source>Künstliche Intell</source>
          .
          <volume>34</volume>
          (
          <year>2020</year>
          )
          <fpage>517</fpage>
          -
          <lpage>522</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Homola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Pukancová</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gablíková</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Fabianová</surname>
          </string-name>
          , Merge, explain, iterate, in: S. Borgwardt, T. Meyer (Eds.),
          <source>Proceedings of the 33rd International Workshop on Description Logics (DL</source>
          <year>2020</year>
          ), Online Event [Rhodes, Greece], volume
          <volume>2663</volume>
          <source>of CEUR-WS</source>
          ,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>M.</given-names>
            <surname>Horridge</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Bechhofer</surname>
          </string-name>
          ,
          <article-title>The OWL API: A Java API for OWL ontologies</article-title>
          ,
          <source>Semantic Web</source>
          <volume>2</volume>
          (
          <year>2011</year>
          )
          <fpage>11</fpage>
          -
          <lpage>21</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>M.</given-names>
            <surname>Homola</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Pukancová</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Balintová</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Boborová</surname>
          </string-name>
          ,
          <article-title>Hybrid MHS-MXP ABox abduction solver: First empirical results</article-title>
          ,
          <source>in: Proceedings od the 35rd International Workshop on Description Logics (DL</source>
          <year>2022</year>
          ), Haifa, Israel,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>