<!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>Accessing Site-Speci c APIs Through Write-Wrappers From The Web of Data</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Digital Enterprise Research Institute</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>NUI Galway</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ireland</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>firstname.lastname}@deri.org</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>Web of Data formats such as linked data, RDFa and microformats are read-only technologies. The issue of updating Web data directly from an RDF-based environment has so far gained limited attention. We present a preliminary report on the idea of \pushing back" modi cations of RDF data to the original source, focusing on the speci c case where data resides behind site-speci c Web APIs.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>Let us take a look at a concrete use case. Sean is browsing the Web of Data
using Tabulator. While sur ng the Web of Data, he nds a bookmark from his
delicious.com account. When Sean rst bookmarked the URI, he assigned a few
general tags. As he has gained more experience in the eld since, he now wants
to update the bookmark at hand (in terms of tags, description, etc.|cf. also
Fig. 1). Sean logs into the delicious.com Web application, locates the bookmark,
performs the desired changes and eventually the RDF representation will be
updated. When reviewing the actions necessary to complete Sean's \update"
task, one may wonder if there are not more e cient means to do so. This is even
more evident if Sean wants to keep his tags synchronised between several Web
2.0 sites, or if he wants to do mass updates to his bookmarks.</p>
      <p>Thus, the key question is: How can data residing behind site-speci c APIs
e ciently be manipulated from an RDF-based environment? In this work, we
focus on the issue of mapping from RDF-based update operations to invocations
of site-speci c API operations. The key challenge is the mismatch between the
RDF model and the local semantics of site-speci c APIs.</p>
      <p>Based on the concept of write-wrappers introduced in Section 2 we elaborate
on design issues in Section 3. Then, in Section 4 we report on an experimental
implementation of a write-wrapper. We review related work in Section 5 and
eventually discuss our ndings in Section 6.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Write-Wrappers for site-speci c APIs</title>
      <p>
        As we have reported in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], read-only RDF wrappers are a common method
