<!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>OWLlink: DIG for OWL 2</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Thorsten Liebigy</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Marko Lutherz</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Olaf Noppensy</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mariano Rodriguezzz</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Diego Calvanesezz</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Michael Wessel?</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ralf Moller</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Matthew Horridge</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Sean Bechhofer</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Dmitry Tsarkov</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Evren Sirin~</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>The OWLlink interface provides an implementation-neutral mechanism for accessing OWL reasoner functionality. In contrast to its DL-oriented predecessor DIG, OWLlink relies on OWL 2 for the primitives of the modelling language, and is thus fully compatible with the forthcoming incarnation of OWL. The OWLlink core introduced in this document covers (i) basic reasoner management, (ii) assertion of axioms and (iii) elementary ask functionality. The OWLlink extension mechanism allows to easily add any required functionality in a controlled way to the core language. We introduce OWLlink by providing a structural speci cation and a concrete binding of the interface that de nes how OWLlink messages can be encoded in XML and sent over HTTP.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>OWLlink provides a declarative interface to OWL reasoners. It is intended to
be a lightweight mechanism giving client applications access to reasoning
functionality provided by a server. The OWLlink core de nes primitives for handling
and manipulation of OWL Knowledge Bases (KBs), such as asserting axioms,
as well as primitives for asking questions about KB entities.</p>
      <p>
        Early attempts to standardize an interface for Description Logic (DL)
systems go back to the late 90s. At that time, most DL systems (e. g., FaCT [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]
and RACER [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]) provided proprietary interfaces using a Lisp-like syntax more
or less compliant with the KRSS syntax [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. In 1999, Bechhofer et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] de ned
a CORBA-based interface to FaCT using XML syntax, enlarging the scope to
more expressive DLs than covered by the KRSS speci cation. However, both
interfaces are more or less system-oriented and were quoted as being a handicap
for application developers.
      </p>
      <p>
        The initial DIG 1.0 speci cation of 2002 [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] was designed by the DL
