<!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>Android goes Semantic: DL Reasoners on Smartphones</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Roberto Yus</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Carlos Bobed</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Guillermo Esteban</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fernando Bobillo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Eduardo Mena</string-name>
          <email>emenag@unizar.es</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Zaragoza Maria de Luna 1</institution>
          ,
          <addr-line>Zaragoza</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The massive spread of mobile computing in our daily lives has attracted a huge community of mobile apps developers. These developers can take advantage of the bene ts of semantic technologies (such as knowledge sharing and reusing, knowledge decoupling, etc.) to enhance their applications. Moreover, the use of semantic reasoners would enable them to create more intelligent applications capable of inferring logical consequences from the knowledge considered. However, using semantic APIs and reasoners on current Android-based devices is not problem-free and, currently, there are no remarkable e orts to enable mobile devices with semantic reasoning capabilities. In this paper, we analyze whether the most popular current available DL reasoners can be used on Android-based devices. We evaluate the e orts needed to port them to the Android platform, taking into account its limitations, and present some tests to show the performance of these reasoners on current smartphones/tablets.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>In the last few years, we have witnessed a massive spread of mobile computing
in our daily lives. The progress and popularity of the di erent mobile devices
(smartphones, tablets, etc.) has attracted a huge community of developers that
are continually releasing new applications via the di erent app stores. For
example, 136 millions of Android-based devices were sold in third quarter of 2012
(which represented 75% of the market)1 and the Google Play2 market contained
almost 700,000 available applications in April 2013.</p>
      <p>
        Due to the current device capabilities, we think that we could also start
