<!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>Access Control for RDF: Experimental Results</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Giorgos Flouris</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Irini Fundulaki</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Maria Michou</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Grigoris Antoniou</string-name>
          <email>antonioug@ics.forth.gr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Computer Science Department, University of Crete</institution>
          ,
          <country country="GR">Greece</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institute of Computer Science</institution>
          ,
          <addr-line>FORTH</addr-line>
          ,
          <country country="GR">Greece</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>One of the current barriers towards realizing the huge potential of Future Internet is the protection of sensitive information, i.e., the ability to selectively expose (or hide) information to (from) users depending on their access privileges. In this work we discuss the experiments conducted with our repository independent, portable across platforms system that supports ne-grained enforcement of RDF access control.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        We concentrate on ne-grained RDF access control for read-only queries. An
access control permission is used to explicitly grant or deny to/from a given
user the ability to access an RDF triple, or a set of RDF triples, and can be
viewed as a query whose evaluation over an RDF graph results in a set of triples
which are accordingly granted or denied access. Access control permissions are
expressed using SPARQL [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] triple patterns and value constraints, and are of the
form: R = include=exclude (x; p; y) where T P; C with (x; p; y) a triple pattern,
T P a conjunction of triple patterns and C a conjunction of value constraints on
the variables appearing in the triple patterns. Explicit access rights are not set
for all triples in an RDF graph, and permissions are not always unambiguous
(i.e., a triple could be marked as both accessible and inaccessible). To determine
whether such triples should be accessible, we use the notion of access control
policy, which includes a set of positive and a set of negative permissions, as well
as two boolean ags (default semantics and con ict resolution { ds; cs resp.),
which determine whether triples with missing (resp. ambiguous) permissions are
accessible or not. A full description of the formal semantics of access control
permissions and policies can be found in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-2">
      <title>Implementation and Experiments</title>
      <p>Architecture: We implemented a main memory platform which serves as an
additional access control layer on top of an arbitrary RDF repository. Our goal
was for our system to be portable across platforms, so it was designed in a
repository-independent way. The system's architecture is shown in Fig. 1. It is
comprised of the following modules, all implemented in Java: the RDF Dataset
Loader, responsible for loading the complete RDF dataset in the underlying
repositories, the RDF Access Control Policy Manager that loads in memory the
access control policies and the RDF Access Control Enforcement Module, which
translates the access control policies into the appropriate programs that compute
the accessible triples of an RDF dataset and annotates accordingly the data in
the repositories with accessibility information.</p>
      <p>To enforce an access
control policy we produce a
RDF access control query which implements the
policies semantics of the policy and
is expressed in the language
RDPFolAiccycMesasnCaognetrrol policy ERnDfoFrAcecmceesnstCMoondtruolle supported by the underlying
repository. The triples in the
result of the evaluation of this
datRaDsFet RDF Dataset Loader SPARQL Query query on the RDF graph are
SPARQL UpSdaetreql QuerySQL query exactly the accessible triples</p>
      <p>which are then annotated as
RDF triples RDF triples reprreelsaetnitoantailon tsiuocnhs.
cCanoncbeeptrueaplrleys,enatnendotbay</p>
      <p>Jena of RDF triples adding a fourth column to an
A SemantifcoWrJeabvFaramework RDF triple (hence obtaining a
quadruple), denoting whether
the triple is accessible or not;</p>
      <p>
        Fig. 1. System Architecture if several di erent user roles
need to be supported, one column per role should be added. Annotations can
be stored using the named graphs mechanism of RDF repositories [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], or, in the
case of a relational backend, by extending the triple table that stores the RDF
triples with a fourth column.
      </p>
      <p>
        Experiments: Our experiments measured the time required to annotate the
set of RDF triples, using the above methodology, in state-of-the-art RDF
repositories (Sesame [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], Jena [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]) or relational backends (Postgres [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]). We used the
SP2Bench [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] data generator to obtain the input RDF graphs. We implemented
our approach on top of Jena v2.6.2, Sesame v2.3.1 and Postgresql v8.4. For
Jena we tested the SparqlJenaModule and SparqlJenaSDBModule (processing
SPARQL queries) as well as the SPARULModule (processing SPARQL Update
queries) modules. SparqlJenaModule and SPARULModule load the datasets
into main memory whereas the SparqlJenaSDBModule stores the datasets to
a Postgresql database. For Sesame we used the SeRQLModule, which processes
SPARQL [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] and SeRQL [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] queries in memory.
      </p>
      <p>14
12
10
)sce 8
!(
iem 6
T 4
2
0 0,5 1 1,5 2 2,5 3 3,5 4</p>
      <p>Document!size!(MB)
!</p>
      <p>SeRQL
SparqlJena
SparUL
SparqlJenaSDB
!
(b) gp = 2,doc = 4M B</p>
      <p>(c) ps = 80, doc = 4M B</p>
      <p>We measured the time required for the annotation as a function of four
di erent parameters: (i) document size (doc), i.e., the size of the input RDF
graph (size ranging between 500KB-4MB with a 500KB increase); (ii) policy size
(ps), i.e., the number of permissions in the access control policy (for sizes of 10,
20, 40, 80 and 100, with an equal share of positive/negative permissions in each
case); (iii) permission size (gp), i.e., the number of triple patterns and constraints
in the where clause of each access control permission (values considered: 2, 5,
10); and (iv) policy parameters, i.e., the values of the ds; cr parameters of the
input policy (all 4 combinations considered).</p>
      <p>Evaluation: Fig. 2 shows a subset of the results of our experiments: we run each
experiment 5 times, and took the average time. In each graph, the annotation
time is presented as a function of one of the parameters (i)-(iv), for xed values
for the other parameters. We report here on policies with \deny" as default
semantics (ds) and con ict resolution policy (cr) because it is the most common
one. The results show that our approach scales along the considered parameters.
All the platforms that we ran our experiments on demonstrated a linear behavior
as document, policy sizes and permission complexity increased (except the Jena
SPARUL and SPARQL Modules).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Jena A Semantic Web</surname>
          </string-name>
          <article-title>Framework for Java</article-title>
          . http://jena.sourceforge.net/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>2. PostgreSQL. http://www.postgresql.org/.</mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. Sesame:
          <article-title>RDF Schema Querying and Storage</article-title>
          . http://www.openrdf.org/.
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>J.</given-names>
            <surname>Broekstra</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Kampman. SeRQL: A Second Generation RDF Query</surname>
          </string-name>
          <article-title>Language</article-title>
          .
          <source>In Workshop on Semantic Web Storage and Retrieval</source>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>J. J.</given-names>
            <surname>Carroll</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Bizer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P. J.</given-names>
            <surname>Hayes</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Stickler</surname>
          </string-name>
          .
          <source>Named Graphs. JWS</source>
          ,
          <volume>3</volume>
          (
          <issue>4</issue>
          ),
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>G.</given-names>
            <surname>Flouris</surname>
          </string-name>
          , I. Fundulaki,
          <string-name>
            <given-names>M.</given-names>
            <surname>Michou</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Antoniou</surname>
          </string-name>
          .
          <article-title>Controlling Access to RDF Graphs</article-title>
          . In FIS,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>E.</given-names>
            <surname>Prud</surname>
          </string-name>
          <article-title>'hommeaux and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Seaborne. SPARQL Query</surname>
          </string-name>
          <article-title>Language for RDF. www</article-title>
          .w3. org/TR/rdf-sparql-query,
          <year>January 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>M.</given-names>
            <surname>Schmidt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Hornung</surname>
          </string-name>
          , G. Lausen, and
          <string-name>
            <given-names>C.</given-names>
            <surname>Pinkel</surname>
          </string-name>
          .
          <article-title>SP2Bench: A SPARQL Performance Benchmark</article-title>
          .
          <source>Technical report, arXiv:0806.4627v1 cs.DB</source>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>