<!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>Generating Semantic Web Services from Declarative Descriptions</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Mohammad Sadnan Al Manir</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science and Applied Statistics IPSNP Computing Inc, Canada Faculty of Computer Science University of New Brunswick alexandre.riazanov[at]ipsnp.com University of New Brunswick Saint John</institution>
          ,
          <country country="CA">Canada</country>
          <addr-line>Fredericton</addr-line>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>-Semantic Web services are an effective middleware for semantic querying of relational databases. Despite the benefits of this approach, writing Web service code manually is labor-intensive and error-prone. To ameliorate this, we propose a framework to generate SADI web services from declarative service descriptions in which access to databases is achieved through semantic mappings. These mappings are scripted in the Datalog sublanguage of Positional-Slotted ObjectApplicative (PSOA) RuleML. We outline a novel methodology, a system architecture, and an early stage implementation for service generation. We demonstrate the utility of this approach in a use case for querying patient data from a hospital data warehouse.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>I. INTRODUCTION</title>
      <p>Semantic Querying (SQ) is based on the automatic
application of domain knowledge formalized as ontologies and
rules, which semantically capture the underlying database
design. An explicit semantic correspondence between the
database schema and relevant domain ontologies is
established by rules. Each domain ontology constitutes a
highlevel model in the form of logical axioms using RDF(S)1;2
and OWL3, which allows domain experts to pose queries in
a semantic context that they are familiar with.</p>
      <p>
        Existing SQ systems such as D2RQ [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], MASTRO [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ],
Incremental Query Rewriting (IQR) [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] typically allow
database programmers to define mappings between relational
schemas and domain knowledge bases, in the form of logical
axioms or similar declarative constructs. These systems then
translate the domain-based queries into SQL queries that can
be directly executed on the data.
      </p>
      <p>
        In recent work, HAIKU [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] considers a different
approach based on the deployment of Semantic Web
Services on top of relational databases. This approach relies
on suitable mappings written by the database programmers,
allowing SADI [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] framework-based Semantic Web services
to extract Hospital-Acquired Infections (HAI) data from
The Ottawa Hospital (TOH) Data Warehouse (DW) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
One limitation of this approach is that service creation
becomes labor-intensive and can be error-prone, because
1http://www.w3.org/TR/rdf-concepts/
2http://www.w3.org/TR/rdf-schema/
3http://www.w3.org/TR/owl-overview/
it requires writing code for the service. This motivated us
to investigate if code generation could be automated from
declarative service descriptions, specifically by incorporating
the necessary input and output parameters in appropriate
places of generic Web service code-blocks.
      </p>
      <p>
        In this paper, an architecture based on SQ is presented and
its implementation is outlined with the goal of generating
SADI Semantic Web service code automatically from their
declarative input and output descriptions. The architecture
enables access to relational data via the expressive rule
language PSOA RuleML [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. The automation facilitates Web
service generation without human intervention and users are
able to run queries over the generated services with the help
of SADI query clients like Hydra and SHARE (see, e.g.,
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]).
      </p>
      <p>The methodology and architecture are novel: we are not
aware of another system that allows the creation of Semantic
Web services on top of relational data by leveraging an
expressive rule language for semantic mapping and a
firstorder logic reasoner for query rewriting.</p>
      <p>The paper is organized as follows: we start with a brief
description of SADI in Section II. A use case for service
generation is shown in Section III and the work flow of our
architecture is described in Section IV. Finally, in Section V
some of the implementation challenges and an evaluation of
the methodology are briefly discussed.</p>
    </sec>
    <sec id="sec-2">
      <title>II. PRELIMINARIES</title>
      <sec id="sec-2-1">
        <title>A. Basic SADI Ideas</title>
        <p>
          SADI [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] is a framework which utilizes Semantic Web
standards and allows integration and interoperability among
resources on the Web. SADI uses RDF[S], OWL for data
representation and modeling, and HTTP-based
recommendations (GET, POST) for interacting with the services.
        </p>
        <p>
          The main distinguishing features of SADI services is
that (1) they only exchange RDF, so “they speak the same
language” (2) they can be automatically discovered and (3)
orchestrated with the help of query clients like Hydra and
SHARE (see, e.g., [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]).
        </p>
        <p>III. EARLY-STAGE IMPLEMENTATION</p>
        <p>To show the advantages of our architecture, we walk
through the generation of a simple SADI service that can
query a database and retrieve results.</p>
        <p>Our early-stage experiment comprises of a database
schema, a corresponding domain ontology, service I/O
descriptions modeled according to the ontology, and an SQL
template generated from inputs to the reasoner.</p>
        <p>A schema named PatientDiseaseDB is shown in Fig. 1. A
