<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Grounding semantic web services with rules</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Dave</forename><surname>Lambert</surname></persName>
							<email>d.j.lambert@open.ac.uk</email>
							<affiliation key="aff0">
								<orgName type="department">Knowledge Media Institute</orgName>
								<orgName type="institution">The Open University</orgName>
								<address>
									<settlement>Milton Keynes</settlement>
									<country key="GB">United Kingdom</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">John</forename><surname>Domingue</surname></persName>
							<email>j.b.domingue@open.ac.uk</email>
							<affiliation key="aff0">
								<orgName type="department">Knowledge Media Institute</orgName>
								<orgName type="institution">The Open University</orgName>
								<address>
									<settlement>Milton Keynes</settlement>
									<country key="GB">United Kingdom</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Grounding semantic web services with rules</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">853EBCFB37A782C0BA3EA37DF40DA678</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T00:14+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Semantic web services achieve effects 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 define 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></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><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 <ref type="bibr" target="#b0">[1]</ref><ref type="bibr" target="#b1">[2]</ref><ref type="bibr" target="#b2">[3]</ref> 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 <ref type="bibr" target="#b3">[4]</ref> (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><p>We present an alternative which models the target service's input and output (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 RESTful version of Amazon's commercial web-storage service, where Amazon's authentication process precludes its description by WSDL or WADL (section 4). We develop the ontologies for describing the HTTP protocol itself, cryptography, 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 <ref type="bibr" target="#b4">[5]</ref>. We compare our scheme to current XML-centric approaches to groundings (section 6).</p><p>Semantic web services rely on normal web services to source and manipulate information and to effect 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><p>The triumvirate of XML, SOAP, and WSDL <ref type="bibr" target="#b5">[6]</ref><ref type="bibr" target="#b6">[7]</ref><ref type="bibr" target="#b7">[8]</ref> is the basis for the W3C's 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 offered using lighter weight alternatives. The genuinely simple protocol which inspired SOAP has re-emerged in its own right as XML-RPC <ref type="bibr" target="#b8">[9]</ref>. Simultaneously, REST <ref type="bibr" target="#b3">[4]</ref> has gained considerable mind-share: according to Amazon's web services evangelist Jeff Barr, around 80% of invocations of Amazon's services are done through the REST interface<ref type="foot" target="#foot_0">1</ref> . Yahoo! does not provide a SOAP interface at all, and has no intention of adding one<ref type="foot" target="#foot_1">2</ref> . Flickr, a popular photo-sharing website, provides its API in all three web service flavours: SOAP, XML-RPC, and RESTful. The SOAP interface does not have a WSDL description, and none of the the third-party bindings The XML-RPC equivalent is very similar, albeit with no SOAPAction header, 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 <ref type="bibr" target="#b3">[4]</ref>, 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 specified URI. In practise, this means that many operations are performed simply by encoding an operation in a URI and having the client request it:</p><p>GET http :// world -weather . org / forecast / italy / rome /20081216 HTTP /1.1</p><p>Note that the URL can be an arbitrarily complex amalgam of service's 'name', and some of the service parameters-country and city names, and forecast date. The returned content need not be XML: in this case, it might be plain text description of the weather, or a graphic illustration of the weather over Rome. The correct use of HTTP headers such as Content-Type and Date become essential. With RESTful and XML-RPC services, WSDL and XML schema descriptions are rarely, if ever, furnished by the service provider.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Approach</head><p>Given that SOAP is no longer the sole deployment route for web services, we 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 SOAP and XML-RPC in the same framework. This led to the following aims:</p><p>1. Target HTTP, not SOAP. 2. Be agnostic about content type: HTTP carries XML, but also images, sound, and other data formats. 3. Do not require third-party cooperation.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Stay within the ontology language.</head><p>Principle 1 enables us to support the three web services approaches today, and gives us some degree of future-proofing. 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 specific 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:</p><p>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. 3. A rule from the service's ontology is called to create an HTTP message object based on the service invocation object, with its various slots' values set to reflect the parameters from the the service invocation object. 4. The HTTP message is passed to the broker, which then turns the HTTP object directly into a request on the network.</p><p>The process happens in reverse when the service replies. The stage addressed 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. Concretely, the two rule heads are:</p><p>( lower ? service-type ? service-instance ? http-request ) ( lift ? service-type ? http-response ? service-instance )</p><p>The first 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 fulfilment 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><p>We implemented this approach in the Internet Reasoning Service (IRS) <ref type="bibr" target="#b4">[5]</ref>. The IRS is based on the Web Service Modelling Ontology (WSMO) <ref type="bibr" target="#b10">[11]</ref>, and uses OCML <ref type="bibr" target="#b11">[12]</ref> for knowledge representation and reasoning. OCML is a frame language with procedural attachment, and is comparable in expressiveness to the Ontolingua and Loom languages. In our implementation, we use OCML's ability to define the operational semantics of ontological components directly in Lisp.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Amazon's Simple Storage Service</head><p>Before looking at the ontologies in detail, we examine our motivating task: the targeting of a real-world web service in the context of our work in the Living Human Digital Library project (LHDL) <ref type="bibr" target="#b12">[13]</ref>. LHDL is building a library of data 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 XML-RPC web services, and computational services accessed through SOAP. We 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 files commonly range in size from hundreds of megabytes to several gigabytes. It would be beneficial if we could outsource the storage and transfer of this data, and several major web services providers have recently begun offering 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 files in file 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 identified 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: Note the Authorization header. The content of this field is specified by Amazon to be the pair of the user's access key, and a digital signature (using the HMAC-SHA1 hash) of the HTTP request itself, created with the user's secret key. Figure <ref type="figure" target="#fig_1">1</ref> 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. Note that, because the signed string includes the date, the authorisation value 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 <ref type="bibr" target="#b7">[8]</ref> or WADL <ref type="bibr" target="#b13">[14]</ref>, but straightforward to ontologise using rules. REST service (From Amazon web services documentation.)</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Ontologies</head><p>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 prefixes 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><p>The IRS ontology contains the lift and lower rules. Our HTTP ontology is named rfc2616, for the IETF standard for HTTP/1.1 <ref type="bibr" target="#b6">[7]</ref>. We modelled only a subset of HTTP, but it is sufficient 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 <ref type="figure">2</ref> shows the cryptography ontology developed to handle this. The SHA1 hash function is represented by the hmac1-sha1 function.</p><p>( def-function # _hmac-sha1 ( data key ) " Return the SHA-1 digest of DATA , using KEY . " : lisp-fun # '% hmac-sha1 )</p><p>( defun % hmac-sha1 ( data key ) " Compute an RFC 2104 HMAC-SHA1 digest on DATA using KEY . " ( let (( hmac ( ironclad : make-hmac ( ironclad : a s c i i -s t r i n g -t o -b y t e -a r r a y key ) : sha1 ))) ( ironclad : update-hmac hmac ( ironclad : a s c i i -s t r i n g -t o -b y t e -a r r a y data )) ( ironclad : hmac-digest hmac ))) ( def-function # _encode -base64 ( octets )</p><p>" Encode OCTETS into base 64 ASCII . " : lisp-fun # ' base64 : u s b 8 -a r r a y -t o -b a s e 6 4 -s t r i n g ) Fig. <ref type="figure">2</ref>. Cryptography ontology fragment. Here we use OCML's ability to define, within the ontology itself, entry points to functionality implemented in the host language, Lisp. This is only only a convenience: our approach requires only that the broker can somehow operationalise the low-level elements of the ontology. The encode-base64 function actually lives in the MIME ontology.</p><p>Figure <ref type="figure">3</ref> 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 five 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 <ref type="figure">3</ref> 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 specified at upload time and returns when the object is downloaded.</p><p>The lowering rule itself is natural and straightforward. It begins with the creation of a new frame instance, the ?http-request, and the date and host fields 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 figure <ref type="figure" target="#fig_1">1</ref>.</p><p>WSDL <ref type="bibr" target="#b7">[8]</ref> has been the de facto specification means for web services since the birth of web services. Both OWL-S <ref type="bibr" target="#b0">[1]</ref> and WSMO <ref type="bibr" target="#b10">[11]</ref> define 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 <ref type="bibr" target="#b14">[15]</ref> suggests that OWL-S services should require web services to use an OWL specific encoding in their implementation. The semantic annotation extensions for WSDL-WSDL-S and then SA-WSDL (Semantic Annotations for Web Service Description Language) <ref type="bibr" target="#b2">[3]</ref>-make it possible to have WSDL descriptions link to semantic descriptions in various frameworks. SA-WSDL uses mapping schemas to handle the lifting and lowering, but again it is XML specific. The IRS <ref type="bibr" target="#b4">[5]</ref> used XPath expressions to generate OCML relations which performed the lifting and lowering. Another WSMO based broker, the Web Services Execution Environment (WSMX) uses service-specific 'adaptors', written in Java, to connect to services.</p><p>Although the principle of 'lifting and lowering' the XML serialisation is well established, it does not address aspects of the HTTP protocol like the Authorization header. Naturally, XML translation precludes the use of many services that do not use XML. Although WSDL and SOAP are products of the W3C standards, there is significant disquiet amongst developers about their 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 XML serialisation.</p><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 schemesmany 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 unified, ontology-based manner.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">Conclusion</head><p>Semantic web services are about web services as well as semantics. In this paper, 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. We have implemented the ontologies discussed, and used them in the IRS. They currently support the automated transfer of file 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 sufficiently 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 definitions, as well as semantic approaches like SA-WSDL.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>PUT / lhdl / hello HTTP /1.1 Host : s3 . amazonaws . com Authorization : AWS 5 E B 1 K 7 D R 1 3 J H N F 9 2 J V 2 3 : CwuLd ze7uX4LL P + KGMe /5 htHb20 = Date : Fri , 26 Sep 2008 21:33:39 GMT Content -Type : text / plain Content -Length : 13 Hello , world !</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 1 .</head><label>1</label><figDesc>Fig.1. A grammar for the HTTP Authorization header for invoking an Amazon S3 REST service (From Amazon web services documentation.)</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>3 for the most popular languages target the SOAP variant: Before considering how to connect the semantic invocation with the actual service, we should first look at how the various service types are invoked. In SOAP, the connection proceeds at two levels: the HTTP connection, and the XML message. The HTTP request must include the method (always POST), along with the 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 request 4 . This leads to the conception of groundings as simply translations at the XML level from some ontological representation to an XML serialisation to be passed to the service, where the URL is a fixed string, identified indirectly through the WSDL. The URL and SOAPAction values are dealt with at the HTTP level.</figDesc><table><row><cell cols="4">POST http: // www . world -weather . org / soap</cell><cell></cell><cell></cell></row><row><cell cols="2">SOAPAction: WeatherReport</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="2">&lt;? xml version = " 1.0 " ? &gt;</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="6">&lt; soap:Envelope xmlns:soap = " http: // schemas . xmlsoap . org / soap / envelope / "</cell></row><row><cell cols="5">xmlns:xsd = " http: // www . w3 . org /2001/ XMLSchema "</cell><cell></cell></row><row><cell cols="5">xmlns:w = " http: // www . weather . ex / soap / " &gt;</cell><cell></cell></row><row><cell>&lt; soap:Body &gt;</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="2">&lt; w : G e t W e a t h e r R e p o r t &gt;</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="5">&lt; w:Country &gt; Italy &lt;/ w:Country &gt; &lt; w:City &gt; Rome &lt;/ w:City &gt;</cell><cell></cell></row><row><cell cols="2">&lt;/ w : G e t W e a t h e r R e p o r t &gt;</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>&lt;/ soap:Body &gt;</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>&lt;/ soap:Envelope &gt;</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="3">Flickr Binding Language API</cell><cell></cell><cell></cell><cell></cell></row><row><cell>Flickcurl</cell><cell>C</cell><cell>REST</cell><cell></cell><cell></cell><cell></cell></row><row><cell>flickrj</cell><cell>Java</cell><cell>REST</cell><cell></cell><cell>PHP</cell><cell>REST</cell></row><row><cell>jickr</cell><cell>Java</cell><cell>REST</cell><cell>flickr.py</cell><cell cols="2">Python REST</cell></row><row><cell>FlickrNet</cell><cell>.NET</cell><cell>REST</cell><cell>flickr-ruby</cell><cell>Ruby</cell><cell>REST</cell></row><row><cell>Flickr-API</cell><cell>Perl</cell><cell></cell><cell>rflickr</cell><cell>Ruby</cell><cell>XML-RPC</cell></row><row><cell cols="4">2.1 Invoking syntactic web services</cell><cell></cell><cell></cell></row></table><note>RESTFlickr Binding Language API Flickr-Upload Perl REST phpFlickr</note></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">http://www.jeff-barr.com/?p=96</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">http://developer.yahoo.com/faq/#soap</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_2">http://www.flickr.com/services/api/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_3">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<ref type="bibr" target="#b9">[10]</ref>.</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Acknowledgements This research was funded by the Living Human Digital Library project, under European Union grant FP6-026932. We thank Barry Norton and Marta Sabou for helpful discussions.</p></div>
			</div>

			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>( def-class a m a z o n -g e t -o b j e c t -s e r v i c e ( web-service ) (( has-i nput-rol e : value has-account : value has-bucket : value has-key : value has-data ) ( ha s-o ut pu t-r ol e : value has-content : value h a s -c o n t e n t -t y p e ) ( has-account : type # _ a ma zo n -a cc ou n t ) ( has-bucket : type # _amazo n-bucke t ) ( has-key : type # _ a m a z o n -o b j e c t -k e y ) ( has-content : type octets ) ( h a s -c o n t e n t -t y p e : type string ))) ( def-rule # _sign-amazon " Sign the ? HTTP-REQUEST in the manner of Amazon S3 . " ((# _sign-amazon ? http-request ? canonical-url ? access-key ? secret-key ) if (= ? signature (# _ c o m p u t e -s i g n a t u r e ? http-request ? canonical-url ? secret-key )) (# _has-value ? access-key ? a c c e s s -k e y -s t r i n g ) (= ? s i g n a t u r e -h e a d e r ( make-string " AWS ~A :~A " ? a c c e s s -k e y -s t r i n g ? signature )) (# _rfc2616 : set-header ? http-request " Authorization " ? s i g n a t u re -h e a d e r ))) ( def-function # _ c o m p u t e -s i g n a t u r e (? http-request ? canonical-url ? secret-key ) " Return the cryptographic signature for ? HTTP-REQUEST for Amazon S3 . " : constraint ( and (# _http-request ? http-request ) (# _ a m a z o n -s e c r e t -k e y ? secret-key )) : body ( the ? signature ( and (# _has-value ? secret-key ? secret-string ) (# _rfc2616 : has-method ? http-request ? method ) (# _rfc2616 : get-header ? http-request " Date " ? date-header ) (# _rfc2616 : field-value ? date-header ? date ) (# _rfc2616 : get-header ? http-request " Content-Type " ? c o n t e n t -t y p e -h e a d e r ) (# _rfc2616 : field-value ? c o n t e n t -t y p e -h e a d e r ? content-type ) (= ? to-sign ( make-string " ~A ~%~%~A ~%~A ~%~A " ? method ? content-type ? date ? canonical-url )) (= ? signature (# _crypt : encode-base64 (# _crypt : hmac-sha1 ? to-sign ? secret-string ))))))</p><p>Fig. <ref type="figure">3</ref>. The get-object service, lower and lift rules, and digital signature function.</p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">OWL-S: Semantic Markup for Web Services</title>
		<author>
			<persName><forename type="first">D</forename><surname>Martin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Burstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Hobbs</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Lassila</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Mcdermott</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Mcilraith</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Narayanan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Paolucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Parsia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Payne</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Sirin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Srinivasan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Sycara</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">W3C Member Submission</title>
		<imprint>
			<date type="published" when="2004-11-22">2004. 22 November 2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">Web Service Modeling Ontology (WSMO)</title>
		<author>
			<persName><forename type="first">H</forename><surname>Lausen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Polleres</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Roman</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2005-06">June 2005</date>
			<publisher>World Wide Web Consortium</publisher>
			<pubPlace>W3C</pubPlace>
		</imprint>
	</monogr>
	<note type="report_type">Technical report</note>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Semantic Annotations for WSDL and XML Schema</title>
		<author>
			<persName><forename type="first">J</forename><surname>Farrell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Lausen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">W3C Recommendation</title>
				<meeting><address><addrLine>W3C</addrLine></address></meeting>
		<imprint>
			<publisher>World Wide Web Consortium</publisher>
			<date type="published" when="2007-08">August 2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m" type="main">Architectural Styles and the Design of Network-based Software Architectures</title>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">T</forename><surname>Fielding</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2000">2000</date>
		</imprint>
		<respStmt>
			<orgName>University of California, Irvine</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">PhD thesis</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">IRS-III: A Broker for Semantic Web Services based Applications</title>
		<author>
			<persName><forename type="first">L</forename><surname>Cabral</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Domingue</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Galizia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Gugliotta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Norton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Tanasescu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Pedrinaci</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 5th International Semantic Web Conference (ISWC2006)</title>
				<meeting>the 5th International Semantic Web Conference (ISWC2006)<address><addrLine>Athens, Georgia, USA</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<author>
			<persName><forename type="first">D</forename><surname>Box</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Ehnebuske</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kakivaya</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Layman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Mendelsohn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">F</forename><surname>Nielsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Thatte</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Winer</surname></persName>
		</author>
		<title level="m">Simple Object Access Protocol (SOAP) 1.1</title>
				<meeting><address><addrLine>W3C</addrLine></address></meeting>
		<imprint>
			<publisher>World Wide Web Consortium</publisher>
			<date type="published" when="2000-05">May 2000</date>
		</imprint>
	</monogr>
	<note type="report_type">Technical report</note>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<author>
			<persName><forename type="first">R</forename><surname>Fielding</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Gettys</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Mogul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Frystyk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Masinter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Leach</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Berners-Lee</surname></persName>
		</author>
		<title level="m">Hypertext Transfer Protocol -HTTP/1.1</title>
				<imprint>
			<date type="published" when="1999-06">June 1999</date>
		</imprint>
		<respStmt>
			<orgName>Internet Engineering Task Force</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Technical report</note>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><forename type="first">E</forename><surname>Christensen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Curbera</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Meredith</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Weerawarana</surname></persName>
		</author>
		<title level="m">Web Services Description Language (WSDL)</title>
				<imprint>
			<date type="published" when="2001">2001</date>
			<biblScope unit="volume">1</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<title level="m" type="main">XML-RPC Specification</title>
		<author>
			<persName><forename type="first">D</forename><surname>Winer</surname></persName>
		</author>
		<ptr target="http://www.xmlrpc.com/spec" />
		<imprint>
			<date type="published" when="1999-06">June 1999</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title level="m" type="main">RESTful Web Services</title>
		<author>
			<persName><forename type="first">L</forename><surname>Richardson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Ruby</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
			<publisher>O&apos;Reilly Media, Inc</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">Enabling Semantic Web Services</title>
		<author>
			<persName><forename type="first">D</forename><surname>Fensel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Lausen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Polleres</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>De Bruijn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Stollberg</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Roman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Domingue</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2006">2006</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">An Overview of the OCML Modelling Language</title>
		<author>
			<persName><forename type="first">E</forename><surname>Motta</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">8 th Workshop on Knowledge Engineering: Methods &amp; Languages KEML 98</title>
				<imprint>
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">Towards the multiscale modelling of musculoskeletal system</title>
		<author>
			<persName><forename type="first">M</forename><surname>Viceconti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Taddei</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Van Sint Jan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Leardini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Clapworthy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Galizia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Quadrani</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">Web Application Description Language (WADL)</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">J</forename><surname>Hadley</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2006-11">November 2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">Describing Web Services using OWL-S and WSDL</title>
		<author>
			<persName><forename type="first">D</forename><surname>Martin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Burstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Lassila</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Paolucci</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Payne</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Mcilraith</surname></persName>
		</author>
		<imprint/>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