to integrate data obtained from site-speci c APIs into the Web of Data. The
approach presented herein is hence based on write-wrappers. The input to a write
wrapper is an operation, such as update, along with some RDF data (see Fig. 2).
The wrapper maps the operation and data to one or more invocations of a
sitespeci c API. Write-wrappers are a high-level update mechanism because they
map a uniform RDF-based interface into di erent heterogenous, and likely not
RDF-based, APIs. Write-wrappers are usually proxies in the REST sense [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>There are di erent alternatives for conveying the input operation and data.
Options include:
{ RESTful HTTP interfaces, which use the four uniform HTTP methods GET,</p>
      <p>POST, PUT, DELETE.
{ XML-RPC interfaces.
{ SPARQL Update4.</p>
      <p>The output-interface of the write wrapper, on the other side, is determined
by the site-speci c API. The write-wrapper needs to handle a variety of cases,
depending on the style of the API (RESTful, XML-RPC, etc.), the o ered
authentication mechanisms, error handling and so forth. However, these cases can
be seen as implementations of the same basic steps. Therefore, it should be
possible to employ a generic mechanism to perform the mapping and API access.</p>
      <p>
        RDF clients can already update triple stores through SPARQL Update [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
In order to allow clients to treat site-speci c APIs and RDF triple stores in the
same manner, we decided to build our update mechanism on SPARQL Update.
We thus introduce the notion of a pushback (Fig. 3). A pushback conceptually
consists of:
1. A SPARQL Update input interface towards the client;
2. A generic mapping mechanism that maps the SPARQL Update requests to
site-speci c API function calls, using site-speci c, parameterized mappings;
      </p>
      <sec id="sec-2-1">
        <title>4 http://www.w3.org/TR/sparql-features/#sparql-update</title>
        <p>3. An output interface that is able to call Web services and pipe results back
to the client.</p>
        <p>As an initial step towards a generic pushback solution, in this paper we
discuss design considerations for the components of a pushback and further discuss
an experimental implementation for a speci c case.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Design Considerations</title>
      <sec id="sec-3-1">
        <title>3.1 Input Interface</title>
        <p>The rst component of a pushback is the SPARQL Update input interface.
SPARQL Update is at time of writing under standardisation, hence a
moving target. Beside this, the SPARQL Update is straight-forward to implement;
an array of existing libraries and platforms, for example, ARC25 (for PHP) or
ARQ/Jena6 (for Java) exist.</p>
        <p>
          Type of Operation. Essentially, we have identi ed two options to encode the
operation in a request from the RDF-based client, that is, the update request
semantics. First, one can use the SPARQL Update operations such as INSERT,
DELETE, etc. to convey the semantics. Second, one can use the RDForms
vocabulary7 over SPARQL Update. The second approach is described in detail
in [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <sec id="sec-3-1-1">
          <title>5 http://arc.semsol.org/</title>
        </sec>
        <sec id="sec-3-1-2">
          <title>6 http://jena.sourceforge.net/</title>
        </sec>
        <sec id="sec-3-1-3">
          <title>7 http://rdfs.org/ns/rdforms</title>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>Generic Mapping Mechanism</title>
        <p>The second module of a pushback, the mapping mechanism for both the data and
operations could take many forms. We have contemplated the following options:
1. Rules expressed in an appropriate dialect of the Rule Interchange Format
(RIF)8,
2. Embedded scripting language fragments that directly invoke the target API,
3. An extension of the Web Application Description Language (WADL)9,
4. The creation of a new declarative mapping language.</p>
        <p>This area is subject to further research, as we are only starting to understand
the requirements and possible limitations of the candidate languages. So far we
have identi ed the following functions that a mapping mechanism must support
in order to be used in a pushback:
1. Map input operations to target function call(s) of the site-speci c API;
2. For each of the target function calls, map input data elements to function
call parameters;
3. Validate the parameter values against the contract of the API (required,
optional, etc.);
4. Declare how users are authenticated to the site-speci c API;
5. Identify whether an API function call has succeeded or failed, and represent
error messages or conditions.</p>
        <p>We will give an example of a simple mapping in the following. Assuming that
the input operation is based on RDForms over SPARQL Update and that the
site-speci c API is an XML-RPC-style one, the 1:1 mapping could look like the
following:
CRUDOperationCreate{
method: POST
call: https://api.del.icio.us/v1/posts/add?
url.key : &amp;url
description.key : &amp;description
extended.key : &amp;extended
tags.key : &amp;tags
dt.key : &amp;dt
replace.key : &amp;replace
shared.key : &amp;shared
}
Parameter Validation Site-speci c API method calls usually encode a
number of parameters. Table 1 illustrates, by example, some parameters
characteristics for the add function call10 of the delicious.com API. Explicitly, the</p>
        <sec id="sec-3-2-1">
          <title>8 http://www.w3.org/2005/rules/wiki</title>
        </sec>
        <sec id="sec-3-2-2">
          <title>9 https://wadl.dev.java.net/wadl20061109.pdf 10 http://delicious.com/help/api#posts_add</title>
          <p>&amp;description parameter, referring to the bookmark's title, is required and
unstructured, whereas the &amp;dt parameter (date stamp of the bookmark) is optional,
but structured because it requires a full ISO860111 date format. These
parameters have to be checked against their characteristics by the pushback. Note that
some parameters are not updatable. The RDForm will not display a eld for
such parameter.</p>
          <p>We note further that every site-speci c API provides potentially di erent
methods of authenticating users and returning error messages. We will discuss
this in greater detail below.</p>
          <p>Authenticating users In the context of Web services, authentication of a
client is performed by a server to determine the identity of the requesting agent.
In order to perform authentication, one needs to know about the identity of
an agent. Site-speci c APIs support di erent authentication schemes, such as
HTTP Basic, Digest, or API keys.</p>
          <p>Error Handling Site-speci c APIs signal errors in very di erent ways. For
example, the delicious.com API only returns &lt;result code='done'&gt; in case
the call was successful and &lt;result code='something went wrong'&gt;
otherwise. The site-speci c mapping must be su ciently expressive to tell these
situations apart.
3.3</p>
        </sec>
      </sec>
      <sec id="sec-3-3">
        <title>Output Interface</title>
        <p>Eventually, the third component, the Web service output interface, poses some
challenges on its own, as it very much depends on the type of Web service.
We have identi ed the following forms, a site-speci c API function call may be
performed:
1. For RESTful APIs, one can use generic libraries and tools such as curl ;
2. Based on a mapping that is rooted in an interpreted language such as PHP,
one can directly execute the scripts, with the data as well as the operations
supplied as parameter;
3. Utilising WADL|WADL provides a machine processable description of
RESTful Web applications and services. Using WADL, the implementation is not
tied to a speci c programming language. There are tools available12 that
generate code automatically out of a WADL description.
11 http://www.cl.cam.ac.uk/~mgk25/iso-time.html
12 http://tomayac.de/rest-describe/latest/RestDescribe.html</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Experimental Implementation</title>
      <p>In this section, we provide a qualitative evaluation of an experimental
implementation of a pushback against a simple API access:
Simple API access The rst implementation is our evaluation base-line. In
this implementation the call to a site-speci c API is done directly through
a basic programming script. The input data, arguments, operation and user
credentials are hard-coded in the application.</p>
      <p>API access from the Web of Data The second implementation accesses a
site-speci c API through a write wrapper. For the sake of completeness, the
input is an RDForm. The data of the RDForm is gleaned into a SPARQL
Update operation. The output is the call to a Web service. The call to a Web
service takes the language speci c script form. Moreover, this
implementation includes form validation, secure on line log in and operation expressed
using only the RDForms vocabulary. This approach uses only the SPARQL
INSERT query.</p>
      <p>Our evaluation purpose is to compare the complexity vs. the performance of
the two approaches. While the second approach is obviously more complex than
the rst one, it is interesting to nd out the di erence between the processing
time for both approaches. First, we will compare the two implementations by
their feature characteristics. Second, we will measure the processing time for the
both implementations for several consecutive accesses to a site-speci c API.</p>
      <p>The second approach includes error handling because it validates the user
given elds' values. Although the authentication transparency su ers in the
second approach, the security risk is minimal compared to the rst approach. Lastly,
none of the two approaches o ers data integrity, that is, transaction support for
concurrent editing operations.</p>
      <p>The chart in Figure 4 shows the performance of the two implementation
approaches. For the evaluation we chose the delicious.com API. Due to the
restriction of \at least one second between queries" required by delicious.com, we
set up a two seconds throttle between requests. The terms \create" and \delete"
refer to the type of the request: \create a bookmark", respectively \delete a
bookmark". We observe that the time grows linearly with the number of
requests performed for both approaches and both types of requests. Moreover, the
create request for the second implementation approach takes twice as much to
process than the create request for the rst approach. The delete request takes
about the same time for both implementations. While the create request encodes
seven elds in the SPARQL request and thus more information to process, the
delete request encodes only one eld for the URL parameter, which leads to the
same processing time for both approaches when the number of requests is low.</p>
      <p>
        The experiment shows that a write-wrapper does not add a lot of overhead
which provides evidence for the feasibility of the overall approach.
Basic Update Mechanisms. Three basic update mechanisms are available in
the Web of Data context, (i) native HTTP methods, (ii) WebDAV, and (iii)
SPARQL Update. The HTTP protocol [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] de nes methods for querying and
managing Web resources (such as GET, POST, DELETE, etc.). The Web Distributed
Authoring and Versioning protocol (WebDAV) [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] extends HTTP with additional
methods for collaborative authoring of resources, like COPY and MOVE. Neither
HTTP methods nor WebDAV are optimal for updating RDF-based data, because
of the coarse granularity of their operation, which work on entire documents. The
W3C SPARQL Working Group is currently standardising update operations to
allow remote manipulation of RDF data13. While it is subject to discussion if the
proposed protocol is RESTful in the sense of the Resource-Oriented Architecture
(ROA) [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], we rely on SPARQL Update as the basis of our update mechanism,
because it allows clients to treat RDF-based back-ends, such as triple stores, and
non-RDF back-ends, such as site-speci c APIs, in a uniform manner.
      </p>
      <p>
        RDF Mappings. Relational-to-RDF (RDB2RDF) mapping approaches [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]
have been widely studied. The problem of mapping SPARQL update operations
to site-speci c API invocations can be seen as a comparable problem, with the
main di erence that not only data has to be mapped, but also operations. This
has serious consequences, as for example one has to pipe back errors or exceptions
to the client, handle concurrent editing, authorization, and authentication.
      </p>
      <p>
        Alternative Update Approaches. The Tabulator data browser
implements an update protocol based on per-triple update [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Dietzold et al present
13 http://www.w3.org/TR/sparql-features/
a method for client-side in-place editing of data embedded as RDFa in a web
page, where a statement-level di is sent back to the server [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Both approaches
are complementary to our work, because the performed client-side updates are,
or can be, expressed as SPARQL Update operations that could be propagated
to site-speci c APIs using pushbacks.
      </p>
      <p>
        Semantic web services. Major work towards connecting web services to
languages such as RDF and OWL has been undertaken in the Semantic Web
Services (SWS) eld. In SWS terminology, the area addressed in our work is
Service Grounding : how to invoke a service given some input that is expressed
in terms of a domain ontology, and how to interpret the results in terms of the
domain ontology. This is typically achieved by referring to a WSDL le plus
lowering and lifting transformations, which map semantic information to and
from the message syntax expected by the service. This approach is standardized
in the SAWSDL [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] W3C Recommendation. XSLT is used as transformation
language, although the possibility of using other languages is noted.
      </p>
      <p>A SAWSDL-annotated WSDL le contains all necessary information for
conguring a write wrapper around the service. But the preferred method of
documenting RESTful APIs is prose text, and WSDL les are rarely provided by
service operators. Setting up a write wrapper thus requires manual authoring of
a WSDL le, an extremely tedious activity even for simple services, especially
when compared to creating a WADL le for the same service. Thus, an
extension of WADL with annotations similar to those in SAWSDL seems like a more
attractive alternative. We also want to further explore alternatives to XSLT for
expressing the mappings, because processing RDF/XML input with XSLT is
awkward, and input and output of RESTful services are often not expressed in
XML.</p>
      <p>
        SA-REST [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] has been proposed as another alternative to SAWSDL
specifically for RESTful services. It works by embedding annotations directly into the
HTML developer documentation of the service. The supported annotations are
kept very simple though, and do not cover details required by the services we
attempted to map, such as authentication, input validation or the recognition of
errors reported by the server.
6
      </p>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>We have argued in this paper that there is a growing need in accessing
sitespeci c APIs from an RDF based environment. We have introduced the concept
of a pushback, a SPARQL Update-based write-wrapper that is able to translate
RDF data into site-speci c API calls. Further, we have elaborated on the design
of the three main components of a pushback, the SPARQL update interface,
the generic mapping mechanism, and the output interface. For each one of them
we have provided an initial design solution and implementation. Moreover, we
have highlighted the limitations of the proposed design. Finally, we have
compared direct access to a site-speci c API and a prototype implementation of our
approach.
In this paper we are not claiming to o er a comprehensive answer to our
initial question how can site-speci c APIs e ciently be accessed from an
RDFbased environment?, but discuss possibilities and limitations, building a basis
for our further research. We have, for example, not yet addressed issues around
concurrent data updates and plan to elaborate as well on transactions to ensure
data integrity. Finally, we plan to have a deeper look into the handling of results
and how to pipe back errors to the client.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgements</title>
      <p>Our work has partly been supported by the European Commission under Grant
No. 217031, FP7/ICT-2007.1.2, project \Domain Driven Design and Mashup
Oriented Development based on Open Source Java Metaframework for
Pragmatic, Reliable and Secure Web Development" (Romulus).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Delicious</surname>
            <given-names>API</given-names>
          </string-name>
          . http://delicious.com/help/api.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>OpenLink</surname>
          </string-name>
          <article-title>'s Data Explorer</article-title>
          . http://linkeddata.uriburner.com/ode/.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>3. Tabulator. http://www.w3.org/2005/ajar/tab.</mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>T.</surname>
          </string-name>
          Berners-Lee.
          <article-title>Linked Data, Design Issues</article-title>
          . http://www.w3.org/DesignIssues/ LinkedData.html.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>T.</given-names>
            <surname>Berners-Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Cyganiak</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Hausenblas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Presbrey</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Seneviratne</surname>
          </string-name>
          , and
          <string-name>
            <given-names>O.</given-names>
            <surname>Ureche</surname>
          </string-name>
          .
          <article-title>On Integration Issues of Site-Speci c APIs into the Web of Data</article-title>
          .
          <source>Intermediate Technical Report, Linked Data Research Centre</source>
          ,
          <year>2009</year>
          . http:// linkeddata.deri.ie/tr/2009-rw-wod.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>T.</given-names>
            <surname>Berners-Lee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hollenbach</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Lu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Presbrey</surname>
          </string-name>
          ,
          <string-name>
            <surname>E.</surname>
          </string-name>
          <article-title>Prud'hommeaux, and mc schraefel. Tabulator Redux: Browsing and Writing Linked Data</article-title>
          .
          <source>In WWW 2008 Workshop: Linked Data on the Web (LDOW2008)</source>
          , Beijing, China,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>S.</given-names>
            <surname>Dietzold</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Hellmann</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Peklo</surname>
          </string-name>
          .
          <article-title>Using JavaScript RDFa Widgets for Model/View Separation inside Read/Write Websites</article-title>
          .
          <source>In Proceedings of the 4th Workshop on Scripting for the Semantic Web</source>
          , Tenerife, Spain,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>L.</given-names>
            <surname>Dusseault</surname>
          </string-name>
          .
          <article-title>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</article-title>
          .
          <source>Request for Comments: 4918</source>
          ,
          <string-name>
            <surname>June</surname>
            <given-names>2007</given-names>
          </string-name>
          , IETF Network Working Group,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>J.</given-names>
            <surname>Farrell</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Lausen</surname>
          </string-name>
          .
          <article-title>Semantic Annotations for WSDL and XML Schema</article-title>
          .
          <source>W3C Recommendation 14 October</source>
          <year>2008</year>
          , W3C Semantic Web Deployment Working Group,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>R.</given-names>
            <surname>Fielding</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gettys</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Mogul</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Frystyk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Masinter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Leach</surname>
          </string-name>
          , and T. BernersLee.
          <source>Hypertext Transfer Protocol { HTTP/1</source>
          .1. Request for Comments:
          <volume>2616</volume>
          ,
          <string-name>
            <surname>June</surname>
            <given-names>1999</given-names>
          </string-name>
          , IETF Network Working Group,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>R.</given-names>
            <surname>Fielding</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Taylor</surname>
          </string-name>
          .
          <article-title>Principled design of the modern Web architecture</article-title>
          .
          <source>ACM Trans. Internet Technol.</source>
          ,
          <volume>2</volume>
          (
          <issue>2</issue>
          ):
          <volume>115</volume>
          {
          <fpage>150</fpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>M.</given-names>
            <surname>Hausenblas</surname>
          </string-name>
          .
          <article-title>Exploiting Linked Data For Building Web Applications</article-title>
          .
          <source>IEEE Internet Computing</source>
          ,
          <volume>13</volume>
          (
          <issue>4</issue>
          ):
          <volume>68</volume>
          {
          <fpage>73</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>M.</given-names>
            <surname>Hausenblas</surname>
          </string-name>
          .
          <article-title>Linked Data Applications</article-title>
          . First Community Draft,
          <source>Linked Data Research Centre</source>
          ,
          <year>2009</year>
          . http://linkeddata.deri.ie/tr/2009-ld2webapp.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>J. Lathem</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          <string-name>
            <surname>Gomadam</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Sheth</surname>
          </string-name>
          .
          <article-title>SA-REST and (S)mashups: Adding Semantics to RESTful Services</article-title>
          .
          <source>In International Conference on Semantic Computing</source>
          ,
          <year>2007</year>
          (ICSC
          <year>2007</year>
          ), pages
          <fpage>469</fpage>
          {
          <fpage>476</fpage>
          . IEEE Press,
          <year>Sept</year>
          .
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. OpenLink.
          <article-title>RDF wrapper for delicious</article-title>
          . http://linkeddata.uriburner.com/.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>A.</given-names>
            <surname>Passant</surname>
          </string-name>
          .
          <article-title>RDF wrapper for Flickr</article-title>
          . http://apassant.net/home/2007/12/ flickrdf/.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>Y.</given-names>
            <surname>Raimond</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Jacobson</surname>
          </string-name>
          .
          <article-title>RDF wrapper for MySpace</article-title>
          . http://dbtune.org/ myspace/.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>L.</given-names>
            <surname>Richardson</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Ruby. RESTful Web Services. O'Reilly Media</surname>
          </string-name>
          , Inc.,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>S.</given-names>
            <surname>Sahoo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Halb</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Hellmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Idehen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Thibodeau</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Auer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Sequeda</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Ezzat</surname>
          </string-name>
          .
          <article-title>A Survey of Current Approaches for Mapping of Relational Databases to RDF</article-title>
          .
          <source>W3C Incubator Group Report January 08</source>
          <year>2009</year>
          , W3C RDB2RDF Incubator Group,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>