relevant ontology describing the same domain is presented
next.</p>
        <p>Here we describe a simple SADI service
getPatientNameByDiseaseName which, upon
receiving the name of a disease as input, provides the
corresponding patients’ names.</p>
        <p>The input class is defined by a disease name with the
name data property attached to Disease class which
is expressed in Prote´ge´ syntax as Disease and name
some string.
The output class is defined by the patient names with
the name property attached to the class Patient, which
is attached to the Disease class by the isDiseaseOf
property and is expressed as isDiseaseOf some
(Patient and name some string).</p>
        <p>Fig. 2 depicts the modeling of both the input and the
output classes. The root node for both the classes is
Disease. The solid arrows are labeled by the object
property isDiseaseOf and by the single string-type data
property name. Although the inverse property hasDisease
is defined in the ontology, it is not part of the declarative
descriptions, and denoted only by a dotted arrow.</p>
        <p>
          Our reasoner, VampirePrime4 uses TPTP [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] as its
primary input syntax. Hence, a translation is necessary to
transform any non-TPTP syntax for generating SQL. This
is accomplished by incorporating three translators into the
architecture. The semantic mappings expressed in PSOA in
Section IV-B can be translated into TPTP by using
opensource tools such as the PSOA RuleML API [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] and
PSOA2TPTP [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] (part of PSOATransRun5). The declarative
input and output descriptions and the ontology are translated
by the OWL API [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>For example, the input and output declarative descriptions
are translated by the OWL API-based translator into a single
TPTP rule below (‘- -’ labels conditions while ‘++’ labels
the conclusion, X, N, D are variables):
--p_Patient(X),--p_name(X, N),--p_isDiseaseOf(D, X)
, --p_Disease(D), --p_name(D, "?"), ++answer(N)
The tuple N in the unary predicate answer denotes the
patient tuple X’s names who have the disease tuple D with a
name "?", which is like a formal parameter and its actual
values come from actual service inputs in run time. This
rule is created by merging the input and output class based
on the SADI principle that both the input and output class
have a common root node.</p>
        <p>VampirePrime generates the following SQL query
template from the semantic mapping, ontology and the TPTP
rule. Although in this specific case no reasoning is necessary,
potentially VampirePrime can do very complex reasoning to
rewrite queries. The template query contains the WHERE
clause with the condition disease.name = "?", where
the symbol ‘?’ is extracted from the TPTP predicate
p_name(D, "?") above.</p>
        <p>SELECT patient.name AS patName
FROM patient, disease, patientdiagnosis
WHERE disease.name = "?"
AND patient.id = patientdiagnosis.patient_id
AND disease.code = patientdiagnosis.code</p>
        <p>Due to space constraints, we refrain from documenting
the complete Java code for the SADI Web service.</p>
        <p>One of the most important tasks of our system is to extract
the inputs from an RDF input instance and to place them
4http://riazanov.webs.com/software.htm, last accessed on June 14, 2013
5http://wiki.ruleml.org/index.php/PSOA RuleML
precisely where they are needed. Once invoked, the Web
service determines the string-type input value Arthritis,
extracts it from the RDF input and replaces ‘?’ with
Arthritis in the WHERE clause, making the instantiated
SQL query executable over the database:
SELECT patient.name AS patName
FROM patient, disease, patientdiagnosis
WHERE disease.name = "Arthritis"
AND patient.id = patientdiagnosis.patient_id
AND disease.code = patientdiagnosis.code</p>
        <p>After the call and execution, the service returns the output
RDF file containing a list of patient names John Doe,
Bob, Alice etc. having Arthritis, each extracted from
the tables in Fig. 1.</p>
        <p>The following figure shows a graphical representation of
the above RDF input and output instances:</p>
        <p>The generated SADI service can be invoked and tested
by issuing a simple SPARQL query in SADI query clients
such as Hydra and SHARE. User asking Which patients have
Arthritis?, issues the following SPARQL query:
1 PREFIX servOnt: &lt;http://unbsj.biordf.net/servOnto.owl#&gt;
2 SELECT DISTINCT ?patientName
34 W{HsEReErvOnt:Patient servOnt:name ?patientName.
56 sseerrvvOOnntt::DDiisseeaassee sseerrvvOOnntt::niasmDeis"eAasrtehOrfisteisr"v.On}t:Patient.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>IV. ARCHITECTURE The Web service generation process is best described by the main components (modules) of the architecture shown in Fig. 4.</title>
      <sec id="sec-3-1">
        <title>A. Module for Declarative Descriptions of the Service</title>
        <p>Declarative service descriptions are composed of the
properties along with the class names and various logical
connectives from the ontology(ies) as shown by the input
and output classes in Section II using Prote´ge´ syntax.</p>
      </sec>
      <sec id="sec-3-2">
        <title>B. Module for Semantic Mapping of Databases in PSOA</title>
        <p>This module provides mappings between ontologies and
databases using the Datalog sublanguage of the expressive
Web rule language PSOA RuleML. The SQL queries and
pseudo-RDF indicate how relational data is mapped.</p>
        <p>
          The PSOA rule below embodies the semantic mapping
of HAI-related data from TOH DW. Lines 12-18 essentially
represent the SQL query while lines 1-9 and 19-23 capture
the meaning of the pseudo-RDF. The relations among SQL
queries and pseudo-RDF with these rules are exemplified in
[
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] in detail.
1 And
2 (
3 ?diagnosis # haio:Diagnosis()
4 haio:is_performed_for(?diagnosis ?patient)
5 haio:identifies(?diagnosis ?disease)
6 ?disease # haio:Disease()
7 ?disease # ?diseaseClass()
8 )
9
:10 And
11 (
12 ?encounterRow #
13 dwt:Nencounter(dwa:encWID-&gt;?encounterID
14 dwa:encPatWID-&gt;?patientID)
15 ?diagnosisRow #
16 dwt:NhrDiagnosis(dwa:hdgWID-&gt;?diagnosisID
17 dwa:hdgHraEncWID-&gt;?encounterID
18 dwa:hdgCd-&gt;?diseaseCode)
19 ?patient = External(modf:Patient_by_patWID(?patientID))
20 ?diagnosis = External(modf:Diagnosis_by_hdgWID(?diagnosisID))
21 ?diseaseClass
22 = External(modf:disease_class_by_ICD10(?diseaseCode))
23 ?disease = External(modf:Disease_by_diagnosis(?diagnosisID))
24 )
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>C. SQL Query Template Generation Module</title>
        <p>The generation of SQL queries requires declarative
service descriptions, semantic mapping of the database, and
ontology (semantic schema) as the inputs. Our architecture
will be using the IQR technique because it facilitates such
SQL generation. The IQR technique takes the inputs and
generates a (possibly infinite) number of SQL queries.</p>
      </sec>
      <sec id="sec-3-4">
        <title>D. Service Generator Module</title>
        <p>The service generator module generates Java code for
the Web service. The service code consists of three parts:
reading input RDF, business logic and writing RDF output.
The code for reading input and writing output are generated
based on the input and output class definitions, respectively.
The service code when executed, reads input RDF and
places all input values in appropriate places of the generated
code as well as in the generated SQL template. Finally, the
data drawn from the database is presented as RDF output
according to the modeling of the output class. Thus, the
module ensures automatic generation of a fully functional
Web service code with no human intervention.</p>
        <p>V. DISCUSSION, ONGOING WORK AND EVALUATION
The open-source D2RQ platform uses a declarative
language and employs a tool called D2R server, which uses
a customizable D2RQ mapping to map database contents
into RDF and allows users to issue SPARQL queries which
are rewritten into SQL queries via the mapping. MASTRO
is an ontology-based data integration tool. The mapping
language in MASTRO allows for expressing
Global-AsView mappings, answers unions of conjunctive queries, and
it provides a sound and complete query answering algorithm
for a rather restricted logic fragment. For our work, we
plan to adopt the IQR technique which is based on a
sound and complete algorithm that works with a full
firstorder logic, but without a general termination guarantee
and rewrites TPTP queries into SQL queries. Results from
initial experiments show that simple SQL queries can be
generated without problem. We plan to address complex
query generation, case-by-case, in future.</p>
        <p>Unlike D2RQ which exposes the database as a virtual
RDF graph, in our approach, semantic mappings are written
to map the existing ontology and the relational database. Any
changes occurring in the database schema must be reflected
in the mappings and such modifications are to be written by
the database programmers. The mappings allow decoupling
of applications from the database design. Should there be
changes in design, the applications need not be changed
provided that suitable mappings can be written for the new
design. A detailed description of the semantic mappings is
beyond the scope of this paper, we plan to address this issue
in future.</p>
        <p>For generating SQL queries by the VampirePrime engine,
three inputs are required: semantic mappings, the
ontology and the declarative descriptions. As VampirePrime can
process only TPTP syntax, three translators are necessary
for processing these inputs. We plan to reuse and modify
existing tools such as the OWL API, the PSOA RuleML
API, and PSOA2TPTP for the translation tasks.</p>
        <p>In general, relational data are URI-free while any entity
in a Web ontology is identified by a URI. Hence, efficient
handling of URIs is important. As formulas in a Web rule
language, PSOA rules can easily use entities with or without
URI. We plan to use URI constructing functions for URI
handling.</p>
        <p>
          A list of HAI use cases has been identified in [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. A
thorough evaluation of our system can be performed by
generating HAIKU SADI services that leverage these use
cases and run on HAI data stored in the TOH DW.
        </p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>C.</given-names>
            <surname>Bizer</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Seaborne</surname>
          </string-name>
          , “
          <fpage>D2RQ</fpage>
          -
          <article-title>Treating Non-RDF Databases as Virtual RDF Graphs,” in ISWC2004 (posters).</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <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>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Lembo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Poggi</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Rosati</surname>
          </string-name>
          , “
          <article-title>MASTRO-I: Efficient Integration of Relational Data through DL Ontologies.” in Description Logics</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Riazanov</surname>
          </string-name>
          and
          <string-name>
            <given-names>M. A. T.</given-names>
            <surname>Arago</surname>
          </string-name>
          ,
          <article-title>Incremental Query Rewriting with Resolution, ser</article-title>
          .
          <source>Canadian Semantic Web II. Springer US</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Riazanov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. W.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Klein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Forster</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C. J.</given-names>
            <surname>Baker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Shaban-Nejad</surname>
          </string-name>
          , and
          <string-name>
            <given-names>D. L.</given-names>
            <surname>Buckeridge</surname>
          </string-name>
          , “
          <article-title>Towards clinical intelligence with SADI semantic web services: a case study with hospital-acquired infections data,”</article-title>
          <source>in Proceedings of the 4th International Workshop on Semantic Web Applications</source>
          and
          <article-title>Tools for the Life Sciences, ser</article-title>
          . SWAT4LS '
          <fpage>11</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>Riazanov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Klein</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Shaban-Nejad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. W.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Forster</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. L.</given-names>
            <surname>Buckeridge</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C. J. O.</given-names>
            <surname>Baker</surname>
          </string-name>
          , “
          <article-title>Semantic querying of relational data for clinical intelligence: a semantic web services-based approach</article-title>
          ,” J. Biomedical Semantics.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wilkinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Vandervalk</surname>
          </string-name>
          , and L.
          <string-name>
            <surname>McCarthy</surname>
          </string-name>
          , “
          <article-title>The Semantic Automated Discovery and Integration (SADI) Web service Design-Pattern, API</article-title>
          and Reference Implementation,
          <source>” Journal of Biomedical Semantics</source>
          , vol.
          <volume>2</volume>
          , no.
          <issue>1</issue>
          , p.
          <fpage>8</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>G.</given-names>
            <surname>Rose</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Roth</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Suh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Taljaard</surname>
          </string-name>
          ,
          <string-name>
            <surname>C. Van Walraven</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Forster</surname>
          </string-name>
          , “
          <article-title>Use of an electronic data warehouse to enhance cardiac surgical site surveillance at a large canadian centre</article-title>
          .
          <source>” Clin Invest Med</source>
          , vol.
          <volume>31</volume>
          , no.
          <issue>4</issue>
          , p.
          <fpage>S21</fpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>H.</given-names>
            <surname>Boley</surname>
          </string-name>
          , “
          <article-title>A RIF-style semantics for RuleML-Integrated Positional-Slotted, Object-Applicative Rules,” in Proceedings of the 5th international conference on Rule-based reasoning, programming, and applications</article-title>
          , in RuleML'
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>G.</given-names>
            <surname>Sutcliffe</surname>
          </string-name>
          , “
          <article-title>The TPTP Problem Library and Associated Infrastructure: The FOF</article-title>
          and CNF Parts,
          <year>v3</year>
          .
          <fpage>5</fpage>
          .0,
          <source>” Journal of Automated Reasoning</source>
          , vol.
          <volume>43</volume>
          , no.
          <issue>4</issue>
          , pp.
          <fpage>337</fpage>
          -
          <lpage>362</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M. S. A.</given-names>
            <surname>Manir</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Riazanov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Boley</surname>
          </string-name>
          , and
          <string-name>
            <given-names>C. J. O.</given-names>
            <surname>Baker</surname>
          </string-name>
          , “
          <article-title>PSOA RuleML API: A Tool for Processing Abstract</article-title>
          and
          <string-name>
            <given-names>Concrete</given-names>
            <surname>Syntaxes</surname>
          </string-name>
          .” in RuleML'
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>G.</given-names>
            <surname>Zou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Peter-Paul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Boley</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Riazanov</surname>
          </string-name>
          , “
          <article-title>PSOA2TPTP: A Reference Translator for Interoperating PSOA RuleML with TPTP Reasoners</article-title>
          .” in RuleML'
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <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,” Semantic Web</article-title>
          , vol.
          <volume>2</volume>
          , no.
          <issue>1</issue>
          , pp.
          <fpage>11</fpage>
          -
          <lpage>21</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>