<!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>Using RDF Metadata To Enable Access Control on the Social Semantic Web</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>James Hollenbach</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Joe Presbrey</string-name>
          <email>presbrey@mit.edu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Tim Berners-Lee</string-name>
          <email>timbl@w3.org</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Decentralized Information Group, MIT CSAIL</institution>
          ,
          <addr-line>32 Vassar Street, Cambridge, MA, USA, 02139</addr-line>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The structure of the Semantic Web gives users the power to share and collaboratively generate decentralized linked data. In many cases, though, collaboration requires some form of authentication and authorization to ensure the security and integrity of the data being generated. Traditional authorization systems that rely on centralized databases are insu cient in this scenario, since they rely on the existence of a central authority that is not available on the Semantic Web. In this paper, we present a scalable system that allows for decentralized user authentication and authorization. The system described supports per-document access control via an RDF metadata le containing an access control list (ACL). A simple interface allows authorized users to view and edit the RDF ACL directly in a Web browser. The system allows users to e ciently manage read and write access to linked data without a centralized authority, enabling a collaborative authoring environment suited to the Semantic Web.</p>
      </abstract>
      <kwd-group>
        <kwd>Access Control</kwd>
        <kwd>Semantic Web</kwd>
        <kwd>FOAF+SSL</kwd>
        <kwd>RDF</kwd>
        <kwd>Web Access Control</kwd>
        <kwd>Social Web</kwd>
        <kwd>Metadata Management</kwd>
        <kwd>Collaborative Authoring</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>In the Semantic Web community there is a growing interest in collaborative
authoring of linked data. In most collaborative environments, though, there must
be an adequate authorization system in place to restrict which users can view
and edit certain data. When designing such a system for use on the Semantic
Web, the following important factors must be taken into account:
Decentralized accounts. On the Semantic Web, data is stored on many
machines in a decentralized manner. Requiring users to have separate accounts for
each server that they edit data on would quickly become cumbersome; instead,
having a single user identity would be ideal. Additionally, such a sign-on system
should not be located on a centralized server. Instead, users should be able to
maintain their own accounts on remote servers.</p>
    </sec>
    <sec id="sec-2">
      <title>Potential for rule-based authorization. One of the greatest potential bene</title>
      <p>
        ts of the Semantic Web is the power to reason over data provided by multiple