Implementation Group (DIG), a self-selecting assembly of researchers and developers
associated with implementations of DL systems. Its intention was to overcome
the limitations of the CORBA-FaCT interface, by adding support for assertional
knowledge (not supported by FaCT at that time), reasoner identi cation and
concrete domains, among others. Furthermore, the goal was to align with actual
DL language fragments, such as those underlying DAML+OIL, and to provide an
HTTP based interface for the client-server communication. The shortly following
version DIG 1.1 of 2003 [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] was quickly adopted by numerous reasoning engines,
ontology editors and other applications. Despite its success there remained
several shortcomings, such as limitations in the supported language fragment, a
lack of elementary queries, and no mechanism to extend the protocol [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Most
of the identi ed issues were xed in the draft speci cation of DIG 2.0 [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] by
adding the requested features and lifting the concept language to OWL 2 [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
Finally, DIG 2.0 has now been renamed into OWLlink to re ect the important
shift from its DL roots to the XML-based cousin OWL and the lack of backwards
compatibility to DIG.
      </p>
      <p>
        Since syntax and semantic of the OWLlink language primitives are based
on OWL 2, the e ort to support the core protocol with respect to parsing is
reduced. Consequently, OWLlink inherits all of its underlying language concepts
such as punning1 and the OWL 2 notion of structural equivalence. However, it
does not support any parts of OWL 2 beyond the level of axioms. In particular,
it does not support imports and the notion of an ontology. Client applications
have to resolve any issues related to the handling of imports before passing a KB
to an OWLlink server. Under this view, the OWLlink interface is by far more
abstract in terms of implementation languages and internal representation
models than frameworks that provide access to data structures representing OWL
ontologies such as the Java speci c OWL API [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. Furthermore, the OWLlink
speci cation does not address issues such as stateful connections, transactions,
authentication, encryption, compression, concurrency, multiple clients and so on.
Yet some features (such as authentication, encryption and compression) might
be transparently provided by the access protocol (e. g., HTTP/1.1).
      </p>
      <p>OWLlink is speci ed in two parts: the rst part de nes the abstract protocol,
and the second part de nes a binding of the protocol into a concrete transport
mechanism. The abstract protocol is introduced in Sect. 2 and Sect. 3, its binding
to HTTP/1.1 and XML Schema is given in Sect. 4. The full speci cation can be
found online.2
2</p>
    </sec>
    <sec id="sec-2">
      <title>Basic Protocol</title>
      <p>
        OWLlink is a client-server protocol that makes a number of assumptions.
{ The connection to the server is stateless and clients are not identi ed.
{ OWLlink does not provide any support for modularity of Knowledge Bases.3
{ There is no explicit classi cation request. The server will decide when it is
appropriate to, for example, compute the classi cation hierarchy of concepts.
The following de nitions use a very limited subset of UML class diagram
notation, reusing many UML classes provided by the OWL 2 speci cation [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. The
1 Punning eliminates the need for introducing names. Each name can independently
be used as the name of a property, a class, a datatype, or an individual.
2 http://www.owllink.org/
3 A KB is a collection of facts and axioms.
names of abstract classes (that is, the classes that are not intended to be
instantiated) are written in italic. The names of all OWL 2 UML classes are pre xed
with ox. to emphasize that they are not de ned in the OWLlink speci cation.
2.1
      </p>
      <sec id="sec-2-1">
        <title>Sessions and Messages</title>
        <p>An OWLlink session abstracts the actual bidirectional communication channel
between the client and the server. It provides primitives to transport requests
and responses. The actual implementation of a session is de ned by the transport
mechanism used to access a OWLlink server.</p>
        <p>OWLlink servers are allowed to service several clients concurrently; however,
interaction within one session is not concurrent. A session is assumed to transport
requests and responses sequentially ordered. Each request should be processed
by the server such that the results are the same as if the requests were processed
sequentially in the order they were dispatched.</p>
        <p>The basic interaction pattern is that of request-response. Each request is
paired with exactly one response. Depending on the transport mechanism, it
might be ine cient to send individual requests to a server separately.
Therefore, OWLlink requests are bundled into messages. A RequestMessage object
encapsulates a list of Request objects, whereas a ResponseMessage object
encapsulates a list of Response objects (cf. Fig. 1).
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Con rmation and Error Handling</title>
        <p>Each request in OWLlink must be answered by a corresponding response. If
a request has been processed successfully, the type of the response returned
depends on the request and may contain additional data. If a request does not
produce any speci c data, the server should still return a Confirmation response
(or subtype thereof) to the client. Any con rmation may carry a warning in terms
of a string intended to be meaningful to a human user.</p>
        <p>If a request fails for some reason, the server should return an Error response
to the client containing a message specifying the cause for failure. Speci c
error classes are de ned to report syntactic violations (SyntaxError), semantic
problems (SemanticError) and issues regarding the management of a
Knowledge Base (KBError). If a server cannot process a request, it should attempt to
recover gracefully, and process other pending requests as if the error did not
happen. If, however, this recovery is not possible, after sending the Error response,
the server should close the session.
2.3</p>
      </sec>
      <sec id="sec-2-3">
        <title>Identi cation and Status</title>
        <p>All OWLlink servers must support the GetDescription request, to allow clients
to discover its identity and introspect its capabilities. The response to this
request is a Description, providing information about the servers current state,
CreateKB
kb: URI [0..1]
name: String [0..1]</p>
        <p>KBRequest</p>
        <p>kb: URI</p>
        <p>requests
&lt;&lt;list&gt;&gt;</p>
        <p>1..*</p>
        <p>Request
&lt;&lt;set&gt;&gt;</p>
        <p>Tell
axioms</p>
        <p>1..*
ox.Axiom</p>
        <p>Ask
IsClassSatisfiable
class</p>
        <p>1
ox.Description</p>
        <p>ResponseMessage</p>
        <p>responses
&lt;&lt;list&gt;&gt;</p>
        <p>1..*</p>
        <p>Response</p>
        <p>Confirmation
warning: String [0..1]</p>
        <p>Error
error: String</p>
        <p>KB
kb: URI
including: the name of the server, its version, an optional identi cation
message, the protocol version, the currently managed public and named KBs (see
Sect. 2.4), the supported extensions (see Sect. 2.5), and a set of con gurations.</p>
        <p>A Configuration is either a Property or a Setting. While properties are
read-only, settings can be adjusted per KB at any time via a Set request. The
settings given in a Description indicate the servers defaults that hold for newly
created KBs. The actual settings can be retrieved via GetSettings.</p>
        <p>
          While OWLlink de nes the general format of con gurations, it does not
provide speci c details on available con gurations { these will be de ned on a
per-server basis. However, the following con gurations have to be supported by
any OWLlink server.
selectedPro le A con guration that names the default pro le of the server
in case of a Description response and the active pro le in a Settings
response. Its type restricts the possible values to the list of language fragments
supported by the server. Any well-de ned DL fragment might be referenced
by name in this list, including, but not limited to, the ones de ned by the
OWL 2 Pro les [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] such as EL++, DL-Lite, OWL-R DL, etc.
ignoresAnnotations OWL 2 provides mechanisms for associating
annotations with KB axioms and entities. If the management of annotations might
incur unnecessary implementation and run-time overhead, this con guration
allows to instruct an OWLlink server to ignore annotations.4
ignoresDeclarations If a server is instructed to ignore declarations via this
con guration, all received declaration axioms are treated as not being send.
In case a server deals with declarations a declaration axiom is treated as all
other axioms (e.g. being sensible to structural equivalence).
uniqueNameAssumption A con guration specifying whether the server
employs the Unique Name Assumption (UNA) such that di erent names always
refer to di erent entities in the world.5
2.4
        </p>
      </sec>
      <sec id="sec-2-4">
        <title>Knowledge Base Management</title>
        <p>Servers may manage several KBs simultaneously. Therefore, each KB is identi ed
with a unique URI on creation. These URIs provide a handle that identi es the
particular incarnation of the KB in the particular server. Most requests are
derived from the KBRequest class, which requires a kb argument identifying the
KB to which the request applies (cf. Fig. 1). If a KB with the given URI cannot
be found, the server should return a KBError object.</p>
        <p>A new KB is allocated within the server by sending a CreateKB request.
If the optional URI argument kb is given, the new KB is allocated with this
URI, otherwise a fresh (server-generated) URI is used. However, if the given
URI is already in use by another KB allocated before or the KB could not be
allocated for some other reasons (e.g., a low memory condition), the response to
the CreateKB request is a KBError. The optional name argument of a CreateKB
request allows to associate a name with a KB on creation. Such KB names do not
have to be unique and thus cannot be used to identify a certain KB. However,
named KBs are published together with their identifying KB URI in the servers
Description object to be accessible from multiple clients.</p>
        <p>The use of unique URIs allows to sidestep some of the issues relating to
multiple clients. If a client chooses not to share a KB URI with another client
(either directly or by making it public through passing a name on creation), then
the client can be sure that it is the only one interacting with that KB.6</p>
        <p>
          Di erent clients of the same server, like KB browsers or explanation tools,
however, may want to share KBs by sharing URIs or making KBs public through
naming { it is then the clients' responsibility to manage and coordinate this
sharing. The possibility to pass an identifying URI along with a CreateKB followed
by a mixture of arbitrary tell and ask request allows OWLlink KBs to stand
alone { a situation that is useful, say for test suites and benchmarking.
4 A server con gured this way should still accept annotations.
5 OWL does not make the UNA [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Still, a client might choose to enable the UNA in
case the reasoning performance is of utmost importance.
6 This is not entirely the case, as there is a (very small) chance that a malicious client
could guess a URI which is in use.
2.5
        </p>
      </sec>
      <sec id="sec-2-5">
        <title>Extensions</title>
        <p>Di erent reasoners support di erent language fragments and di erent reasoning
facilities. To support these di erences and future developments, OWLlink is
extensible. Current candidates for extensions are:
Axiom Retraction Adds the ability to retract previously told axioms from</p>
        <p>KBs. Axiom retraction is sensitive to the rules of structural equivalence.7
Told Information Retrieval Provides access to previous told KB entities
by returning requested portions of axioms { structurally exactly as given in
previous tell messages.8</p>
      </sec>
      <sec id="sec-2-6">
        <title>Ontology Based Data Access (OBDA) Extends OWLlink by the concepts</title>
        <p>of data source and mapping to support OBDA architectures facilitating the
integration of data from existing data repositories.9
Other extensions are on the way such as a conjunctive query, a concrete domain
interface, a non-standard inferences, and an explanation interface extension.</p>
        <p>An extension consists of a set of documents specifying the additional
messages, a structural speci cation providing su cient information about their
meaning, and a document per supported binding de ning their syntax.</p>
        <p>All documents must be available on the Web. A server reports the set of
extensions supported for the binding used by a GetDescription request as part
of the resulting Description object by listing their URIs without extension.
3
3.1</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Tells &amp; Asks</title>
      <sec id="sec-3-1">
        <title>Tell Language</title>
        <p>
          As mentioned before, OWLlink relies on the language primitives of OWL 2. With
respect to the tell requests { those message parts which add axioms to a KB {
this basically means that OWLlink refers to the various axioms about classes,
properties or facts de ned in Sect. 6 of the OWL 2 speci cation [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. As depicted
in Fig. 1 a tell request contains a set of one or more OWL 2 axioms and will
be answered with a OK response when successfully processed by the server.
3.2
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Basic Asks</title>
        <p>The OWLlink core includes a set of general requests for retrieving information
about the KB. These so called basic asks cover common queries with respect to
the given and inferred axioms of the KB. They substantially extend the query
interface of DIG 1.1 with requests needed to be more aligned with OWL 2 or
which have been missed by DIG user. In order to provide an informal overview
the following table lists all of them. Their semantic and a detailed description of
their corresponding responses is given in the OWLlink structural speci cation.
7 http://www.owllink.org/ext/retraction-20081001/
8 http://www.owllink.org/ext/told-access-20081001/
9 http://obda.inf.unibz.it/owllink/obda-20081001/
s GetAllClasses
ite GetAllObjectProperties
i
tn GetAllDataProperties
E GetAllAnnotationProperties
B
K GetAllIndividuals</p>
        <p>GetAllDatatypes
s IsKBSatisfiable
tau IsKBStructurallyConsistent
tS GetKBLanguage</p>
        <sec id="sec-3-2-1">
          <title>SetOfClasses</title>
          <p>SetOfObjectProperties
SetOfDataProperties
SetOfAnnotationProperties
SetOfIndividuals
SetOfDatatypes</p>
        </sec>
        <sec id="sec-3-2-2">
          <title>BooleanResponse</title>
          <p>BooleanResponse</p>
          <p>StringResponse
IsClassSatisfiable BooleanResponse
IsClassSubsumedBy BooleanResponse
AreClassesDisjoint BooleanResponse
AreClassesEquivalent BooleanResponse
GetSubClasses SetOfClassSynsets
GetSuperClasses SetOfClassSynsets
GetEquivalentClasses SetOfClasses</p>
          <p>GetSubClassHierarchy ClassHierarchy
a Are[O|D]PropertiesEquivalent BooleanResponse
ehm Is[O|D]PropertySatisfiable BooleanResponse
cS Are[O|D]PropertiesDisjoint BooleanResponse</p>
          <p>Is[O|D]PropertySubsumedBy BooleanResponse
Is[O|D]PropertyXXX BooleanResponse
GetUnsatisfiable[O|D]Properties SetOf[O|D]Properties
GetDisjoint[O|D]Properties SetOf[O|D]PropertySynsets
GetSub[O|D]Properties SetOf[O|D]PropertySynsets
GetSuper[O|D]Properties SetOf[O|D]PropertySynsets
GetEquivalent[O|D]Properties SetOf[O|D]Properties
GetSub[O|D]PropertyHierarchy [O|D]PropertyHierarchy
AreIndividualsEquivalent BooleanResponse
AreIndividualsDisjoint BooleanResponse
IsInstanceOf BooleanResponse
GetTypes SetOfClassSynsets
GetFlattenTypes SetOfClasses
GetEquivalentIndividuals SetOfIndividuals
GetDisjointIndividuals SetOfIndividualSynsets
GetFlattenDisjointIndividuals SetOfIndividuals
Get[O|D]PropertiesOfSource SetOf[O|D]PropertySynsets</p>
          <p>GetObjectPropertiesOfFiller SetOfObjectPropertySynsets
tsc GetDataPropertiesOfConstant SetOfDataPropertySynsets
aF Get[O|D]PropertiesBetween SetOf[O|D]PropertySynsets
GetInstances SetOfIndividualSynsets
GetObjectPropertyFillers SetOfIndividualSynsets
GetDataPropertyFillers SetOfConstants
Get[O|D]PropertySources SetOfIndividualSynsets
GetFlattenInstances SetOfIndividuals
GetFlattenObjectPropertyFillers SetOfIndividuals
GetFlatten[O|D]PropertySources SetOfIndividuals
AreIndividualsRelated BooleanResponse</p>
          <p>IsIndividualRelatedWithConstant BooleanResponse
Within this table \[O|D]" abbreviates that this query exists in two avors,
either for Object- as well as for DataProperties. Furthermore the \XXX" in
Is[O|D]PropertyXXX is a wild-card for the various characteristics a property
can have.</p>
          <p>Responses of type SetOfXXXSynset consist of zero or more synsets of an
OWL 2 entity such as Individual, Object- or DataProperty, or OWLClass. Such
a synset is a set of one or more elements whose members are all equivalent to
each other, i. e. for which mutual equivalence is entailed from the axioms of the
KB. In case this information about equivalence sets is not needed (e. g. due to
UNA) there are so called attened variants for those asks which deal with return
sets consisting of individuals.
4</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>HTTP/XML Binding</title>
      <p>The HTTP/XML binding of OWLlink uses HTTP as its underlying
communication protocol for exchanging XML content between a reasoner and a client. Other
bindings may utilize SOAP or a particular Remote Message Invocation
protocol. Technically, within the HTTP/XML environment, the reasoner has to accept
HTTP POST request and responds as appropriate according to the OWLlink
speci cation. In order to alleviate the verbose nature of any XML-based protocol
OWLlink servers should support the use of the standard compression technology
for Content-Encoding of the HTTP/1.1 transport mechanism.
4.1</p>
      <sec id="sec-4-1">
        <title>Sessions and Messages</title>
        <p>An OWLlink session is mapped to an HTTP connection and is typically
established upon sending the rst request. HTTP servers are in general allowed to
close the HTTP connection at their own discretion, which in e ect terminates
the OWLlink session.10 In order to prevent this from happening, the client can
include the keepAlive in the header of each HTTP request it sends.
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>XML Schema</title>
        <p>The XML schema is obtained by a straightforward translation of the objects from
the structural speci cation: in general, the names of XML elements correspond
to the names of the corresponding UML classes. It relies on the OWL 2 XML
serialization for the primitives of the ontology language, and is therefore fully
compatibly with OWL. As a result, implementors of the XML binding can re-use
their implementation of OWL 2 parsers to read the OWL 2 speci c contents of
the tell and ask primitives.</p>
        <p>Each OWLlink request (i. e., management, tell and ask primitives) must be
acknowledged by a corresponding OWLlink response that are pooled within
10 Note that closing an OWLlink session does not imply the release of any KB.
a RequestMessage respectively a ResponseMessage. Following a
straightforward translation of the OWLlink speci cation into an XML schema the
content body of a HTTP message is either the root element RequestMessage or a
ResponseMessage containing requests resp. responses as can be seen in Fig. 2.
Some more detailed examples are given in Appendix A.</p>
        <p>&lt;owllink:RequestMessage&gt;
[request #1]
[request #2]
[ ... ]
[request #n]
&lt;/owllink:RequestMessage&gt;
&lt;owllink:ResponseMessage&gt;
[response #1]
[response #2]
[ ... ]
[response #n]
&lt;/owllink:ResponseMessage&gt;
Strong evidence suggests that OWL 2 will become an important standard for
representing ontologies. According to the W3C its featured usage is to enable
applications to meaningfully process information by means of reasoning. However,
from the application's point of view this requires not only a language standard
for ontologies but also a standard way to interact with components which
supply reasoning or other services. OWLlink adds this latter piece of the ontology
infrastructure by providing an extensible protocol for communication with OWL
reasoning systems. The OWLlink protocol facilitates client applications to
congure a reasoner, to transmit OWL 2 axioms, and to access reasoning services
via a set of basic queries. Furthermore, OWLlink is exible in that it allows to
add any desired functionality by de ning a corresponding extension.</p>
        <p>The current OWLlink speci cation is still a draft and obviously cannot be
nalized before the OWL 2 language speci cation has reached W3C
recommendation status. In the meantime the OWLlink speci cation itself has to undergo a
process where interface details (e. g. server descriptions or the basic asks) need to
be reviewed by potential server and client developers as well as users. Therefore,
anyone who feels addressed by this initiative is requested to join the
discussion and to provide feedback to the OWLlink working group11 as well as to the
developers of those OWL components they would like access via OWLlink.</p>
        <p>In fact, the developers of the established and most widely used reasoning
systems RacerPro, Pellet and FaCT++ attentively follow the development of
OWLlink and some already have announced to support the protocol.12 The
developers of the QuOnto system are in the process of migrating their current
11 There is a public discussion forum at http://www.owllink.org/forum/
12 Racer System will release an OWLlink compatible version of RacerPro shortly after
this OWLED'08.</p>
        <p>OBDA extension for DIG 1.1 to the new OWLlink proposal (cf. Sect. 2.5).
Various other developers of client applications, for example ontology editing and
browsing tools such as the Protege 4 or OntoTrack, also commited to adopt
OWLlink. The same holds for the Java based OWL-API.</p>
        <p>OWLlink provides a framework for accessing management and reasoning
services around the forthcoming OWL 2. It is exible to cope with future demands
with respect to the underlying language as well as services. Beyond that it is
designed on a structural level which enables many di erent bindings to concrete
transport mechanisms. Besides the introduced XML/HTTP binding there are
many other options. For instance there is a draft with respect to a binding
aming at transporting OWL 2 functional pre x style syntax over HTTP (or a simple
TCP socket connection).13 The latter would provide a modern substitute for the
outdated KRSS standard. Even an in-memory binding within one application,
by mapping the OWLlink primitives to interfaces for instance, is a desired and
sensible usage of OWLlink. In any case using OWLlink comes with the bene t
of having a well-de ned interface that allows to easily plug di erent OWL-aware
components together.
13 http://www.owllink.org/owllink-httpsexpr-20081001/</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>OWLlink XML Binding Examples</title>
      <p>A sample con guration request which is typically send at the initialization phase
to introspect the OWLlink server capabilities:
&lt;RequestMessage xmlns="http://www.owllink.org/owllink-xml"&gt;
&lt;GetDescription/&gt;
&lt;/RequestMessage&gt;
A corresponding reasoner response with information about the o ered OWLlink
protocol version, reasoner version as well as o ered options and settings followed
by a list of supported extensions and public KBs:
The following is an example of a request (and its response) containing a
\testsuite" or \benchmark-style" OWLlink message starting with the creation of a
KB which is followed by a mixture of tells and asks:
&lt;!DOCTYPE ResponseMessage [
&lt;!ENTITY owl "http://www.w3.org/2002/07/owl#"&gt; ]&gt;
&lt;RequestMessage xmlns="http://www.owllink.org/owllink-xml"
xmlns:ol="http://www.owllink.org/owllink-xml"
xmlns:ox="http://www.w3.org/ns/owl2-xml#"&gt;
&lt;!-- KB management --&gt; &lt;!-- Some asks --&gt;
&lt;CreateKB ol:kb="KB_1"/&gt; &lt;GetAllClasses ol:kb="KB_1"/&gt;
&lt;CreateKB ol:kb="KB_2" &lt;GetEquivalentClasses ol:kb="KB_1"&gt;
ol:name="My KB 2"/&gt; &lt;ox:OWLClass ox:URI="D"/&gt;
&lt;!-- Some tells in KB_1--&gt; &lt;/GetEquivalentClasses&gt;
&lt;Tell ol:kb="KB_1"&gt; &lt;IsClassSubsumedBy ol:kb="KB_1"&gt;
&lt;ox:SubClassOf&gt; &lt;ox:OWLClass ox:URI="&amp;owl;Thing"/&gt;
&lt;ox:OWLClass ox:URI="B"/&gt; &lt;ox:OWLClass ox:URI="&amp;owl;Nothing"/&gt;
&lt;ox:OWLClass ox:URI="A"/&gt; &lt;/IsClassSubsumedBy&gt;
&lt;/ox:SubClassOf&gt; &lt;GetSubClasses ol:kb="KB_1"&gt;
&lt;ox:SubClassOf&gt; &lt;ox:OWLClass ox:URI="C"/&gt;
&lt;ox:OWLClass ox:URI="C"/&gt; &lt;/GetSubClasses&gt;
&lt;ox:OWLClass ox:URI="A"/&gt; &lt;!--Some tells in another KB --&gt;
&lt;/ox:SubClassOf&gt; &lt;Tell ol:kb="KB_2"&gt;
&lt;ox:EquivalentClasses&gt; &lt;ox:SubClassOf&gt;
&lt;ox:OWLClass ox:URI="D"/&gt; &lt;ox:OWLClass ox:URI="A"/&gt;
&lt;ox:OWLClass ox:URI="E"/&gt; &lt;ox:OWLClass ox:URI="B"/&gt;
&lt;/ox:EquivalentClasses&gt; &lt;/ox:SubClassOf&gt;
&lt;ox:ClassAssertion&gt; &lt;/Tell&gt;
&lt;ox:OWLClass ox:URI="A"/&gt; &lt;!-- KB management --&gt;
&lt;ox:Individual ox:URI="iA"/&gt; &lt;ReleaseKB ol:kb="KB_1"/&gt;
&lt;/ox:ClassAssertion&gt; &lt;!-- One more ask --&gt;
&lt;/Tell&gt; &lt;GetAllClasses ol:kb="KB_1"/&gt;
&lt;/RequestMessage&gt;
&lt;!DOCTYPE ResponseMessage [
&lt;!ENTITY owl "http://www.w3.org/2002/07/owl#"&gt; ]&gt;
&lt;ResponseMessage xmlns="http://www.owllink.org/owllink-xml"
xmlns:ol="http://www.owllink.org/owllink-xml"
xmlns:ox="http://www.w3.org/ns/owl2-xml#"&gt;
&lt;!-- KB management --&gt; &lt;/SetOfClasses&gt;
&lt;KB ol:kb="KB_1"/&gt; &lt;BooleanResponse ol:result="false"/&gt;
&lt;KB ol:kb="KB_2"/&gt; &lt;SetOfClassSynsets&gt;
&lt;!-- tell --&gt; &lt;ClassSynset&gt;
&lt;OK/&gt; &lt;ox:OWLClass ox:URI="&amp;owl;Nothing"/&gt;
&lt;!-- ask --&gt; &lt;/ClassSynset&gt;
&lt;SetOfClasses&gt; &lt;/SetOfClassSynsets&gt;
&lt;ox:OWLClass ox:URI="A"/&gt; &lt;!--Some tells in another KB --&gt;
&lt;ox:OWLClass ox:URI="B"/&gt; &lt;OK/&gt;
&lt;ox:OWLClass ox:URI="C"/&gt; &lt;!-- KB management --&gt;
&lt;ox:OWLClass ox:URI="D"/&gt; &lt;OK/&gt;
&lt;ox:OWLClass ox:URI="E"/&gt; &lt;!-- One more ask --&gt;
&lt;/SetOfClasses&gt; &lt;KBError errorMessage=
&lt;SetOfClasses&gt; "KB KB_1 does not exist!"/&gt;
&lt;ox:OWLClass ox:URI="E"/&gt; &lt;/ResponseMessage&gt;</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Using an expressive description logic: FaCT or ction</article-title>
          ?
          <source>In: Proc. of the 6th Int. Conf. on Principles of Knowledge Representation and Reasoning (KR'98)</source>
          . (
          <year>1998</year>
          )
          <volume>636</volume>
          {
          <fpage>647</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Haarslev</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          , Moller, R.:
          <article-title>Description of the RACER system and its applications</article-title>
          .
          <source>In: Proc. of the Int. Workshop on Description Logics</source>
          . (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Swartout</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          :
          <article-title>Description-Logic knowledge representation system speci cation from the KRSS group</article-title>
          .
          <source>Working version (draft)</source>
          (
          <year>1993</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bechhofer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tessaris</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>A proposal for a Description Logic interface</article-title>
          .
          <source>In: Intern. Workshop on Description Logics</source>
          . (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bechhofer</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>The DIG Description Logic interface</article-title>
          :
          <source>DIG/1.0. Technical report</source>
          , University of Manchester (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bechhofer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , Moller, R.,
          <string-name>
            <surname>Crowther</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>The DIG Description Logic interface</article-title>
          .
          <source>In: Proc. of the Int. Workshop on Description Logics (DL'03)</source>
          . (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Dickinson</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Implementation experience with the DIG 1.1 speci cation</article-title>
          .
          <source>Technical Report HPL-2004-85</source>
          ,
          <string-name>
            <surname>Hewlett-Packard</surname>
          </string-name>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Turhan</surname>
            ,
            <given-names>A.Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bechhofer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kaplunova</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liebig</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Luther</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , Moller, R.,
          <string-name>
            <surname>Noppens</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Suntisrivaraporn</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , Weithoner,
          <source>T.: DIG2</source>
          .
          <article-title>0 { towards a exible interface for Description Logic reasoners</article-title>
          .
          <source>In: Proc. of the OWL Experiences and Directions Workshop</source>
          at the ISWC'
          <fpage>06</fpage>
          . (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Motik</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Patel-Schneider</surname>
            ,
            <given-names>P.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>OWL 2 Web Ontology Language: Structural speci cation and functional-style syntax</article-title>
          .
          <source>W3C Working Draft, 11 April</source>
          <year>2008</year>
          , World Wide Web Consortium (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Horridge</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bechhofer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Noppens</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>The OWL API</article-title>
          .
          <source>In: Proc. of the 3rd OWL Experiences and Directions Workshop</source>
          at the ESWC'
          <fpage>07</fpage>
          . (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Grau</surname>
            ,
            <given-names>B.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Motik</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fokoue</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lutz</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>OWL 2 Web Ontology Language: Pro les</article-title>
          .
          <source>W3C Working Draft, 11 April</source>
          <year>2008</year>
          , World Wide Web Consortium (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>