<!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>Query Answering Systems in the Semantic Web</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Birte Glimm and Ian Horrocks Department of Computer Science The University of Manchester Manchester</institution>
          ,
          <country country="UK">UK</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this paper a new query answering system is presented for querying knowledge bases in the Semantic Web. The implementation follows the DAML+OIL Query Language Abstract Specication (DQL) and supports acyclic conjunctive queries. The system uses a Description Logic (DL) reasoner to answer the queries and the conjunctive queries are transformed into DL retrieval or boolean queries. After the introduction to the new DQL implementation, a comparison with other systems follows. This includes the recently introduced new Racer Query Language (nRQL), the DQL implementation provided by the Knowledge Systems Laboratory of the Stanford University and a DQL implementation provided by the University of Maryland, Baltimore County. The paper highlights and compares the dierent approaches of these systems.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Motivation</title>
      <p>
        Current Description Logic (DL) systems [
        <xref ref-type="bibr" rid="ref7 ref9">7, 9</xref>
        ] oer a powerful inference
mechanism, e.g., to compute the sub-concepts of a given concept, but they usually oer
a weak query language. Current DL reasoners generally support the following
queries to access the assertional knowledge of a knowledge base:
retrieval retrieve the instances of a given concept
realisation determine the most specic concept an individual is an instance of
instantiation boolean query asking if an individual (a pair of individuals) is
an instance of a given concept (role)
There is, however, no support for queries that ask for n-tuples of related
individuals or for the use of variables to formulate a query.
      </p>
      <p>
        The DQL Specication To overcome some of these limitations, the DAML