sources. A good system should allow administrators to create rules for
authorization, such as \Only my friends and friends of my friends can access my data".
Authentication speed. Even though a decentralized authentication
mechanism will by design require that information be pulled down from a remote
server, the speed of the authentication itself should still be at least comparable
to traditional authentication mechanisms. To achieve this, the system should
ideally only need to make one request to a remote server in order to complete
authentication. Following this initial authentication, session caching should be
used to prevent repeated requests to remote servers, making repeated
authentication steps e ectively identical in speed to traditional authentication methods.
Ease of maintenance. The system should allow authorized users to intuitively
add and remove access for other users. Since the access control system is intended
for data shared on the Semantic Web, any ACL should also be editable from a
Web browser. This could potentially be accomplished using protocols such as
WebDAV [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] or SPARQL/Update [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>The system we have implemented allows for decentralized accounts, fast
authentication, and easy maintenance of ACL metadata. Support for rule-based
authorization is not currently included in favor of a simpler ACL-based
implementation, but we will show that support for such reasoning could be added.
The resulting system allows users to collaboratively edit linked data stored on
the Web server.</p>
      <p>The remainder of the paper discusses our experiences in implementing and
assessing our system. In Section 2, we brie y introduce the prior work that our
system is based on. In Section 3, we describe the back-end system that allows for
decentralized authentication and ACL-based authorization. Section 4 describes
the interface for viewing and editing access control les. Finally, Sections 5, 6,
and 7 discuss the performance of our implementation and potential future work
that would expand and improve on the present system.
2</p>
      <sec id="sec-2-1">
        <title>Background</title>
        <p>In this section, we brie y discuss the prior work related to our system and how
that work a ected our design.
2.1</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>RDF-based Access Control</title>
      <p>
        This is not the rst attempt at creating an RDF-based ACL system. Since 2002,
the World Wide Web Consortium (W3C) has used an RDF-based ACL system
[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] to control access to les on its servers. The W3C ACL system has proven
very useful for managing access to W3C les, but it has a few limitations that
we aim to improve on. First, though the actual rules granting access to a le are
written in RDF, authentication and authorization are still handled by a central
database. Therefore, multiple entities trying to use the W3C ACL system would
either need to share or mirror the same database for authentication. Additionally,
user information for the W3C ACL system does not necessarily identify the user
with a URI. As a result, user information in the W3C ACL database cannot
easily be shared with external entities without some prior knowledge of W3C
users and groups.
      </p>
      <p>Despite this, the W3C ACL system provides a strong base for developing a
similar system for use on the wider Semantic Web. The major di erence between
the W3C ACL system and our system is the prominence of linked data and
standardized protocols. By moving all user and group data onto the Semantic
Web and using a common login mechanism, we allow for access rules to be shared
more readily between di erent organizations.
2.2</p>
    </sec>
    <sec id="sec-4">
      <title>Collaborative Authoring</title>
      <p>We identi ed two potential options for allowing collaborative authoring of les
in our system: WebDAV and SPARQL/Update. Both have distinct advantages
and disadvantages. As far as support for linked data, SPARQL/Update is the
clear choice: it supports insertion and deletion of small amounts of data from
the target graph. WebDAV, on the other hand, is not explicitly intended for
authoring linked data documents. Instead, when performing a WebDAV PUT,
the entire document must be rewritten to the server. If there were no other
limiting factors, SPARQL/Update would be the obvious choice.</p>
      <p>
        However, due to our desire to produce a usable Apache [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] module, we had to
rely on what currently exists. As of the writing of this paper, there is no Apache
module that supports SPARQL/Update. However, WebDAV is available in the
Apache module mod dav, guaranteeing widespread support. For this reason, our
current implementation uses WebDAV rather than SPARQL/Update to handle
updates to the triple store and ACL metadata. In Section 6, we discuss how the
system could easily be modi ed to instead use SPARQL/Update when such a
module becomes available.
2.3
      </p>
    </sec>
    <sec id="sec-5">
      <title>Decentralized Authentication</title>
      <p>
        There exist two potential methods for performing decentralized authentication:
OpenID [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and FOAF+SSL [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. While OpenID is a more established protocol,
FOAF+SSL has a major advantage in that it links directly to a user's FOAF [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]
le. The information in the user's FOAF pro le (or whatever other information
is stored at the URI) could potentially be used in rule-based authentication.
OpenID, on the other hand, simply provides a decentralized ID that does not
necessarily have any linked data associated with it.
      </p>
      <p>Brie y, the FOAF+SSL protocol works as follows: a user's public encryption
key is stored in both a certi cate and a remote RDF le stored on a Web server.
Additionally, the certi cate is created with the URI for the location of the remote
RDF le stored in the certi cate's Subject Alternative Name eld. When a
user sends a FOAF+SSL certi cate to a server, the server identi es the remote
URI, pulls down the public key from that URI, and compares it with the public
key in the user's certi cate. If the keys match, the user is authenticated as
the entity associated with the (public key,remote URI) pair described in the
certi cate. The server can then decide whether or not to authorize a user based
on a set of rules{in our case, a simple access control list. By using self-signed
certi cates, FOAF+SSL provides a trust-based user network that does not rely
on any central authority, which by design works perfectly in a Semantic Web
environment.
3</p>
      <sec id="sec-5-1">
        <title>Server Implementation</title>
        <p>
          In this section, we describe the server-side implementation of our access
control system. The server is implemented as two Apache modules: an authentication
module (mod authn webid) and an authorization module (mod authz webid).
The general ow of the authentication and authorization process is depicted in
Figure 1.
The authentication module implements the FOAF+SSL protocol to determine if
the public keys in the user's certi cate and FOAF le match. Authentication via
this module is enabled in the server's Apache con guration with the AuthType
WebID Apache directive. To perform authentication, the module checks for a
URI in the Subject Alternative Name eld of the certi cate. Next, the certi
cate's signature is calculated using Apache's mod ssl [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] module. If this process
completes successfully, the user's remote URI is dereferenced to see if it
contains matching certi cate data using the Redland RDF library [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. Finally, the
SPARQL [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] query in Figure 2 is run. The query searches for all instances of a
public key ?key and its associated agent ?agent. If the query returns a result
SELECT ?mod_hex WHERE {
?key rdf:type rsa:RSAPublicKey.
?key rsa:public_exponent ?exp.
?key rsa:modulus ?mod.
?key cert:identity ?agent.
?exp cert:decimal CERT_DECIMAL.
        </p>
        <p>?mod cert:hex ?mod_hex.
}
that matches the key and agent provided in the user's certi cate, the module
authenticates the user as acting on behalf of the agent and returns control back
to Apache.
3.2</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Authorization</title>
      <p>
        The authorization module makes use of an N3 [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] metadata le that contains
an access control list (ACL). Metadata is currently stored on a per-directory
basis, though the system could easily be modi ed to store ACL metadata on
a per-document or even per-resource basis (see Section 6). The server directs
clients to the ACL for a given le using the link rel=meta HTTP header [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
Figure 3 shows a simple ACL used by the system. The ACL ontology used is
the Web Access Control Ontology [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. For a given rule, acl:accessTo de nes
a resource that access is being granted to, acl:agent and acl:agentClass
de ne an agent or agent class (such as \any foaf:Person") as being granted
access, acl:mode de nes the set of modes that are granted to the agent or agent
class, and acl:defaultForNew optionally de nes the default access rules for new
documents in a directory.
      </p>
      <p>The three types of access that can be granted are Read, Write, and Control.
Each type of access is bound to a speci c set of HTTP methods as described
in Table 1. The Read and Write modes control access to normal les stored
on the server. Control is essentially a special form of Write access: having
Control access to a le allows a user to edit the ACL metadata for that le. As
with the authentication module, authorization is determined by running a set
of SPARQL queries to determine if the user is granted access either as an agent
or as a member of an agent class. If a user attempts to use an HTTP method
that they are not permitted to use, they receive a 403 response from the server.
For example, using the ACL le from Figure 3, if a user authenticated with
the URI http://www.example.com/foaf#me tried to delete foaf.rdf with an
HTTP DELETE request, the server would see that only presbrey has Write
access and respond with 403 Forbidden.
@prefix acl: &lt;http://www.w3.org/ns/auth/acl#&gt; .
[]
a acl:Authorization ;
acl:defaultForNew &lt;.&gt; ;
acl:accessTo &lt;foaf.rdf&gt; ;
acl:agent &lt;http://presbrey.mit.edu/foaf#presbrey&gt; ;
acl:mode acl:Control, acl:Read, acl:Write .
a acl:Authorization ;
acl:accessTo &lt;foaf.rdf&gt; ;
acl:agentClass &lt;http://xmlns.com/foaf/0.1/Agent&gt; ;
acl:mode acl:Read.
To demonstrate the functionality of the ACL editing system, we have developed
a simple Firefox extension that allows users to edit the ACL for the document
they are currently viewing. The extension is a sidebar that can be loaded
alongside the current browser window. The ACL metadata for a given document is
found by looking for the aforementioned link rel=meta HTTP header in the
server's response for a given document. The metadata URI in the link header is
dereferenced, and the ACL is displayed to the user as a list of agents and agent
classes (See Figure 4).</p>
      <p>Authorized users are able to modify the ACL directly in this interface by
manipulating a series of checkboxes. New agents can be added, and current agents
can be removed. When a user attempts to submit new ACL data, the interface
serializes the state of the interface into a new ACL le. This modi ed le is then
submitted to the server via a WebDAV PUT. Concurrent ACL modi cations are
prevented optimistically using the HTTP ETag header. Successful changes to the
ACL take e ect immediately.
Though the FOAF+SSL authentication mechanism requires that the server make
a request for a remote resource in order to perform authentication, it would be
ideal for our system to nevertheless achieve performance comparable with
traditional authentication mechanisms. To that end, we have performed performance
tests in order to compare our authentication mechanism with traditional Apache
authentication methods. The tests were run using ApacheBench, included with
Apache, on an Apache instance running in single-process mode on a Quad-Core
AMD Opteron 2350 2GHz Xen VM guest with 512MB of RAM. ApacheBench
performed 1000 serial requests for a null document in each con guration. The
four test con gurations used tested the time needed for Apache to complete
authentication requests depending on whether or not a certi cate is presented and
whether or not our authentication module is enabled. Table 2 shows the average
performance of each con guration over the course of ve test runs.
Apache Test Con guration Request Time (ms/request)
without client certi cate, without mod authn webid 4.2
without client certi cate, with mod authn webid 4.43
with WebID client certi cate, without mod authn webid 4.63
with WebID client certi cate, with mod authn webid 11.31</p>
      <p>Table 2. Benchmark results for mod authn webid.</p>
      <p>The results clearly show that the module takes a few milliseconds to request
the remote resource containing a user's certi cate information. In this case, the
request time is relatively short, since the two machines were sitting quite close to
each other. With the addition of a WebID cache, though, the need for repeated
requests for remote resources has been removed{a cached version of the agent's
data is used instead for the duration of a session. In many cases, the inital
request will not have very high latency, as in this example. But even in those
cases where an initial request takes some time, subsequent requests will run at
a speed comparable to normal certi cate-based authentication, since the remote
request is not repeated.
6</p>
      <sec id="sec-6-1">
        <title>Future Work</title>
        <p>With our rst WebID- and Linked Data-based authorization system, we have
created a highly functional codebase allowing for collaborative editing of
Semantic Web documents. In this section, we describe a list of potential future
enhancements that would greatly increase the ease with which users could edit
data.
6.1</p>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Packaging With SPARQL/Update-Ready Systems</title>
      <p>
        Our current implementation uses WebDAV to allow for collaborative editing.
However, this is by no means a requirement of the system. Over time, more
systems are coming into existence that support SPARQL/Update for editing
documents in an Apache environment, such as ARC2 [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and the Tabulator Data
Wiki [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. These systems could be layered above our existing framework, with
our framework limiting the HTTP methods a client can use (and, by extension,
the sort of operations that a user can perform on a triple store). By switching
over to SPARQL/Update, the size of updates sent by clients will be much smaller
and have a lower potential for error, since clients will no longer be required to
parse and serialize an entire document just to insert a single triple into the ACL
data or triple store.
6.2
      </p>
    </sec>
    <sec id="sec-8">
      <title>Per-Resource Access Control</title>
      <p>While we currently provide access control at the document level, RDF is often
stored as multiple resources described in a single at le or in a triple store
that does not even have a notion of speci c documents. The current system
is not able to restrict access on a per-resource basis unless resources are each
stored in their own le. Such a system would require more complex analysis of an
incoming update or query to determine exactly which resources are being read
and written. While this feature is not included at present, it is worth noting that
the ACL system used here could be modi ed to accommodate access de ned on a
per-resource basis. The rst step in implementing such a system would probably
be to have an engine capable of analyzing SPARQL/Update queries to decide
which resources they a ect.</p>
      <p>Of course, one of the most di cult parts of adding per-resource access control
is identifying exactly what it means for a read or write operation to \a ect" a
resource. A simple engine could designate a read or write operation as pertaining
to a certain resource if the operation traverses or modi es an arc coming out of
that resource. In this case, adding a \has child" property to a parent would be
considered a write modi cation to the parent, but not its new child. Some
examples, however, can have greater consequences for a given resource. For example,
if a user has write access to a class de nition C, but is not granted write access
to one of C's subclasses, the user could still greatly alter (or even break) the
semantics of that subclass by simply modifying C. The importance of this issue
will vary between use cases{for someone maintaining an open social network,
the rst method may be more appropriate; but for someone editing ontologies,
maintaining consistency will be key.
6.3</p>
    </sec>
    <sec id="sec-9">
      <title>Rule-based Access Control</title>
      <p>This project uses a very simple form of access control{a simple whitelist
contained in a metadata le. However, some users might want to de ne dynamic
rules like the \friend-of-a-friend" rule described in the introduction. While such
rules are certainly more descriptive than a whitelist, designing an interface that
allows users to quickly modify rules and add new agents as our ACL Editor does
is much more di cult. On the back-end, however, one would simply need to
hook into a rule engine immediately prior to authorizing a user. At this point,
our system exposes a user's URI and the query that the user is trying to run.
This information could easily be plugged into an external reasoner to decide if
the user is permitted to perform a given action or log the user's actions for later
analysis. It should also be noted that using complex rules to regulate access to
resources in a triple store could greatly a ect the speed of the authentication
process, since a proof would need to be constructed instead of searching for the
appropriate triple indicating access.
7</p>
      <sec id="sec-9-1">
        <title>Conclusion</title>
        <p>The system described provides a solid base for future projects implementing
Web Access Control and collaborative authoring of linked data. It provides an
implementation of an RDF-based decentralized authentication protocol, namely
FOAF+SSL. Authentication speeds, keeping in mind the need for an initial
remote request, are comparable with traditional authentication systems. Users
can quickly and easily add access for new agents without having to manually
edit a metadata le.</p>
        <p>That such a system can be implemented on a traditional Web server like
Apache shows that there is potential for widespread adoption of accountable
collaborative editing of linked data. The layout of this system allows for
applications, linked data, and user agent authentication to all be stored on separate
servers maintained by completely independent entities. By plugging services such
as policy-aware query processors and data access logs into our system, one could
create a complete policy-aware system based in an entirely decentralized
environment, realizing the full potential of the Semantic Web.
Acknowledgments Thanks go to the members and students of DIG and the
W3C who provided excellent knowledge and feedback throughout the course of
this project. This work was supported by IARPA Award #FA8750-07-2-0031
and National Science Foundation Cybertrust Grant award CT-M: 0831442.</p>
      </sec>
      <sec id="sec-9-2">
        <title>Appendix: Source Code</title>
        <p>The source code for this project is available at the following locations:
Authentication Module: http://dig.csail.mit.edu/2009/mod_authn_webid/
Authorization Module: http://dig.csail.mit.edu/2009/mod_authz_webid/
ACL Editor: http://dig.csail.mit.edu/2009/aclsidebar/</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. RFC 4918 -
          <article-title>HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)</article-title>
          , http://tools.ietf.org/html/rfc4918
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>SPARQL</given-names>
            <surname>Update</surname>
          </string-name>
          , http://www.w3.org/Submission/SPARQL-Update/
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. W3C ACL System, http://www.w3.org/
          <year>2001</year>
          /04/20-ACLs
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>4. The Apache Software Foundation, http://www.apache.org/</mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Recordon</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reed</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>OpenID 2.0: a platform for user-centric identity management</article-title>
          .
          <source>In: Proceedings of the Second ACM Workshop on Digital Identity Management</source>
          , pp.
          <volume>11</volume>
          {
          <fpage>16</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Story</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harbulot</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jacobi</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jones</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>FOAF+SSL: RESTful Authentication for the Social Web</article-title>
          . In: European Semantic Web Conference, Workshop: SPOT2009. Heraklion,
          <string-name>
            <surname>Greece</surname>
          </string-name>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>FOAF</given-names>
            <surname>Vocabulary</surname>
          </string-name>
          <article-title>Speci cation</article-title>
          , http://xmlns.com/foaf/spec/
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <article-title>8. mod ssl: The Apache Interface to OpenSSL</article-title>
          , http://www.modssl.org/
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Redland</surname>
            <given-names>RDF</given-names>
          </string-name>
          Libraries, http://librdf.org/
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <article-title>SPARQL Query Language for RDF</article-title>
          , http://www.w3.org/TR/rdf-sparql-query/
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Notation3 (N3) A Readable RDF Syntax</surname>
          </string-name>
          , http://www.w3.org/DesignIssues/ Notation3
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <article-title>An Entity Header for Linked Resources</article-title>
          , http://www.w3.org/Protocols/ 9707-link-header.html
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Basic Access Control Ontology</surname>
          </string-name>
          , http://www.w3.org/ns/auth/acl#
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Easy</surname>
            <given-names>RDF</given-names>
          </string-name>
          and
          <article-title>SPARQL for LAMP Systems</article-title>
          , http://arc.semsol.org/
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Berners-Lee</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hollenbach</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lu</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Presbrey</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          , Prud'hommeaux, E., schraefel, mc.:
          <article-title>Tabulator Redux: Browsing and writing linked data</article-title>
          .
          <source>In: WWW</source>
          <year>2008</year>
          ,
          <article-title>Workshop: Linked Data on the Web (LDOW</article-title>
          <year>2008</year>
          )
          <article-title>(</article-title>
          <year>2008</year>
          ).
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>