to enhance all these applications with semantic technologies [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Using these
techniques, developers can enhance their applications based on the principles
of knowledge sharing and reusing [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], making explicit domain assumptions and
thus decoupling the knowledge from the application, etc. For example, the use
1 IDC studies, http://www.idc.com/getdoc.jsp?containerId=prUS23771812, last
accessed 18th April 2013
2 http://play.google.com
of ontologies and semantic reasoners would enable them to create more
intelligent applications capable of inferring logical consequences from the knowledge
considered [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. However, the use of semantic technologies on mobile apps has
not (yet) spread due, in part, to the fact that there are currently no remarkable
e orts to enable mobile devices with semantic reasoning capabilities. Moreover,
having local reasoners on the devices of the users would enable developers and
mobile apps to manage knowledge even when network disconnections make
impossible to rely on third-party devices/computers to carry out the reasoning.
While authors in [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] have implemented a mobile reasoner from scratch which
supports the Description Logic (DL) ALCN (they state that \. . . current
Semantic Web reasoners cannot be ported without a signi cant re-write e ort."); we
have adopted another approach and we have started a survey to analyze if this
re-writing e ort is worth enough and how we can handle semantics in mobile
applications by adapting existing DL reasoners.
      </p>
      <p>In this paper, we evaluate whether the most popular among the current DL
reasoners can be used directly in mobile devices, the e orts needed if they do
not, and their performance with ve well-know ontologies once we were able to
make them work. We have focused on Android-based devices due to their spread,
their openness, and the fact that it has a native virtual machine that is really
close to Java (Dalvik). The existence of this Java-like virtual machine is really
appealing in order to have important APIs working on the mobile devices, and
thus allows reusing a lot of already developed code in new applications.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Reasoning on Android</title>
      <p>
        Most of current popular semantic reasoners are implemented using Java (e.g.,
Pellet and HermiT) and are usually used along with semantic APIs (e.g., OWL
API and Jena). Android, which is a Linux-based operating system whose
middleware, libraries, and APIs are written in C, supports Java code as it uses
a Java-like virtual machine called Dalvik [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. In fact, Dalvik runs \dex-code"
(Dalvik Executable), and Java bytecodes can be converted to Dalvik-compatible
.dex les to be executed on Android. However, Dalvik does not align to Java
SE and so it does not support Java ME classes, AWT or Swing. Thus, running
semantic APIs and reasoners on Android could require some rewriting e orts.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Running Semantic APIs on Android</title>
        <p>
          In the following we explain how to use two useful semantic APIs on Android.
OWL API [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] is an ontology API to manage OWL 2 ontologies in Java
applications and provides a high-level way to interact with DL reasoners. It can
be considered as a de facto standard, as the most recent versions of the DL
reasoners use OWL API to load and process the ontologies.
        </p>
        <p>We considered the last available version of the OWL API 3.4.33 which could
be converted to Dalvik without any modi cations and so, imported into an</p>
        <sec id="sec-2-1-1">
          <title>3 http://owlapi.sourceforge.net</title>
          <p>Android project directly. However, we tried the OWL API 2.2.0 (automatically
imported by Pellet along with the OWL API 3.2.4) but it uses Java classes that
are not supported by Dalvik. Nevertheless, as new developers are expected to use
the OWL API 3 they would not nd any problems when importing the library.
Jena is an ontology API to manage OWL ontologies and handle RDF data in
Java applications, but support for OWL 2 is not available yet. Jena reasoners
are based on answering queries over RDF graphs.</p>
          <p>Although Jena cannot be directly imported into an Android project, there
exist a project called Androjena4 to port it to the Android platform. The last
version of Androjena 0.5, which was used in our tests, contains all the original
code of Jena 2.6.2.
2.2</p>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>Running Reasoners on Android</title>
        <p>In the following we present how to run some popular reasoners on Android
(ordered incrementally according to the e ort needed).</p>
        <p>
          JFact is a port of FaCT++ to Java. FaCT++ reasoner [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ], successor of Fact
reasoner, is implemented in C++ and supports full OWL 2 with reasoning based
on a tableaux algorithm.
        </p>
        <p>
          We used JFact 0.9.15, which does not import any external libraries (except
for the OWLAPI), and its code can be converted directly to Dalvik. In this way,
we can develop an Android app that uses this reasoner by simply importing the
JFact 0.9.1 and OWLAPI 3.4.3 .jar les in our Android project.
CB [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] reasoner is implemented in OCaml and supports a fragment of OWL 2
(Horn-SHIF ). Reasoning is based on a consequence-based procedure.
        </p>
        <p>
          Android does not support the OCaml language natively but there exist some
projects to develop OCaml interpreters for the platform. However, to run the
reasoner on Android, we chose another approach: compiling CB build 66 to native
Android code. The resulting native code can be executed on Android using the
command line tool Android Debug Bridge (adb). To import this native code into
an Android project we could use the Java Native Interface (JNI) and Android
NDK (however, for the purpose of this paper we tested the native code directly).
HermiT [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] reasoner is implemented in Java and supports full OWL 2 and
DL safe rules with reasoning based on a hypertableaux algorithm. It was the
rst DL reasoner that could classify some large ontologies thanks to a novel and
e cient classi cation algorithm.
        </p>
        <p>HermiT 1.3.67 cannot be converted directly to Dalvik as it references
unsupported Java classes (both in its source code and in the external library
JAutomata). Speci cally, all the references to java.awt.point from both HermiT and</p>
        <sec id="sec-2-2-1">
          <title>4 https://code.google.com/p/androjena 5 http://jfact.sourceforge.net 6 https://code.google.com/p/cb-reasoner 7 http://www.hermit-reasoner.com</title>
          <p>
            JAutomata need to be changed or eliminated (they are used mainly for
debugging, and Android does not support Java AWT as it has its own graphical
libraries). In this way, we rstly eliminated the debug package of HermiT and
its references, and reimplemented the methods of JAutomata that used these
classes. However, in runtime, that version threw an error when loading ontologies
with data properties due to a failure of Dalvik when unmarshalling the objects
that the external library dk.brics.automaton serializes. To solve this problem, we
reimplemented the marshalling/unmarshalling methods of these objects.
Pellet [
            <xref ref-type="bibr" rid="ref13">13</xref>
            ] reasoner is implemented in Java and supports full OWL 2 and DL
safe rules with reasoning based on a tableaux algorithm. It was the rst DL
reasoner fully supporting OWL DL.
          </p>
          <p>Pellet 2.3.08 (the last version available at the moment) cannot be converted
directly to Dalvik. In this case, the reasoner uses three libraries that reference
unsupported Java classes: Jena (which can be replaced by Androjena), OWL
API 2.2.0 (which can be removed from the nal compiled version), and JAXB
(which uses the javax.xml.bind and the Xerces parser libraries not contained on
Android). This problem can be solved by removing the JAXB .jar le and adding
the source code of both javax.xml.bind and Xerces to our Android project.
However, Dalvik has a limit of 65536 methods references per .dex le and it gets
exceeded when applying this solution. To solve this, we removed the JAXB library
and copied only the nine classes that Pellet needs from both the java.xml.bind
package and the Xerces library to our Android project.</p>
          <p>
            Other Reasoners. We also tried to load other reasoners on Android
without success, namely RacerPro [
            <xref ref-type="bibr" rid="ref4">4</xref>
            ], KAON2 [
            <xref ref-type="bibr" rid="ref8">8</xref>
            ], QUEST [
            <xref ref-type="bibr" rid="ref10">10</xref>
            ], TrOWL [
            <xref ref-type="bibr" rid="ref14">14</xref>
            ], and
fuzzyDL [
            <xref ref-type="bibr" rid="ref2">2</xref>
            ]. None of them can be directly converted to Dalvik because of their
references to unsupported Java classes (similarly to what happened in HermiT
and Pellet), and their source code was not publicly available. We identi ed
that these reasoners use some problematic libraries that cannot be run on
Android: Jena (QUEST, TrOWL), Java RMI (KAON2), Xerces (QUEST), Gurobi
(fuzzyDL), etc. Both Jena and RMI could be replaced by projects that port these
libraries to the Android platform (such as LipeRMI9 or the aforementioned
Androjena), and Xerces could be addressed as explained for Pellet. Finally, we have
not found a replacement for Gurobi.
3
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Experimental Evaluation</title>
      <p>
        The main goal of this paper is to analyze whether current available DL reasoners
can be used on Android. Hence, we considered also interesting to test their
behavior on current devices. In this way, we tested the analyzed reasoners with
ve well-known ontologies (see Table 1): P izza10 and W ine11, which are two
8 http://clarkparsia.com/pellet
9 http://lipermi.sourceforge.net
10 http://www.co-ode.org/ontologies/pizza/pizza.owl
11 http://www.w3.org/TR/owl-guide/wine.rdf
expressive ontologies; DBpedia 3:812 (T-BOX), which can be useful for mobile
apps developers to access the structured content of DBPedia (a semantic entry
point to Wikipedia) [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]; and the Gene Ontology (GO) and the US National
Cancer Institute (N CI), which contain a high number of concepts.
      </p>
      <p>For each ontology we tested the classi cation performance (i.e., time needed
to compute the class subsumption hierarchy) of each reasoner on two devices with
di erent Android versions. We also performed the tests on a PC to determine
how slow is reasoning on Android compared to this baseline (taking into account
that the PC hardware overperforms Android devices and their virtual machines
are optimized for di erent purposes). The results obtained after performing 10
tests for each reasoner and device are shown in Table 2.</p>
      <p>First, we want to highlight that the Galaxy Nexus with Android 4.2.1
(Android2) overperformed the Samsung Galaxy Tab with Android 2.3.3 (Android1)
by 30% in all the tests. All the reasoners running on the Android 4.2.1 device
were able to classify all the ontologies except DBpedia (which contains
unsupported temporal data type properties for JFact {gY ear{), and N CI (where
JFact and Pellet ran out of memory). Notice that most of the reasoners running
on the Android 2.3.3 device (JFact, HermiT, and Pellet) were unable to classify
GO and N CI because of a memory constraint. Android 2.3 and earlier
versions usually provide a maximum heap size limit per application of 64MB while
later versions usually provide a maximum heap size of 256MB by using the
android:largeHeap=\true" attribute for the manifest of the application (the actual
maximum size limit depends on the speci c device). CB was able to classify all
the ontologies but the reasoning for P izza and W ine was incomplete because
they are not Horn. The reasoning of CB on DBpedia was complete even when
the pro le of the ontology is not fully supported by the reasoner. In addition,
CB does not face the same memory restriction than other reasoners as it was
compiled from C code and runs outside Dalvik.</p>
      <p>In summary, the major issue that reasoning on Android faces currently is the
limited memory of smartphones/tablets (especially for apps running on Dalvik).
This limitation a ects especially when using large ontologies. Finally, as
ex12 http://dbpedia.org/Ontology
pected, we observe that reasoning on Android is slower than reasoning on a PC
but nevertheless the results show that this is feasible.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Conclusions and Future Work</title>
      <p>The emergence of mobile computing in our daily lives allows to consider new
applications where semantic technologies could be useful. However, some e orts
are needed to enable developers to use ontologies and ontology reasoning in their
mobile apps. In this paper, we shown that current Android devices could be able
to use most of the semantic reasoners although they need some manual work
due to unsupported Java libraries and classes for the virtual machine of Android
(Dalvik). Once this issue has been addressed, the main limitation that reasoners
will face on current smartphones/tablets concerns memory usage and
processing requirements. However, we noticed an increment of 30% on the performance
of the reasoners between two Android devices (a Samsung Galaxy Tab and a
Google Galaxy Nexus {introduced on 2010 and 2011, respectively{) which could
show the future trend. As future work we plan to further test current semantic
reasoners on Android measuring other important aspects for mobile computing
such as memory and battery usage.</p>
      <p>Acknowledgments: This research work has been supported by the CICYT project
TIN2010-21387-C02 and DGA-FSE.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>C.</given-names>
            <surname>Bizer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Lehmann</surname>
          </string-name>
          , G. Kobilarov,
          <string-name>
            <given-names>S.</given-names>
            <surname>Auer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Becker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cyganiak</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S.</given-names>
            <surname>Hellmann. DBpedia -</surname>
          </string-name>
          <article-title>A crystallization point for the Web of Data</article-title>
          .
          <source>Web Semantics: Science, Services and Agents on the World Wide Web</source>
          ,
          <volume>7</volume>
          (
          <issue>3</issue>
          ):
          <volume>154</volume>
          {
          <fpage>165</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>F.</given-names>
            <surname>Bobillo</surname>
          </string-name>
          and
          <string-name>
            <given-names>U.</given-names>
            <surname>Straccia</surname>
          </string-name>
          . fuzzyDL:
          <article-title>An expressive fuzzy description logic reasoner</article-title>
          .
          <source>In Proceedings of the International Conference on Fuzzy Systems (FUZZ-IEEE 2008)</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>T. R.</given-names>
            <surname>Gruber</surname>
          </string-name>
          .
          <article-title>A translation approach to portable ontology speci cations</article-title>
          .
          <source>Knowledge Acquisition</source>
          ,
          <volume>5</volume>
          (
          <issue>2</issue>
          ):
          <volume>199</volume>
          {
          <fpage>220</fpage>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>V.</given-names>
            <surname>Haarslev</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Mo</surname>
          </string-name>
          <article-title>ller. RACER system description</article-title>
          .
          <source>In Proceedings of the First International Joint Conference on Automated Reasoning (IJCAR</source>
          <year>2001</year>
          ),
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>M.</given-names>
            <surname>Horridge</surname>
          </string-name>
          and
          <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 Journal</source>
          ,
          <volume>2</volume>
          (
          <issue>1</issue>
          ):
          <volume>11</volume>
          {
          <fpage>21</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>S.</given-names>
            <surname>Ilarri</surname>
          </string-name>
          , A. lllarramendi, E. Mena,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Sheth</surname>
          </string-name>
          .
          <article-title>Semantics in location-based services { guest editors' introduction for special issue</article-title>
          .
          <source>IEEE Internet Computing</source>
          ,
          <volume>15</volume>
          (
          <issue>6</issue>
          ):
          <volume>10</volume>
          {
          <fpage>14</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Y.</given-names>
            <surname>Kazakov</surname>
          </string-name>
          .
          <article-title>Consequence-driven reasoning for Horn SHIQ ontologies</article-title>
          .
          <source>In Proceedings of the 21st International Joint Conference on Arti cial intelligence (IJCAI</source>
          <year>2009</year>
          ),
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>B.</given-names>
            <surname>Motik</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Studer</surname>
          </string-name>
          .
          <article-title>KAON2{a scalable reasoning tool for the semantic web</article-title>
          .
          <source>In Proceedings of the 2nd European Semantic Web Conference (ESWC</source>
          <year>2005</year>
          ),
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. H.
          <string-name>
            <surname>-S. Oh</surname>
            ,
            <given-names>B.-J.</given-names>
          </string-name>
          <string-name>
            <surname>Kim</surname>
          </string-name>
          , H.
          <article-title>-</article-title>
          <string-name>
            <surname>K. Choi</surname>
            , and
            <given-names>S.-M.</given-names>
          </string-name>
          <string-name>
            <surname>Moon</surname>
          </string-name>
          .
          <article-title>Evaluation of Android Dalvik virtual machine</article-title>
          .
          <source>In Proceedings of the 10th International Workshop on Java Technologies for Real-time and Embedded Systems (JTRES</source>
          <year>2012</year>
          ),
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. M.
          <string-name>
            <surname>Rodriguez-Muro</surname>
            and
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Calvanese</surname>
          </string-name>
          .
          <article-title>Quest, an OWL 2 QL reasoner for ontologybased data access</article-title>
          .
          <source>In Proceedings of the 9th International Workshop on OWL: Experiences and Directions (OWLED</source>
          <year>2012</year>
          ),
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>M. Ruta</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Scioscia</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <string-name>
            <surname>Loseto</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Gramegna</surname>
            , and
            <given-names>E. D.</given-names>
          </string-name>
          <string-name>
            <surname>Sciascio</surname>
          </string-name>
          .
          <article-title>A mobile reasoner for semantic-based matchmaking</article-title>
          .
          <source>In Proceedings of the 6th International Conference on Web Reasoning and Rule Systems (RR</source>
          <year>2012</year>
          ),
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>R.</given-names>
            <surname>Shearer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Motik</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and I.</given-names>
            <surname>Horrocks. HermiT: A Highly-E cient OWL</surname>
          </string-name>
          <article-title>Reasoner</article-title>
          .
          <source>In Proceedings of the 5th International Workshop on OWL: Experiences and Directions (OWLED</source>
          <year>2008</year>
          ),
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. E.
          <string-name>
            <surname>Sirin</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B. C.</given-names>
          </string-name>
          <string-name>
            <surname>Grau</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Kalyanpur</surname>
            , and
            <given-names>Y.</given-names>
          </string-name>
          <string-name>
            <surname>Katz. Pellet</surname>
          </string-name>
          :
          <article-title>A practical OWL-DL reasoner</article-title>
          .
          <source>Web Semantics: Science, Services and Agents on the World Wide Web</source>
          ,
          <volume>5</volume>
          (
          <issue>2</issue>
          ):
          <volume>51</volume>
          {
          <fpage>53</fpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. E. Thomas,
          <string-name>
            <given-names>J. Z.</given-names>
            <surname>Pan</surname>
          </string-name>
          , and
          <string-name>
            <surname>Y. Ren.</surname>
          </string-name>
          <article-title>TrOWL: Tractable OWL 2 reasoning infrastructure</article-title>
          .
          <source>In Proceedings of the 7th Extended Semantic Web Conference (ESWC</source>
          <year>2010</year>
          ),
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>D.</given-names>
            <surname>Tsarkov</surname>
          </string-name>
          and
          <string-name>
            <surname>I. Horrocks.</surname>
          </string-name>
          <article-title>FaCT++ description logic reasoner: system description</article-title>
          .
          <source>In Proceedings of the Third International Joint Conference on Automated Reasoning (IJCAR</source>
          <year>2006</year>
          ),
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>R.</given-names>
            <surname>Yus</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Mena</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Ilarri</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Illarramendi</surname>
          </string-name>
          .
          <article-title>SHERLOCK: A system for location-based services in wireless environments using semantics</article-title>
          .
          <source>In 22nd International World Wide Web Conference (WWW</source>
          <year>2013</year>
          ),
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>