<!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>RDF-REST: A Unifying Framework for Web APIs and Linked Data</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Pierre-Antoine Champin</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>LIRIS??</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Universite Claude Bernard Lyon</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>pierre-antoine.champin@liris.cnrs.fr</string-name>
        </contrib>
      </contrib-group>
      <pub-date>
        <year>2013</year>
      </pub-date>
      <fpage>10</fpage>
      <lpage>19</lpage>
      <abstract>
        <p>There has been a lot of e orts to bridge the gap between web APIs and linked data. The RDF-REST framework, that we developed in the process of building a RESTful service using linked data, is part of them. This paper presents the approach adopted in the RDF-REST framework, and show its bene ts in the design and use of web APIs. One of these bene ts is an easy integration of existing APIs with each other and with linked data.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        In the recent years, the web has moved from mostly human-oriented content
to machine-readable content. This machine-readable web is not homogeneous,
though. On the one hand, we have web APIs that allow machines to interact
with each other, but are using more or less ad-hoc data structures. On the other
hand, we have RDF based linked data [
        <xref ref-type="bibr" rid="ref4 ref6">4,6</xref>
        ], allowing to link and merge data
from di erent sources, but mostly read-only.
      </p>
      <p>
        There has been a lot of e orts to bridge the gap between these two kinds of
