<!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>Grounding semantic web services with rules</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Dave Lambert</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>John Domingue</string-name>
          <email>j.b.domingueg@open.ac.uk</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Knowledge Media Institute, The Open University</institution>
          ,
          <addr-line>Milton Keynes</addr-line>
          ,
          <country country="UK">United Kingdom</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Semantic web services achieve e ects in the world through web services, so the connection to those services|the grounding|is of paramount importance. The established technique is to use XML-based translations between ontologies and the SOAP message formats of the services, but these mappings cannot address the growing number of non-SOAP services, and step outside the ontological world to describe the mapping. We present an approach which draws the service's interface into the ontology: we de ne ontology objects which represent the whole HTTP message, and use backward-chaining rules to translate between semantic service invocation instances and the HTTP messages passed to and from the service. We present a case study using Amazon's popular Simple Storage Service.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Semantic web services are implemented on top of conventional, syntactic web
services. The connection between the two|the grounding |must enable an actual
web service to be invoked based on the content of a semantic description of a
service invocation. The conventional approach taken by all the major semantic
services frameworks [1{3] is to use an XML mapping language to translate between
the two. This naturally doesn't work for non-XML services, such as many of the
growing number of RESTful services [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] (section 2). Moreover, XML mapping
requires the service engineer to use an use another language in addition to the
knowledge representation language used for describing the ontologies, and to
consider the XML serialisation of their ontology: three languages instead of one.
      </p>
      <sec id="sec-1-1">
        <title>We present an alternative which models the target service's input and output</title>
        <p>(HTTP messages) as ontological objects, and uses backward chaining rules to
direct the translations between the semantic service invocation and the low-level
data formats required by the service (section 3). As a case study, we take the</p>
      </sec>
      <sec id="sec-1-2">
        <title>RESTful version of Amazon's commercial web-storage service, where Amazon's</title>
        <p>authentication process precludes its description by WSDL or WADL (section 4).</p>
      </sec>
      <sec id="sec-1-3">
        <title>We develop the ontologies for describing the HTTP protocol itself, cryptography,</title>
        <p>
          and the broker's ontological hooks for the grounding procedure, and put them
together in a description of Amazon's service (section 5). The ontologies and
grounding have been implmented in the Internet Reasoning Service broker [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. We
compare our scheme to current XML-centric approaches to groundings (section 6).
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>The web service menagerie</title>
      <p>Semantic web services rely on normal web services to source and manipulate
information and to e ect change in the world. This requires that semantic service
brokers translate between the world of domain theories, represented in some
ontology language, and the on-the-wire data formats and protocols that are
the language of the target web services. For semantic web services to be taken
seriously by practitioners, groundings must be able to organise communication
with a comprehensive subset of real, deployed web services.</p>
      <sec id="sec-2-1">
        <title>The triumvirate of XML, SOAP, and WSDL [6{8] is the basis for the W3C's</title>
        <p>
          web services stack, colloquially known as `WS-*'. As the complexity of the WS-*
stack has increased, SOAP's hegemony has ebbed, with many services being
o ered using lighter weight alternatives. The genuinely simple protocol which
inspired SOAP has re-emerged in its own right as XML-RPC [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Simultaneously,
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>REST [4] has gained considerable mind-share: according to Amazon's web services</title>
        <p>evangelist Je Barr, around 80% of invocations of Amazon's services are done
through the REST interface1. Yahoo! does not provide a SOAP interface at all,
and has no intention of adding one2. Flickr, a popular photo-sharing website,
provides its API in all three web service avours: SOAP, XML-RPC, and RESTful.</p>
      </sec>
      <sec id="sec-2-3">
        <title>The SOAP interface does not have a WSDL description, and none of the the</title>
        <p>third-party bindings3 for the most popular languages target the SOAP variant:</p>
      </sec>
      <sec id="sec-2-4">
        <title>Flickr Binding Language API Flickr Binding Language API</title>
      </sec>
      <sec id="sec-2-5">
        <title>Flickcurl C REST Flickr-Upload Perl REST</title>
        <p>ickrj Java REST phpFlickr PHP REST
jickr Java REST ickr.py Python REST</p>
      </sec>
      <sec id="sec-2-6">
        <title>FlickrNet .NET REST ickr-ruby Ruby REST</title>
      </sec>
      <sec id="sec-2-7">
        <title>Flickr-API Perl REST r ickr Ruby XML-RPC</title>
        <p>2.1 Invoking syntactic web services</p>
      </sec>
      <sec id="sec-2-8">
        <title>Before considering how to connect the semantic invocation with the actual service,</title>
        <p>we should rst look at how the various service types are invoked. In SOAP, the
connection proceeds at two levels: the HTTP connection, and the XML message.</p>
      </sec>
      <sec id="sec-2-9">
        <title>The HTTP request must include the method (always POST), along with the</title>
        <p>
          URL of the service, and an HTTP header named SOAPAction, which the server
uses to dispatch internally. With SOAP, most of the information required for
service invocation is encoded in an XML message which comprises the content of
an HTTP POST request4. This leads to the conception of groundings as simply
translations at the XML level from some ontological representation to an XML
1 http://www.jeff-barr.com/?p=96
2 http://developer.yahoo.com/faq/#soap
3 http://www.flickr.com/services/api/
4 SOAP abstracts away from the transport, but in practise it is used almost exclusively
with HTTP, and it is highly questionable whether a system not using HTTP can
legitimately be called a `Web' service [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ].
serialisation to be passed to the service, where the URL is a xed string, identi ed
indirectly through the WSDL. The URL and SOAPAction values are dealt with at
the HTTP level.
        </p>
        <p>POST http: // www . world - weather . org / soap
SOAPAction: WeatherReport
&lt;? xml version =" 1.0 "? &gt;
&lt; soap:Envelope xmlns:soap =" http: // schemas . xmlsoap . org / soap / envelope /"
xmlns:xsd =" http: // www . w3 . org /2001/ XMLSchema "
xmlns:w =" http: // www . weather . ex / soap /" &gt;
&lt; soap:Body &gt;
&lt; w:GetWeatherReport &gt;</p>
        <p>&lt; w:Country &gt; Italy &lt;/ w:Country &gt;&lt; w:City &gt;Rome &lt;/ w:City &gt;
&lt;/ w:GetWeatherReport &gt;
&lt;/ soap:Body &gt;
&lt;/ soap:Envelope &gt;</p>
      </sec>
      <sec id="sec-2-10">
        <title>The XML-RPC equivalent is very similar, albeit with no SOAPAction header,</title>
        <p>nor the large number of XML namespace declarations. Unlike SOAP, XML-RPC
relies on HTTP as more than a transport protocol. For example, authentication is
handled at the HTTP level, so the Authorization header must be accessible to
the grounding.</p>
        <p>
          Representational State Transfer, better known as REST [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], emphasises
resources over operations. It is most often implemented on top of HTTP, where it
aligns web service operations with the `methods' of the HTTP protocol. This
means that information requests are performed using GET, changes of state are
made with POST, while PUT and DELETE are used to manage the data stored at the
speci ed URI. In practise, this means that many operations are performed simply
by encoding an operation in a URI and having the client request it:
GET http :// world - weather . org / forecast / italy / rome /20081216 HTTP /1.1
        </p>
      </sec>
      <sec id="sec-2-11">
        <title>Note that the URL can be an arbitrarily complex amalgam of service's `name',</title>
        <p>and some of the service parameters|country and city names, and forecast date.</p>
      </sec>
      <sec id="sec-2-12">
        <title>The returned content need not be XML: in this case, it might be plain text</title>
        <p>description of the weather, or a graphic illustration of the weather over Rome.</p>
      </sec>
      <sec id="sec-2-13">
        <title>The correct use of HTTP headers such as Content-Type and Date become essential.</title>
      </sec>
      <sec id="sec-2-14">
        <title>With RESTful and XML-RPC services, WSDL and XML schema descriptions are</title>
        <p>rarely, if ever, furnished by the service provider.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Approach</title>
      <sec id="sec-3-1">
        <title>Given that SOAP is no longer the sole deployment route for web services, we</title>
        <p>need to reconsider the desiderata for a grounding scheme. For us, we needed a
grounding which could address REST services, but which would also support</p>
      </sec>
      <sec id="sec-3-2">
        <title>SOAP and XML-RPC in the same framework. This led to the following aims:</title>
      </sec>
      <sec id="sec-3-3">
        <title>1. Target HTTP, not SOAP.</title>
      </sec>
      <sec id="sec-3-4">
        <title>2. Be agnostic about content type: HTTP carries XML, but also images, sound,</title>
        <p>and other data formats.</p>
      </sec>
      <sec id="sec-3-5">
        <title>3. Do not require third-party cooperation.</title>
      </sec>
      <sec id="sec-3-6">
        <title>4. Stay within the ontology language.</title>
        <p>Principle 1 enables us to support the three web services approaches today,
and gives us some degree of future-proo ng. Principle 2 allows us to describe,
for example, services that return images. Principle 3 frees the semantic web
services description from the service provider. If a service's WSDL description is
not available, or incorrect, we should not be prevented from creating a grounding
if we can otherwise discover the interface, through reverse engineering or reading
documentation. Nor should we expect the provider to link to our semantic
description of their service: it is our description, and they have no obligation to
trust or advertise it. Principle 4 is just the application of Ockham's razor: the
fewer languages the engineer must deal with, the better. But it also retains the
possibility of reasoning over the grounding, for instance in data mediation. More
philosophically, if we are truly convinced of the power of ontologies to model such
things, it seems odd to avoid their use at this point.</p>
        <p>This thought leads to our approach: we model, in a series of ontologies, the
various protocols and encodings needed to invoke web services. Each facet of the
process is represented by its own ontology: a pure HTTP ontology; a cryptography
ontology; and the IRS speci c ontology which allows us to map from service
invocations to data on the wire. While our ontologies were developed for the
purpose of supporting groundings, they could in principle be general purpose
ontologies developed for other uses in the respective domains. To invoke a web
service, a WSMO broker follows this procedure:
1. A user invokes a semantic services goal by calling the broker with a goal
name and the parameters.
2. After some processing by mediators, a web service invocation instance is
created. The invocation object holds the service name, input parameters, and
slots to hold the return values from the web service.</p>
      </sec>
      <sec id="sec-3-7">
        <title>3. A rule from the service's ontology is called to create an HTTP message object</title>
        <p>based on the service invocation object, with its various slots' values set to
re ect the parameters from the the service invocation object.</p>
      </sec>
      <sec id="sec-3-8">
        <title>4. The HTTP message is passed to the broker, which then turns the HTTP</title>
        <p>object directly into a request on the network.</p>
      </sec>
      <sec id="sec-3-9">
        <title>The process happens in reverse when the service replies. The stage addressed</title>
        <p>in this paper is step 3. The two rules we call lower and lift, which respectively
`lower' and `lift' the service request object to an implementation level and back.</p>
      </sec>
      <sec id="sec-3-10">
        <title>Concretely, the two rule heads are:</title>
        <p>( lower ? service-type ? service-instance ? http-request )
( lift ? service-type ? http-response ? service-instance )
The rst argument, ?service-type, allows each service to have its own
implementation, dispatched on the value of the ?service-type argument. The
lower rule is a series of subgoals whose successful ful lment leads to the
instantiation of ?http-request, which can then be interpreted by the broker
to call the web service. When a response is received from the server, the lift rule
runs on the same ?service-instance, and the newly returned ?http-response,
modifying the original ?service-instance frame to record the return value.</p>
      </sec>
      <sec id="sec-3-11">
        <title>We implemented this approach in the Internet Reasoning Service (IRS) [5].</title>
      </sec>
      <sec id="sec-3-12">
        <title>The IRS is based on the Web Service Modelling Ontology (WSMO) [11], and</title>
        <p>
          uses OCML [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] for knowledge representation and reasoning. OCML is a frame
language with procedural attachment, and is comparable in expressiveness to the
        </p>
      </sec>
      <sec id="sec-3-13">
        <title>Ontolingua and Loom languages. In our implementation, we use OCML's ability</title>
        <p>to de ne the operational semantics of ontological components directly in Lisp.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Amazon's Simple Storage Service</title>
      <sec id="sec-4-1">
        <title>Before looking at the ontologies in detail, we examine our motivating task: the</title>
        <p>targeting of a real-world web service in the context of our work in the Living</p>
      </sec>
      <sec id="sec-4-2">
        <title>Human Digital Library project (LHDL) [13]. LHDL is building a library of data</title>
        <p>about the human musculoskeletal system, along with web services to visualise
and manipulate it. The medical imaging and motion data, from MRI scans,
dissection and gait analysis, is stored in repositories accessed and managed by</p>
      </sec>
      <sec id="sec-4-3">
        <title>XML-RPC web services, and computational services accessed through SOAP. We</title>
        <p>use semantics to manage and integrate them with external services.</p>
        <p>A key aim of LHDL is to enable the storing and sharing of the research data,
but the data les commonly range in size from hundreds of megabytes to several
gigabytes. It would be bene cial if we could outsource the storage and transfer of
this data, and several major web services providers have recently begun o ering
such facilities. We decided to use Amazon's `simple storage service' (S3) as our
test-bed. Amazon's S3 is a commercial service, with charging being a function
of storage and data transfer (in Gigabytes per month), and number of HTTP
operations.</p>
        <p>Storage at S3 is organised by `buckets' and `keys', which are analogous to
directories and les in le systems. Buckets live in a global namespace, and users
can create new ones provided the name is currently unused. Within a bucket, the
owner has control over the keys and the objects they name, as well as access
control for other users. A user is identi ed by an `access key', and authorised by
means of a `secret key'. Buckets are created by executing a PUT to the bucket's
corresponding URL. The following HTTP request instructs S3 to store the string
`Hello, world!' in the object with key hello in the bucket lhdl:
PUT / lhdl / hello HTTP /1.1
Host : s3. amazonaws .com
Authorization : AWS 5 EB1K7DR13JHNF92JV23 : CwuLdze7uX4LLP + KGMe /5 htHb20 =
Date : Fri , 26 Sep 2008 21:33:39 GMT
Content - Type : text / plain
Content - Length : 13
Hello , world !</p>
      </sec>
      <sec id="sec-4-4">
        <title>Note the Authorization header. The content of this eld is speci ed by</title>
      </sec>
      <sec id="sec-4-5">
        <title>Amazon to be the pair of the user's access key, and a digital signature (using</title>
        <p>the HMAC-SHA1 hash) of the HTTP request itself, created with the user's secret
key. Figure 1 shows the grammar provided by Amazon specifying the signature's
content. Since a request's Date header must agree with that on the Amazon
servers (within a narrow margin of error), the above request would not work now.</p>
      </sec>
      <sec id="sec-4-6">
        <title>Note that, because the signed string includes the date, the authorisation value</title>
        <p>
          cannot be generated before the date is decided. Since the date is only decided at
the HTTP layer, they must both be done as part of the same process in the broker,
and with one control procedure being responsible. These features make S3's
interface impossible to capture in WSDL [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] or WADL [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], but straightforward to
ontologise using rules.
        </p>
        <p>Authorization =</p>
        <p>" AWS " + " " + AWSAccessKeyId + ":" + Signature ;
Signature =</p>
        <p>Base64 ( HMAC - SHA1 (UTF -8 - Encoding - Of ( StringToSign )));
StringToSign =</p>
        <p>HTTP - Verb + "\ n" +
Content - MD5 + "\ n" +
Content - Type + "\ n" +
Date + "\ n" +
CanonicalizedAmzHeaders +</p>
        <p>CanonicalizedResource ;
CanonicalizedResource =
[ "/" + Bucket ] +
&lt;HTTP - Request -URI , from the protocol name up to the query string &gt;
Having seen our overall approach, and our target web service, we are now in a
position to present the ontologies: one each for the IRS broker, HTTP protocol,
cryptographic operations, and the Amazon service description itself. In OCML,
namespaced symbols are written #_namespace:localName. A symbol #_localName
without a namespace refers to the current namespace. In this paper, the namespace
pre xes map to ontologies as follows:</p>
        <p>irs ! irs The broker's grounding interface
rfc2616 ! rfc2616 HTTP protocol
crypt ! cryptography Cryptography
store ! storage Amazon S3 services</p>
      </sec>
      <sec id="sec-4-7">
        <title>The IRS ontology contains the lift and lower rules. Our HTTP ontology is</title>
        <p>
          named rfc2616, for the IETF standard for HTTP/1.1 [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. We modelled only a
subset of HTTP, but it is su cient to perform invocations described here. A
message is represented by the class #_rfc2616:http-message. A message has a
method, URL, and set of headers. To provide security, the S3 services require
the cryptographic signing of the HTTP requests using the HMAC-SHA1 hash.
Figure 2 shows the cryptography ontology developed to handle this. The SHA1
hash function is represented by the hmac1-sha1 function.
( def-function # _hmac-sha1 ( data key )
" Return the SHA-1 digest of DATA , using KEY ."
: lisp-fun # '% hmac-sha1 )
( defun % hmac-sha1 ( data key )
" Compute an RFC 2104 HMAC-SHA1 digest on DATA using KEY ."
( let (( hmac ( ironclad : make-hmac
        </p>
        <p>( ironclad : ascii-string-to-byte-array key ) : sha1 )))
( ironclad : update-hmac hmac ( ironclad : ascii-string-to-byte-array data ))
( ironclad : hmac-digest hmac )))
( def-function # _encode-base64 ( octets )
" Encode OCTETS into base 64 ASCII ."
: lisp-fun #' base64 : usb8-array-to-base64-string )</p>
        <p>Figure 3 shows the key parts of the storage ontology which holds the
description of the S3 service for getting objects from the server. The class
amazon-get-object-service models the web service, where it is characterised by
input and output roles. Those are typed by the ve domain classes which relate
to the S3 concepts of buckets, object keys, access keys, and secret keys, with the
latter two being tied together in an account structure. The description shown
omits several WSMO elements related to choreographies, capabilities and so on
which are not relevant here. Figure 3 contains the lifting and lowering rules. Note
that the lift-for-get-object recovers not just the content of the HTTP message,
but the Content-Type header, too. For S3, this is important because arbitrary
data types can be stored, and S3 records the type speci ed at upload time and
returns when the object is downloaded.</p>
      </sec>
      <sec id="sec-4-8">
        <title>The lowering rule itself is natural and straightforward. It begins with the</title>
        <p>creation of a new frame instance, the ?http-request, and the date and host elds
being set up. The target bucket and key objects are recovered from the service
invocation with the slot-value relation, and are used to create the URL. The
HTTP object's URL and method slots are set appropriately. Finally, the keys are
recovered from the account, and used to sign the request. The signature itself is
controlled by the rule sign-amazon, whose structure parallels that of the grammar
provided in Amazon's documentation as shown in gure 1.
Fig. 3. The get-object service, lower and lift rules, and digital signature function.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Related work</title>
      <sec id="sec-5-1">
        <title>WSDL [8] has been the de facto speci cation means for web services since the</title>
        <p>
          birth of web services. Both OWL-S [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] and WSMO [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] de ne their groundings by
pointing at the WSDL of their targets, but the mapping to the syntactic content
of the messages is something of a grey area. The OWL-S WSDL document [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ]
suggests that OWL-S services should require web services to use an OWL speci c
encoding in their implementation. The semantic annotation extensions for WSDL|
        </p>
      </sec>
      <sec id="sec-5-2">
        <title>WSDL-S and then SA-WSDL (Semantic Annotations for Web Service Description</title>
      </sec>
      <sec id="sec-5-3">
        <title>Language) [3]|make it possible to have WSDL descriptions link to semantic</title>
        <p>
          descriptions in various frameworks. SA-WSDL uses mapping schemas to handle
the lifting and lowering, but again it is XML speci c. The IRS [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] used XPath
expressions to generate OCML relations which performed the lifting and lowering.
        </p>
      </sec>
      <sec id="sec-5-4">
        <title>Another WSMO based broker, the Web Services Execution Environment (WSMX)</title>
        <p>uses service-speci c `adaptors', written in Java, to connect to services.</p>
      </sec>
      <sec id="sec-5-5">
        <title>Although the principle of `lifting and lowering' the XML serialisation is</title>
        <p>well established, it does not address aspects of the HTTP protocol like the</p>
      </sec>
      <sec id="sec-5-6">
        <title>Authorization header. Naturally, XML translation precludes the use of many</title>
        <p>services that do not use XML. Although WSDL and SOAP are products of the</p>
      </sec>
      <sec id="sec-5-7">
        <title>W3C standards, there is signi cant disquiet amongst developers about their</title>
        <p>complexity, interoperability, and their lack of Web nature. Personal experience
has made us skeptical of the quality of WSDL and XSD descriptions, even, or
perhaps especially, machine generated ones. Finally, using an XML mapping
scheme like XSLT forces the ontology engineer to leave the semantic realm to
work on the groundings, and to consider the domain objects in terms of their</p>
      </sec>
      <sec id="sec-5-8">
        <title>XML serialisation.</title>
        <p>In contrast, our groundings unify the lifting and lowering with the management
of the HTTP protocol, and are declarative and wholly within the ontology language,
modulo the small number of operational primitives such as the cryptography
functions. Since there are relatively few data encoding and cryptography schemes|
many orders of magnitude fewer than there will be web services|it makes sense to
embed them in semantic brokers, and make them available to ontology rules. With
these hooks in place, we can encode groundings to a large number of important,
real-world web services in a uni ed, ontology-based manner.
7</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <sec id="sec-6-1">
        <title>Semantic web services are about web services as well as semantics. In this paper,</title>
        <p>we introduced an approach to groundings rooted in ontologies and rules. A set of
ontologies for modelling aspects of web service implementation was introduced,
allowing us to use the ontological language itself to express the grounding,
including the `lifting and lowering' to string serialisations of data structures. We
used these to describe a popular commercial REST web service, Amazon's S3.</p>
      </sec>
      <sec id="sec-6-2">
        <title>We have implemented the ontologies discussed, and used them in the IRS. They</title>
        <p>currently support the automated transfer of le resources in the LHDL project
(http://lhdl.open.ac.uk:8080/irs).</p>
        <p>We see this approach as a useful low-level implementation platform: it is
su ciently powerful to connect to any kind of HTTP service, and yet is fully
accessible from the ontological level. It is general enough, for instance, that
it could support multi-part MIME messages. We intend to add ontologies for
reasoning directly with XML, XML-RPC, and SOAP messages, which currently
must be accessed by direct manipulation of the XML string representation. On
top of this, we expect to layer generic rules which will handle any services which
have WSDL or WADL de nitions, as well as semantic approaches like SA-WSDL.</p>
      </sec>
      <sec id="sec-6-3">
        <title>Acknowledgements This research was funded by the Living Human Digital</title>
      </sec>
      <sec id="sec-6-4">
        <title>Library project, under European Union grant FP6-026932. We thank Barry</title>
      </sec>
      <sec id="sec-6-5">
        <title>Norton and Marta Sabou for helpful discussions.</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Martin</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Burstein</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hobbs</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lassila</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McDermott</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McIlraith</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Narayanan</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paolucci</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Payne</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sirin</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Srinivasan</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sycara</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <string-name>
            <surname>OWL-S: Semantic Markup for Web Services</surname>
          </string-name>
          (
          <year>2004</year>
          )
          <article-title>W3C Member Submission 22 November 2004</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Lausen</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polleres</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roman</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Web Service Modeling Ontology (WSMO)</article-title>
          .
          <source>Technical report, World Wide Web Consortium (W3C)</source>
          (
          <year>June 2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Farrell</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lausen</surname>
          </string-name>
          , H.:
          <article-title>Semantic Annotations for WSDL and XML Schema</article-title>
          . W3C Recommendation,
          <source>World Wide Web Consortium (W3C)</source>
          (
          <year>August 2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Fielding</surname>
          </string-name>
          , R.T.:
          <article-title>Architectural Styles and the Design of Network-based Software Architectures</article-title>
          .
          <source>PhD thesis</source>
          , University of California, Irvine (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Cabral</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Domingue</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Galizia</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gugliotta</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Norton</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tanasescu</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pedrinaci</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>IRS-III: A Broker for Semantic Web Services based Applications</article-title>
          .
          <source>In: Proceedings of the 5th International Semantic Web Conference (ISWC2006)</source>
          , Athens, Georgia, USA (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Box</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ehnebuske</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kakivaya</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Layman</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mendelsohn</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nielsen</surname>
            ,
            <given-names>H.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Thatte</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Winer</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Simple Object Access Protocol (SOAP) 1.1</article-title>
          .
          <source>Technical report, World Wide Web Consortium (W3C) (May</source>
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Fielding</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gettys</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mogul</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Frystyk</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Masinter</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leach</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , BernersLee, T.:
          <article-title>Hypertext Transfer Protocol | HTTP/1.1</article-title>
          .
          <string-name>
            <surname>Technical</surname>
            <given-names>report</given-names>
          </string-name>
          , Internet Engineering Task Force (
          <year>June 1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Christensen</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Curbera</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meredith</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weerawarana</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <source>Web Services Description Language (WSDL) 1</source>
          .1 (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Winer</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>XML-RPC Speci cation</article-title>
          (
          <year>June 1999</year>
          ) Online at http://www.xmlrpc.com/spec.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Richardson</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruby</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          : RESTful
          <string-name>
            <given-names>Web</given-names>
            <surname>Services. O'Reilly Media</surname>
          </string-name>
          ,
          <string-name>
            <surname>Inc</surname>
          </string-name>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Fensel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lausen</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polleres</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>de Bruijn</surname>
          </string-name>
          , J.,
          <string-name>
            <surname>Stollberg</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roman</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Domingue</surname>
          </string-name>
          , J.:
          <source>Enabling Semantic Web Services</source>
          . Springer (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Motta</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          :
          <article-title>An Overview of the OCML Modelling Language</article-title>
          .
          <source>In: 8 th Workshop on Knowledge Engineering: Methods &amp; Languages KEML 98</source>
          .
          <article-title>(</article-title>
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Viceconti</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Taddei</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Van Sint Jan</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leardini</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clapworthy</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Galizia</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Quadrani</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Towards the multiscale modelling of musculoskeletal system</article-title>
          . (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Hadley</surname>
            ,
            <given-names>M.J.: Web</given-names>
          </string-name>
          <string-name>
            <surname>Application Description Language (WADL)</surname>
          </string-name>
          (
          <year>November 2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Martin</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Burstein</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lassila</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paolucci</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Payne</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McIlraith</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Describing Web Services using OWL-S and WSDL</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>