Joint Committee announced in August 2002 the DAML Query Language (DQL)
Abstract Specication and replaced it in April 2003 with a new release [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The
specication is based on user requirements for a query language in the Semantic
Web, and it denes a number of features that a DQL server must support.
For example, a query may contain variables for which a binding to an individual
name is required in the answer, and others for which no such binding is required.
In the latter case, only the existence of an appropriate individual is required. The
specication also denes a protocol for a query answering dialogue. The initially
targeted knowledge representation language was DAML+OIL [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ], but DQL
was meant to be easily adaptable to other knowledge representation languages,
such as OWL [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Therefore, the specication was given on an abstract level,
without a denition for a concrete language. An adaptation, e.g., to OWL, is
therefore possible without signicant changes. In fact the Knowledge Systems
Laboratory of the Stanford University already provides a proposal for an OWL
Query Language (OWL-QL) specication [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] adapted from DQL.
      </p>
      <p>DQL Implementations Recently a new system, developed at the University
of Manchester,1 became available. The implementation relies on DL reasoners
transforming incoming queries to DL statements that can be passed to a DL
reasoner. This transformation process is described in detail in the next section.</p>
      <p>
        Two other implementations were already available: one provided by the
Knowledge Systems Laboratory of the Stanford University (KSL) 2 and the other
developed at the University of Maryland, Baltimore County (UMBC). All three
systems use dierent approaches to answer queries, and Section 3 provides a brief
comparison. The comparison also includes the DL reasoner Racer, which has
recently been extended with its own new Racer Query Language (nRQL) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
nRQL was not meant as a DQL implementation, and therefore does not comply
with the specication, but nevertheless it is a step towards better query support.
2
      </p>
    </sec>
    <sec id="sec-2">
      <title>From DQL to DL Queries</title>
      <p>
        If one intends to use a DL reasoner to answer DQL queries, a transformation of
the query is in most cases necessary. One reason for this is, that DQL allows to
query for n-tuples of individuals, which is currently not supported by standard
DL reasoners. With DQL a user can also use dierent kinds of variables in a
query. To understand the dierent variables, the semantics of a DQL query and
a query answer has to be explained. A DQL query contains a query pattern that
represents a set of DAML+OIL (OWL) sentences in which some URI references
1http://www.cs.man.ac.uk/~glimmbx/download/DQL.zip
2http://ksl.stanford.edu/projects/owl-ql/owql-20040623.zip
are replaced by variables. A query answer provides bindings of URI references
or literals to some of the variables. After applying the bindings to the variables
and treating the remaining variables as existentially quantied, the resulting
statement must be entailed by the knowledge bases (KB) used to answer the
query. Variables for which a binding is required are called distinguished or
must-bind variables , variables for which no binding should be returned are called
non-distinguished or don’t-bind variables , and variables for which a binding may
be returned are called may-bind variables . May-bind variables do not add any
power to the language, because the query answer can also be computed by a
sequence of queries using only must-bind and don’t-bind variables [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Therefore
they are not treated in further detail here.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Conjunctive Queries</title>
        <p>Conjunctive queries are of the form h~xi ← conj(~x; ~y; ~z). The vector ~x consists
of so called distinguished variables that will be bound to individual names of
the knowledge base used to answer the query. The vector ~y consists of
nondistinguished variables, which are existentially quantied variables. The vector
~z consists of individual names, and conj(~x; ~y; ~z) is a conjunction of atoms. An
atom is of the form v1:C or hv2, v3i:r where C is a concept name, r is a role name
and v1, v2, v3 are individual names from ~z or variables from ~x or ~y. For easy
readability, must-bind variable names in a query are prexed with ?, don’t-bind
variables are prexed with !, and individual names are not prexed and start
with a letter. Concept names are written in upper case letters, while role and
individual names are written in lower case.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Query Graphs</title>
        <p>A conjunctive query q can be represented as a directed labelled graph G(q) :=
hV, Ei, where V is a set of vertices, and E is a set of edges. The set V consists of
the union of the elements in ~x, ~y, and ~z. The set E consists of all pairs hv1, v2i,
such that v1, v2 ∈ V and hv1, v2i:r is an atom in q. A node v ∈ V is labelled
with a concept C1 u . . . u Cn such that, for each Ci, v:Ci is an atom in q. Each
edge e ∈ E is labelled with a set of role names {r | hv1, v2i:r is an atom in q}.</p>
        <p>The function L(v), v ∈ V returns the label for v. If L(v) is empty, the top
concept (&gt;) is returned. The function L(e), e ∈ E returns a set of edge labels
for e. The function L−(e), e ∈ E returns a set of inverted edge labels, such
that L−(e) = {r|r− ∈ L(e)}. The function f lip(G, hv1, v2i), hv1, v2i ∈ E creates
a new graph G0 := hV 0, E0i, with V 0 := V , E0 := (E \ {hv1, v2i}) ∪ {hv2, v1i},
and L(hv2, v1i) = L−(hv1, v2i). The function pred(v1), v1 ∈ V returns a set of
vertices {v1|v1, v2 ∈ V ∧ hv2, v1i ∈ E}.</p>
        <p>Two vertices v1, v2 ∈ V are adjacent, if L(hv1, v2i) 6= ∅ or L(hv2, v1i) 6= ∅.
The vertex v1 ∈ V is reachable from v2 ∈ V , if v1 is adjacent to v2 or if there is
a another vertex v3 ∈ V such that v3 is adjacent to v1, and v2 is reachable from
v3. The graph G(q) is cyclic, if there is a v ∈ V , such that L(hv, vi) 6= ∅ or if
there is a v0 ∈ V , such that v is adjacent to v0 and if one element is removed
from L(hv, v0i), v0 is still reachable from v. q is an acyclic conjunctive query if
G(q) is not cyclic.
2.3</p>
      </sec>
      <sec id="sec-2-3">
        <title>The Rolling-up Technique</title>
        <p>Conjunctive queries are not supported directly by a DL reasoner. If a query
contains only distinguished variables, one could replace all variables with individual
names from the knowledge base and use a sequence of instantiation queries to
determine if the statement is true in the knowledge base. To compute a
complete query answer set with this approach, it is necessary to test all possible
combinations of individual names. This is very costly, and furthermore, this
approach is not applicable to queries with non-distinguished variables.</p>
        <p>
          In 2001 Tessaris [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] proposed a rolling-up technique that can be used to
eliminate non-distinguished variables from a query. The technique is applicable
to acyclic conjunctive queries and the DQL server implemented in Manchester
uses this technique to compute the query answers.
        </p>
        <p>
          The basic principle behind the rolling-up technique is based on the semantic
equivalence of the two formulae h?xi ← ?x:C ∧ h?x, !yi:r and h?xi ← ?x:(C
u ∃ r.&gt;) [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. In the latter statement !y is omitted, but all bindings for ?x
still imply the existence of an appropriate individual. Bindings for ?x are now
available through a normal retrieval query for the concept (C u ∃ r.&gt;).
Queries with One Distinguished Variable Queries with only one
distinguished variable can always be transformed into such a single retrieval query.
The process is best illustrated using the query graph G(q) of a query q
(Figure 1). For the readers convenience the distinguished variables are represented
by a lled node ( •), whereas non-distinguished variables and individuals are
represented by an unlled node ( ◦).
        </p>
        <p>First of all, the query graph is transformed into a tree with the distinguished
variable as root. The function f lip(G, e), e ∈ E is applied to change edge
directions if necessary to transform the graph into a proper tree. The left hand
part of Figure 2 shows the resulting tree. Then the rolling-up starts from the
leaves of the tree. A leaf, e.g. !z, is selected and the vertex and its
incoming edge are replaced by conjoining the concept ∃ L(pred(!z), !z).L(!z) to the
label of pred(!z). The right hand part of Figure 2 shows the result of the
rst rolling-up step. The &gt; conjunct could be omitted without changing the
semantics. This step is applied to each leaf until only the distinguished
variable at the root is remaining. The label of the root node can now be used to
retrieve the individual names that are valid bindings for the distinguished
variable. For this example these are instances of the concept PERSON u ∃ owns.&gt;
u ∃ loves.(&gt; u ∃ haschild−.&gt;).</p>
        <p>
          Queries with Individual Names In a DL that supports the oneOf
constructor, which allows the denition of a concept by enumerating its instances,
the rolling-up can use the individual name directly in the concept expression.
Nodes for an individual name can then be treated like a non-distinguished
variable with the concept {individual name} as label. E.g., the query h?xi ←
h?x, maryi:loves is rolled-up into a retrieval query for instances of the
concept ∃ loves.{mary}. Unfortunately most reasoners do not support the oneOf
constructor, but it is still possible to deal with such queries using a so called
representative concept [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. The representative concept is a so far unused concept
name, which is used instead of the individual name, the ABox being extended
with an assertion stating that the individual is an instance of its representative
concept. E.g., the query could be answered by retrieving the concept instances
of ∃ loves.Pmary, after the assertion mary:Pmary is added to the KB.
Boolean Queries If a query contains only non-distinguished variables, the
query answer is true, i for each variable the KB entails the existence of an
individual that fulls all dened constraints, i.e., concept or role assertions. The
boolean query hi ← hacar, !xi:ownedby ∧ !x:PERSON against the knowledge
base in Example 2.1 should be answered with true, since the existence of such a
person is entailed by the KB.
        </p>
        <sec id="sec-2-3-1">
          <title>Example 2.1 KB</title>
          <p>= {T , A}
= {CAR v ∃ ownedby.PERSON}
= {acar:CAR}
Queries with Multiple Distinguished Variables If a query contains
multiple distinguished variables, the query can not be rolled-up into a single DL
retrieval query. To avoid a test of all possible combinations of individual names,
as necessary for the simple approach described in Section 2.3, the rolling-up
technique is nevertheless helpful. To start the query answering process, one of
the distinguished variables is selected as the root node, and all other variables
are treated as non-distinguished. The query graph is transformed into a tree
and the rolling-up process is applied as described above for the case with only
one distinguished variable. The retrieved individual names are candidates for
the binding of the variable. This step is repeated for all distinguished variables.</p>
          <p>Not every combination of the retrieved candidates is possible, and to
determine the valid combinations further boolean tests are necessary. To avoid as
many boolean tests as possible further optimisations can be used at this point.
2.4</p>
        </sec>
      </sec>
      <sec id="sec-2-4">
        <title>Optimisation Techniques</title>
        <p>One promising approach is to use an iterative process that eliminates unsuitable
combinations as soon as possible. Consider, e.g., the query and its query graph
in Figure 3, where ?x has four candidates (i.e., x1 . . . x4), ?y has two candidates
(y1, y2), and ?z has ten candidates (z1, . . . , z10) after the rolling-up.</p>
        <p>If we had not used the rolling-up to retrieve the candidates, the number
of necessary boolean tests would have been factorial in the number of named
individuals in the KB. With the rolling-up and boolean tests for all possible
candidate combinations, the number of tests is still the product of the number
of candidates, i.e., 80 tests in this example. An optimised strategy could start at
the variable with the most candidates (i.e., ?z) and retrieve the concept instances
of ∃ s−.Py1, where Py1 is the representative concept for y1. In this way, one can
determine which of the candidates for ?z are related to y1. This is repeated for
y2. By testing for valid pairs rst, one can skip many unnecessary test, e.g., if y1
and z1 are not related, no tests for candidates of ?x are necessary. The process
is repeated for the variable with the next highest number of candidates (i.e.,
?x). Compared to the 80 boolean tests necessary before, this approach needs
four retrieval queries to determine the valid candidate combinations.</p>
        <p>Another optimisation could use structural knowledge about the roles in the
KB to exclude impossible candidate combinations even before the above tests
are used. The system developed in Manchester does not yet fully implement
these optimisations.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>System Comparison</title>
      <p>
        The algorithm described in the previous section was used to implement a web
service, compliant with the DQL specication (except for some unsupported
features, e.g., the use of multiple KBs to answer a query). The system answers
acyclic conjunctive queries correctly and completely and can be used with any
DIG [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] compliant DL reasoner, e.g., with the DL reasoner Racer. The next
section highlights the dierences to other query answering systems that are
currently available, with the main focus on DQL (OWL-QL) implementations.
The Stanford OWL-QL Server The Knowledge Systems Laboratory (KSL)
of the Stanford University provides an OWL-QL implementation that supports
DAML+OIL and OWL knowledge bases. It seems to be the successor of their
DQL implementation, which is no longer accessible, and it uses the same settings.
The system uses the rst order logic theorem prover JTP 3 to answer the queries.
The DQL server is implemented as a wrapper around the theorem prover. A
query consists of DAML+OIL or OWL statements (in RDF triple notation) with
URI references replaced by variables. Compared to acyclic conjunctive queries,
the supported query language is therefore richer. Unfortunately the system does
not answer all allowed queries. For some queries the server simply terminates
the communication with a client. This is allowed by the DQL specication, but
probably not what a client expects.
      </p>
      <p>As an example, consider again the KB in Example 2.1 on page 5. The query
h?xi ← ?x:CAR ∧ h?x, !yi:ownedby ∧ !y:PERSON is correctly answered with
the binding acar for ?x. However, the slightly modied query h?xi ← ?x:CAR
∧ h?x, !yi:ownedby ∧ !y:CAR, asking for a car that is owned by a car, is also
answered with the binding acar for ?x.</p>
      <p>Both implementations were also tested with a second, more complicated
query: h?xi ← h?x, !yi:r u h!y, b1i:r u !y:C against the KB in gure 4.
The query asks for individuals that have an r successor that is a C and that
has b1 as r successor. The diculty is that in this case there is no nameable
instance of the concept C, but it can be inferred that either c1 or c2 is a C.
Using this inference, a1 is clearly a correct binding for ?x. However, the KSL
implementation also provides c1 and c2 as a binding for ?x.</p>
      <sec id="sec-3-1">
        <title>3http://www.ksl.stanford.edu/software/JTP</title>
        <p>It seems that the system has diculties with non-distinguished variables,
and queries often cause unexpected results. The reasons for this behaviour could
be due to the communication with the used theorem prover or in the theorem
prover itself. If the implementation is improved in this respect, however, it would
provide a powerful and complete implementation of the DQL specication. For
practical use, the system would benet from better error handling and error
explanation and a detailed documentation would be desirable.</p>
        <p>
          The UMBC Implementation Another DQL implementation (compliant to
the predecessor of the current DQL specication) has been realised by the
University of Maryland, Baltimore County (UMBC). 4 DQL was implemented by
the UMBC for communication between agents in a multi-agent environment.
The implementation is based on the FIPA protocol, 5 and has no publicly
available query interface. DQL is only used internally for specic agent to agent
communication tasks. Therefore the implementation is probably not interesting
for users who look for a better query support in general, and the system is not
further introduced here. The reasoning in this system is based on JESS (Java
Expert System Shell).6
The new Racer Query Language The recently introduced new Racer
Query Language (nRQL) [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] is not geared to the DQL specication, therefore
it misses all the protocol specic elements, such as termination tokens or the
delivery of answers in a bundle with a speciable size bound. In addition nRQL
does not support non-distinguished variables. Although nRQL is far away from
the DQL implementation, it is nevertheless a step towards better query support,
and it is therefore introduced here very briey. The query language itself is very
rich, as it supports the retrieval of variable bindings in arbitrary concept and
role expressions. In contrast to the other systems introduced here, all variables
are distinguished, even if they are not included in the answer. For an
example, the reader may again consider the KB in Example 2.1 (page 5). The nRLQ
query (retrieve (?x) (and (?x CAR) (?y PERSON) (?x ?y ownedby)))
returns all cars that are owned by a person. Although only cars are in the answer,
a named individual must exist in the KB that is specied as owner of the car.
As a result the query answer for this example is empty.
        </p>
        <p>Another feature, which was added to nRQL, is negated query atoms,
implemented using a negation as failure semantics. This is contrary to the Open
World semantics normally used in DL systems (and also by Racer). nRQL
uses the same operator ( not) for negated query atoms and for concept
negation, which could probably lead to confusion and the users have to be
care4http://www.cs.umbc.edu/~finin/papers/dqlFIPA.html
5http://www.fipa.org/
6http://herzberg.ca.sandia.gov/jess/
ful with the formulation of such a query. The nRQL query (retrieve (?x)
(not (?x PERSON))), using the negation as failure semantics, therefore
returns acar. Due to the Open World semantics for concept negation, the
modied query (retrieve (?x) (?x (not PERSON))) returns an empty answer set,
since Racer cannot prove that acar is not an instance of the concept person.</p>
        <p>nRQL oers more features than the ones described here and for details the
reader is referred to the Racer documentation.7
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusion</title>
      <p>Eorts are currently being made, to develop better query support for knowledge
representation systems. The establishment of OWL as a W3C recommendation
may also promote the proposed OWL-QL specication 8 and so encourage
improvements for the currently available systems or the development of new query
answering systems.</p>
      <p>So far, all introduced systems have some drawbacks. The Stanford
implementation covers all features dened by the DQL specication, but delivers in
some cases incorrect answers and rejects some queries, without providing an
answer. The Manchester implementation does not support all DQL features
and is restricted to acyclic conjunctive queries. Both systems are available as
Java applications and the Stanford implementation is also available as a servlet,
while the Manchester implementation is also available as a web service. Both
provide a web client interface and are able to deal with OWL and DAML+OIL
knowledge bases.</p>
      <p>The UMBC implementation is not publicly available and does not, therefore,
help to improve query support for knowledge bases in general. nRQL provides
richer query support, but is not meant as a DQL implementation and is
therefore missing many DQL features. In addition, the restriction that a binding is
required for all variables, even for those not expected to appear in the answer
set, would make it dicult to formulate queries such as the one in Section 3
against the KB in gure 4. Apart from this, nRQL is easy to use, and the
documentation provides a good introduction to the new features of nRQL.</p>
      <p>For all described systems there are still improvements possible. One main
topic for query answering systems is scalability. The query answering times
for knowledge bases with large amounts of individuals are still far away from
the results achieved by databases. For the DQL implementation developed in
Manchester, the boolean queries that are necessary to check valid combinations
of variable bindings, can cause major delays in case of many candidates. The
7The documentation, which includes a section about nRQL, is available from the Racer
download page: http://www.cs.concordia.ca/~haarslev/racer/download.html
8http://ksl.stanford.edu/projects/owl-ql
system would clearly benet of a further optimisation of this phase in the query
answering process, some of which were discussed in Section 2.4.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>S.</given-names>
            <surname>Bechhofer</surname>
          </string-name>
          .
          <source>The DIG Description Logic interface: DIG/1.1. Technical report</source>
          , University of Manchester,
          <year>Feb 2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Bechhofer</surname>
          </string-name>
          ,
          <string-name>
            <surname>F. van Harmelen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hendler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I.</given-names>
            <surname>Horrocks</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. L.</given-names>
            <surname>McGuinness</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. F.</given-names>
            <surname>Patel-Schneider</surname>
          </string-name>
          , and
          <string-name>
            <given-names>L. A.</given-names>
            <surname>Stein</surname>
          </string-name>
          .
          <article-title>OWL web ontology language reference</article-title>
          .
          <source>Technical report, W3C</source>
          ,
          <year>Feb 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Borgida</surname>
          </string-name>
          .
          <article-title>On the relative expressiveness of description logics and predicate logics</article-title>
          .
          <source>Articial Intelligence</source>
          ,
          <volume>82</volume>
          (
          <issue>12</issue>
          ):
          <fpage>353367</fpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>R.</given-names>
            <surname>Fikes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Hayes</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Horrocks.</surname>
          </string-name>
          <article-title>DQL - a query language for the semantic web</article-title>
          .
          <source>Technical report, Knowledge Systems Laboratory</source>
          , Stanford University,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>R.</given-names>
            <surname>Fikes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Hayes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and I. Horrocks. DAML</given-names>
            <surname>Query</surname>
          </string-name>
          <article-title>Language (DQL) abstract specication</article-title>
          . URL, http://www.daml.org/
          <year>2003</year>
          /04/dql , Apr
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Fikes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Hayes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and I. Horrocks. OWL</given-names>
            <surname>Query</surname>
          </string-name>
          <article-title>Language (OWL-QL) abstract specication</article-title>
          . URL, http://ksl-web.stanford.edu/KSL_Abstracts/ KSL-03-14.html,
          <year>Oct 2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>V.</given-names>
            <surname>Haarslev</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Mller</surname>
          </string-name>
          .
          <article-title>Racer system description</article-title>
          .
          <source>In Automated Reasoning: First Int. Joint Conference</source>
          , IJCAR , volume
          <year>2083</year>
          / 2001 of LNCS, pages
          <fpage>701705</fpage>
          ,
          <string-name>
            <surname>Siena</surname>
          </string-name>
          , Italy,
          <year>Jun 2001</year>
          . Springer-Verlag Heidelberg.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>V.</given-names>
            <surname>Haarslev</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Mller</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Wessel</surname>
          </string-name>
          .
          <article-title>RACER user's guide and reference manual</article-title>
          ,
          <source>version 1.7</source>
          .19. URL, http://www.sts.tu-harburg.de/~r.f.moeller/ racer/racer-manual-1-7-19.pdf ,
          <year>Apr 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>I. Horrocks.</surname>
          </string-name>
          <article-title>FaCT and iFaCT</article-title>
          .
          <source>In Proc. of the International Workshop on Description Logics (DL'99)</source>
          , volume
          <volume>22</volume>
          , pages
          <fpage>133135</fpage>
          ,
          <string-name>
            <surname>Linkping</surname>
          </string-name>
          , Sweden,
          <source>Jul Aug</source>
          <year>1999</year>
          . CEUR Workshop Proceedings.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>S.</given-names>
            <surname>Tessaris</surname>
          </string-name>
          .
          <article-title>Questions and answers: reasoning and querying in Description Logic</article-title>
          .
          <source>Phd thesis</source>
          , University of Manchester,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>F. van Harmelen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. F.</given-names>
            <surname>Patel-Schneider</surname>
          </string-name>
          ,
          <string-name>
            <surname>and I. Horrocks.</surname>
          </string-name>
          <article-title>Reference description of the DAML+OIL</article-title>
          (march
          <year>2001</year>
          )
          <article-title>ontology markup language</article-title>
          . URL, http://www.daml.org/
          <year>2001</year>
          /03/reference , Mar
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>