approaches. Proposals have been made to interpret as linked data the data
structures used by existing web APIs, like the Atom format [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] or the various dialects
built atop JSON [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Other e orts aim at enhancing linked data with read-write
capabilities [
        <xref ref-type="bibr" rid="ref13 ref16 ref5 ref7 ref9">5,7,9,13,16</xref>
        ]. In particular, the Linked Data Platform (LDP)
working group1 of the W3C aims at specifying a standard way to interact with linked
data, following the principles of the REST architectural style [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>This papers reports on a similar e ort2 to build a RESTful service based
on linked data. While initially targeting a speci c application, we ended up
implementing a generic framework that can be used for both integrating existing
web APIs and designing a various range of RESTful services. One of our goals
is also to ease the implementation of linked-data-based services complying with
the future LDP speci cation. We focus here on the general approach deployed
in our framework, which we believe can be bene cial even beyond our own
implementation.</p>
      <p>The rest of this paper is structured as follows. In Section 2, we describe
the motivations and the rationale governing the approach adopted in the
RDFREST framework. In Section 3 we describe the RDF-REST framework itself.
In Section 4, we demonstrate the bene ts of RDF-REST compared to other
frameworks. Finally, we point out some current limitations and discuss future
evolutions of the framework in Section 5.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Motivation and rationale</title>
      <p>As stated in the introduction, RDF-REST was rst developed as the foundation
for a speci c application. Our motivations for using RDF and REST are,
however, totally independent of the application domain, hence our further choice to
make RDF-REST into a reusable framework.
2.1</p>
      <sec id="sec-2-1">
        <title>On using REST</title>
        <p>
          REST (REpresentational State Transfer) is the architectural style of the web [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ].
It is expressed as a set of design constraints that web-based services should
satisfy in order to preserve the good properties of the web (scalability, generality of
interfaces, independent evolution of components, and transparency for
intermediary components). It seems therefore only natural to comply with REST when
designing a web-based service; however, many such services are only partially
doing so (so called REST-like services), and sometimes not at all [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ].
        </p>
        <p>This is due to the fact that REST design is di erent from classical
objectoriented (OO) design that most developers were taught, which makes it harder
to achieve (for those developers). First, in REST, resources3 are never handled
directly, but only through representations. Second, REST imposes that all
resources have a uniform interface. Behaviour di erentiation is not achieved by
exposing di erent interfaces as in OO design, but by exchanging di erent kinds
of representations through the uniform interface.</p>
        <p>In RDF-REST, we decided to keep the best of both worlds by splitting
resource implementations in two parts: a core and a wrapper. Cores implement the
behaviour of each resource, and they all expose the same interface (later called
the RDF-REST interface) closely mapped to the HTTP verbs (see Section 3.1
for more details). Wrappers implement application-speci c interfaces atop the
RDF-REST interface.</p>
        <p>In a way, this wrapper-core dichotomy is very similar to the client-server
dichotomy of the web: it encourages loose coupling and separation of concerns
between the two parts of the implementation. While it may rst seem overly
complex or costly to enforce this dichotomy inside an application, we will show
in Section 4 that the bene ts outweigh this apparent problem.
3 In REST, processing units are called resources. While this notion bears some
similarity to that of object, we stick to the term resource to emphasise the di erence
with classical OO design. We will only use the term object when referring to the
implementation.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>On using RDF</title>
        <p>According to the REST principles, the resource's uniform interface is
exclusively used to exchange representations. As stated above, the diversity of those
representations is the key to di erentiating resources and their behaviours. We
therefore need a data model that is exible enough to support those multiple
kinds of representations.</p>
        <p>
          RDF [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] is such a data model. Being speci cally designed for the web, it
uses URIs to name things, which is consistent with the REST and linked data
principles. It is based on graphs, that allow to represent a wide range of data
structures. Finally, it o ers a mechanism for typing resources, where types are
themselves identi ed by URIs.
        </p>
        <p>
          Of course, not all web APIs use RDF; in fact, most of them do not, but
rather use XML or JSON. We do not consider this as a problem, as RDF is
exible enough to represent the underlying data models of those languages.
Indeed, there are general approaches for converting speci c formats into RDF,
applicable to any XML-based [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] or JSON-based formats [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], or to varieties of
other formats [
          <xref ref-type="bibr" rid="ref11 ref8">8,11</xref>
          ]. The speci c semantics of each format is preserved by using
a dedicated set of URIs (vocabulary) in the translated graph. That way, RDF
can unify di erent formats under a common data model, and still convey the
di erentiation between representations that is central to REST.
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>The RDF-REST framework</title>
      <p>We can now present the RDF-REST framework, rst by describing the
RDFREST interface that is the cornerstone of the framework; then by describing the
framework architecture, which is structured around four factories. Finally, we
brie y explain how developers are expected to use the framework.
3.1</p>
      <sec id="sec-3-1">
        <title>The RDF-REST interface</title>
        <p>The RDF-REST interface is the uniform interface of cores. It comprises ve
methods.
get state : This method returns a read-only RDF graph representing the state
of the resource. This graph will aim at staying up-to-date with respect to the
resource. While this is straightforward for local implementations, this can be
costly when the graph is retrieved from a remote source (checking before each
access that the remote resource has not changed). Hence client implementation
generally use caching mechanisms, and the graph may become stale temporarily.
force state refresh : This method forces the graph returned by get state to
update itself, bypassing any caching mechanism that may be used by the
implementation. This method can be used whenever freshness is more important than
performance.
get edit context : This method returns a modi able RDF graph representing the
current state of the resource, and having a commit method. The commit method
is meant to be invoked after the graph has been modi ed, in order to apply those
modi cations to the resource.4
post graph : This method expects an RDF graph as its input, and makes the
resource process this graph in a way that depends on the resource itself, and on
the content of the posted graph. A typical processing (but not the only one) is
to create a new resource, of which the posted graph is a representation.
delete : This method deletes the resource from the service. After it has been
successfully invoked, the corresponding core is supposed to be immediately
discarded, as the resource it represented does not exist anymore.</p>
        <p>
          Those methods clearly relate to the main verbs of the HTTP protocol [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
Method get state corresponds to GET (more precisely, each update of the
returned graph corresponds to one GET). Method force state refresh corresponds
to a GET with headers for cache bypassing. Method get edit context (more
precisely method commit of the returned graph) corresponds to PUT. Methods
post graph and delete unsurprisingly correspond to POST and DELETE,
respectively.
3.2
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Framework architecture</title>
        <p>The general architecture of the framework is described in Figure 1. It is composed
of four factories. Each factory relies on a registry containing a number of classes,
and where developers can add their own classes if needed.</p>
        <p>The core factory will provide a core, implementing the RDF-REST interface
described above, based on the URI of the corresponding resource. More precisely,
this factory will recognise from the URI if the resource is managed by the service
itself, or is a remote resource. In the former case, a local object implementing
the behaviour of that resource will be returned. In the latter case, it will return
a client object accessing the remote resource. By default, the corresponding
registry only contains an HTTP client implementation.</p>
        <p>The wrapper factory will provide a wrapper, based on the RDF type of
the corresponding resource. The wrapper implements an application-speci c
interface atop the RDF-REST interface. Cores returned by the core factory will
automatically use this factory and try to wrap themselves in an appropriate
wrapper, if any is available for their RDF type. By default, the corresponding
registry does not contain any class.</p>
        <p>Whenever it is necessary to exchange representations of the resources with
the outside, we need serialisers and parsers to transform RDF graphs to and
4 Our implementation is actually slightly di erent, as it uses a more idiomatic pattern
in Python (with statement). However, it is conceptually equivalent to the description
made in this paper.
from various formats. This is especially important for client cores, that must
communicate those representations with the remote resource.</p>
        <p>The serialiser factory will provide a serialiser from RDF to a given format,
based on the media type of that format, and the RDF type of the resource whose
representation must be serialised. The parser factory will provide a parser from
a given format to RDF, based on the media type of that format, and the URI
from which the representation was retrieved (or to which it must be sent). By
default, the serialiser and parser registries contain serialiser and parsers for the
most common concrete syntaxes of RDF (Turtle, RDF/XML, N-Triple).</p>
        <p>Finally, the RDF-REST framework contains a generic HTTP server. It uses
the core factory to access the resources, and re ects HTTP queries to the
corresponding method of the RDF-REST interface. It uses the serialiser and parser
factories to transform between HTTP entities and RDF graphs.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>Using the framework</title>
        <p>Developing a service or application (either web-based or standard) with
RDFREST consists in providing a number of classes (wrappers, cores, serialisers or
parsers) and registering them to the corresponding factory, associating them
with the appropriate key(s).</p>
        <p>For each kind of resource in the application, developers will typically provide
a core implementation of the resource behaviour, and a wrapper implementation
exposing an application-speci c interface. They must also decide on an RDF
vocabulary that the core implementation will use to describe the resource's state.
In particular, this vocabulary will include an RDF type to identify this kind of
resource, that will be used to register the wrapper.</p>
        <p>Whenever they want to support legacy formats (rather than the RDF
syntaxes already supported by RDF-REST) they can also register new serialisers
and parsers. Parsers are associated to a speci c media type, and possibly to a URI
pattern; for example, one may provide a JSON parser specialised in the JSON
returned by http://example.com/dummy/webapp. Likewise, serialisers are
associated to a speci c media type, and possibly to an RDF type, as some resources
may have a specialised way of serialising into a given format.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Bene ts</title>
      <p>In this section, we discuss the bene ts of the architecture presented above, from
di erent perspectives. This discussion is based on comparison with other
frameworks, as well as on experience in using RDF-REST in developing an application5
and a few other toy prototypes6.
4.1</p>
      <sec id="sec-4-1">
        <title>For developing RESTful services</title>
        <p>RDF-REST proposes an approach quite di erent from the one usually proposed
by other frameworks, such as JAX-RS,7 Ruby on rails8 or Django.9 Those
differences are illustrated in Figure 2.</p>
        <p>Impedance mismatch. In most frameworks, the service is designed as any other
OO application, with application objects exposing application-speci c (AS)
interfaces. Those speci c objects are then annotated or wrapped in order to specify
how they will be exposed through HTTP. As stated in Section 2, this often leads
to sub-optimal REST design in the service. Furthermore, the client application
(when designed in the OO paradigm) has to do the opposite work, converting
HTTP-logic back into AS logic.</p>
        <p>On the other hand, in RDF-REST, the uniform interface of cores makes
them naturally exposed on HTTP, and encourages strict REST design from the
start. Of course, implementing the resource's behaviour may bene t from the AS
interface (which is represented in Figure 2 by the local implementations invoking
themselves). But this is also possible in RDF-REST thanks to the wrappers, that
can be used on the server side as they rely on the RDF-REST interface.
5 kTBS: http://liris.cnrs.fr/sbt-dev/ktbs
6 see for example http://github.com/pchampin/semwiki
7 http://jax-rs-spec.java.net/
8 http://rubyonrails.org/
9 http://djangoproject.com/</p>
        <p>Fig. 2. Comparison of the RDF-REST approach with other frameworks
Gray classes are generic classes; white classes are application-speci c classes.
Code reuse, modularity and consistency. As stated above, client code using the
service may rely on a AS client library10 exposing the service resources as
classical objects, i.e. with the same interface as the one used on the server side.
Those two di erent implementations of the same interface will usually contain
very similar code, but can not easily be factorised, as they rely on very di erent
basis (HTTP client library vs. local implementation).</p>
        <p>In RDF-REST, however, the same wrapper (see Figure 2 (b)) can be used
both on the client-side and the server-side, by virtue of the RDF-REST API,
which abstracts away the local/remote nature of the underlying core. This
reduces the amount of code to write and code redundancy.</p>
        <p>One may be concerned by the fact that server-side implementation of the
core should not treat alike input that comes from the outside and input that
comes from itself through the wrapper. The former can not in general be trusted
and must be checked before processing, while for the later, this checking is not
necessary and might harm performances. To solve this problem, we added an
optional trust parameter to methods get edit context, post graph and delete of
the RDF-REST interface. When this parameter is set to true, the implementation
may bypass some checks. The wrapper can therefore set this parameter when
it invokes those RDF-REST methods with input that it deems trustable. The
generic HTTP server, on the other hand, will always set it to false, so that
content from the outside is never trusted.
10 \Application speci c" should not be read here as \service speci c", since RESTful
services must not require specialized clients. \Application" here refers to a class of
compatible services, embodied by a common media type that those services and their
clients would use.
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>For integrating web APIs</title>
        <p>RDF-REST is not limited to developing new services, but can also be useful as
a unifying framework for using existing ones through web APIs. In that case,
developers will not have to provide core implementations, as they will rely on
the HTTP client core. However, they will still have to provide wrappers
corresponding to the accessed resources, as well as serialisers and parsers to support
the formats used by these APIs.</p>
        <p>Consider an application integrating several photo sharing services, each one
using a di erent format for representing its resources. Developers would have
to provide a dedicated serialiser and parser for each service. However, as the
resource types exposed by those services are essentially the same (e.g. Photo,
User, PhotoCollection...), all of those serialisers and parses could use the same
RDF vocabulary. It follows that only one wrapper per resource type would have
to be provided, making those various services homogeneous from the point of
view of the application.</p>
        <p>Here we see how the unifying expressiveness of RDF, combined with the use
of a common vocabulary, eases the integration of heterogeneous web APIs.
Furthermore, a wealth of reusable RDF vocabularies for various application domains
is already available on the web of linked data.
4.3</p>
      </sec>
      <sec id="sec-4-3">
        <title>From a linked data perspective</title>
        <p>Read-only linked data on the web can be seen as very simple RESTful services.
As such, linked data can be integrated using RDF-REST as easily as any other
service (actually more easily, as the serialisers and parsers are already provided
by the framework). Obviously, this allows seamless integration of classical web
APIs with linked data.</p>
        <p>Conversely, as RDF-REST uses RDF as the underlying data model for all
representations, and as it automatically supports common RDF syntaxes, any
service developed with RDF-REST exposes its data as linked data (although
strictly speaking, it only quali es as linked data if it links to URIs outside the
service).</p>
        <p>
          Finally, as stated in the introduction, we are planning to make RDF-REST
evolve consistently with the future Linked Data Platform (LDP) W3C
recommendation [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ]. Out goal is to make LPD compliance the default behaviour of
RDF-REST based services (although full compliance will probably also depend
on how developers implement their cores).
5
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Limitations and future work</title>
      <p>Below, we discuss the current limitations of the RDF-REST approach and
implementation, as well as planned evolutions.</p>
      <p>A rst limitation of our approach is that it relies on the assumption that
all resources can be represented in RDF. While this is in theory true, it is
impractical for some resources, such as sounds, images or videos. Note that RDF
representation can still be used to re ect the meta-data of those resources, but
the actual data is better represented in dedicated media type. We are considering
extending the RDF-REST interface to account for this use case.</p>
      <p>Another limitation of the approach is that it assumes that web-based services
are developed from scratch. Indeed, if an existing application already exists, with
existing objects exposing application-speci c interfaces, and the RDF-REST
interface needs to be implemented on top of those objects, we have an architecture
similar to the one represented on Figure 2 (a), and we lose the bene ts described
in Section 4.1. However, as this is the architecture used by popular frameworks,
the situation is not so bad, especially considering that RDF-REST still o ers
interoperability with linked data.</p>
      <p>There is also a limit to our implementation that we wish to address: it is
implemented in Python, which makes it less prone to adoption than if it was in
a more widespread language such as Java. We do believe that the approach is
valuable in itself, and so that other implementations in di erent languages are
not only possible, but also desirable.</p>
      <p>
        Another language-related plan for the future is to use JavaScript translators
(such as GWT11 for Java of Pyjs12 for Python) in order to allow the client part
of Figure 2 (b) to be dynamically embedded in a web browser (what Fielding
calls \code on demand" [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]). This would comply even more closely to the REST
principles, making existing clients (web browsers) dynamically able to cope with
new media types exposed by RDF-REST-based services. Note that the Drumkit
framework13 has a similar approach, but mandates the use of JavaScript on the
server side.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper, we have presented RDF-REST, a framework based on REST
and linked data principles. It eases the development of RESTful services that
consume and produce linked data, but also makes it possible to integrate existing
heterogeneous web APIs with each other, and with linked data sources.</p>
      <p>We have implemented this framework and used it to develop RESTful
services, but we purposefully described it at a rather abstract level. Indeed, our
experience with the framework showed that the approach it proposes,
regardless of a particular implementation or programming language, can lead to better
RESTful design of web APIs, and to a convergence of the web of services with
the web of linked data.</p>
      <p>Acknowledgements This work is supported by the French National Research
Agency (ANR) through the KolFlow project (code: ANR-10-CONTINT-025),
part of the CONTINT research program.
11 https://developers.google.com/web-toolkit/
12 http://pyjs.org/
13 http://drumkitjs.com/</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>D.</given-names>
            <surname>Connolly</surname>
          </string-name>
          .
          <article-title>Gleaning resource descriptions from dialects of languages (GRDDL). W3C recommendation, W3C</article-title>
          , Sept.
          <year>2007</year>
          . &lt;http://www.w3.org/TR/grddl/&gt;.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <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. Hypertext transfer protocol {
          <source>HTTP/1.1. RFC 2616</source>
          ,
          <string-name>
            <surname>IETF</surname>
          </string-name>
          ,
          <year>June 1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>R. T.</given-names>
            <surname>Fielding</surname>
          </string-name>
          .
          <article-title>Architectural styles and the design of network-based software architectures</article-title>
          .
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>T.</given-names>
            <surname>Heath</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Bizer</surname>
          </string-name>
          .
          <article-title>Linked Data: Evolving the Web into a Global Data Space (1st edition), volume 1 of Synthesis Lectures on the Semantic Web: Theory and Technology</article-title>
          . Morgan &amp; Claypool,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>K.</given-names>
            <surname>Kjernsmo</surname>
          </string-name>
          .
          <article-title>The necessity of hypermedia RDF and an approach to achieve it</article-title>
          .
          <source>In Proceedings of the First Linked APIs workshop at the Ninth Extended Semantic Web Conference</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>G.</given-names>
            <surname>Klyne</surname>
          </string-name>
          and
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Caroll</surname>
          </string-name>
          .
          <article-title>Resource description framework (RDF): concepts and abstract syntax</article-title>
          .
          <source>W3C recommendation, W3C</source>
          , Feb.
          <year>2004</year>
          . &lt;http://www.w3.org/TR/rdf-concepts/&gt;.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>R.</given-names>
            <surname>Krummenacher</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Norton</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Marte</surname>
          </string-name>
          .
          <article-title>Towards linked open services and processes</article-title>
          .
          <source>In Future Internet-FIS</source>
          <year>2010</year>
          , page
          <volume>68</volume>
          {
          <fpage>77</fpage>
          . Springer,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. H. Muhleisen and
          <string-name>
            <given-names>C.</given-names>
            <surname>Bizer</surname>
          </string-name>
          .
          <article-title>Web data commons { extracting structured data from two large web corpora</article-title>
          .
          <source>In 5th Linked Data on the Web workshop (LDOW)</source>
          , Lyon, France,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>C.</given-names>
            <surname>Ogbuji</surname>
          </string-name>
          .
          <source>SPARQL 1</source>
          .
          <article-title>1 graph store HTTP protocol</article-title>
          .
          <source>W3C recommendation, W3C</source>
          , Apr.
          <year>2013</year>
          . &lt;http://www.w3.org/TR/sparql11-http
          <string-name>
            <surname>-</surname>
          </string-name>
          rdf
          <source>-update/&gt;.</source>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>D.</given-names>
            <surname>Renzel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Schlebusch</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Klamma</surname>
          </string-name>
          .
          <article-title>Today's top \RESTful" services and why they are not RESTful</article-title>
          .
          <source>In Web Information Systems Engineering-WISE</source>
          <year>2012</year>
          , page
          <volume>354</volume>
          {
          <fpage>367</fpage>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>M. V.</given-names>
            <surname>Sande</surname>
          </string-name>
          , L. De Vocht,
          <string-name>
            <given-names>D. Van</given-names>
            <surname>Deursen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Mannens</surname>
          </string-name>
          , and R. Van de Walle.
          <article-title>Lightweight transformation of tabular open data to RDF. In I-SEMANTICS 2012 Posters &amp; Demonstrations Track</article-title>
          , Graz, Austria, Sept.
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>S.</given-names>
            <surname>Speicher</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Arwe</surname>
          </string-name>
          .
          <article-title>Linked data platform 1.0. W3C working draft</article-title>
          ,
          <source>W3C</source>
          , Mar.
          <year>2013</year>
          . &lt;http://www.w3.org/TR/ldp/&gt; Accessed on 2013-
          <volume>04</volume>
          -15.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>S.</given-names>
            <surname>Speiser</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Harth</surname>
          </string-name>
          .
          <article-title>Taking the LIDS o data silos</article-title>
          .
          <source>In Proceedings of the 6th International Conference on Semantic Systems, I-SEMANTICS '10, page 44:1{44:4</source>
          , New York, NY, USA,
          <year>2010</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>M. Sporny</surname>
            , G. Kellogg, and
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Lanthaler</surname>
          </string-name>
          .
          <article-title>JSON-LD 1.0 { a JSON-based serialization for linked data. W3C last call working draft, W3C</article-title>
          , Apr.
          <year>2013</year>
          . &lt;http://www.w3.org/TR/json-ld-syntax/&gt; Accessed on 2013-
          <volume>04</volume>
          -15.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>H.</given-names>
            <surname>Story</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Ayers</surname>
          </string-name>
          .
          <article-title>AtomOwl vocabulary speci cation</article-title>
          . http://bbl sh.net/work/atom-owl/2006-06-06/AtomOwl.html,
          <year>June 2006</year>
          . Accessed on 2013-
          <volume>03</volume>
          -11.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>R.</given-names>
            <surname>Verborgh</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Steiner</surname>
          </string-name>
          , R. Van de Walle, and
          <string-name>
            <given-names>J. Gabarro</given-names>
            <surname>Valles</surname>
          </string-name>
          .
          <article-title>The missing links{How the description format restdesc applies the linked data vision to connect hypermedia apis</article-title>
          .
          <source>In Proceedings of the First Linked APIs workshop at the Ninth Extended Semantic Web Conference</source>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>