<!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>Evaluation of SPARQL Property Paths via Recursive SQL</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Nikolay Yakovets</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Parke Godfrey</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jarek Gryz</string-name>
          <email>jarekg@cse.yorku.ca</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Computer Science and Engineering, York University</institution>
          ,
          <country country="CA">Canada</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Property paths, a part of the proposed SPARQL 1.1 standard, allow for non-trivial navigation in RDF graphs. We investigate the evaluation of SPARQL queries with property paths in a relational RDF store. We propose a translation of SPARQL property paths into recursive SQL and discuss possible optimization strategies. The Semantic Web aims to augment the information stored on the Web today with structured, machine-readable, graph-like metadata via the Resource Description Framework (RDF). Under RDF, resources are uniquely identi ed by Internationalized Resource Identi ers (IRIs), and statements describe relationships between resources in the form of triples (subject, property, object ). Properties name the relationships; e.g., \created by" and \born in". Thus, RDF triples de ne a directed, edge-labeled graph. SPARQL Protocol and RDF Query Language (SPARQL) [1] is a query language for RDF. A SPARQL query consists of a set of variables and a graph pattern used for matching within the RDF graph. In the SPARQL 1.0 standard, graph patterns only allow simple navigation in the RDF graph, by matching nodes over xed-length paths. Under the proposed SPARQL 1.1 standard, the W3C working group has greatly extended the navigational capabilities of SPARQL queries by allowing graph patterns that include regular expressions in the form of property paths, which enable matching of nodes over arbitrary-length paths, and which allow a limited form of negation. We study the evaluation of property paths over a relational RDF store. Since RDF data is stored in a relational database for us, a property path needs to be translated into an SQL query. We de ne a translation strategy which, given a SPARQL property path, generates an equivalent recursive SQL query. We outline our vision of how the resulting SQL can be optimized. We believe this is the rst study of the evaluation of SPARQL property paths in the relational setting.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        SPARQL Property Paths. We use the terminology from [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Consider the
following pairwise disjoint, in nite sets: I (IRIs), B (blank nodes), L (literals)
and V (variables). The proposed SPARQL 1.1 standard [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] de nes a property
path recursively as follows: (1) any a 2 I; (2) given property paths p1 and p2,
p1=p2, p1jp2, ^p1, p1 , p1+ and p1?; and (3) given a1; : : : ; an 2 I, then !a1, !^a1,
!(a1j : : : jan), !(^a1j : : : j^an) and !(a1j : : : jaj j^aj+1j : : : j^an). Hence, property paths
are regular expressions over vocabulary I of all IRIs, for which \=" is
concatenation, \j" disjunction, \^" inversion, \ " Kleene star (zero or more occurrences),
\+" one or more occurrences, and \?" zero or one occurrence. Negated property
paths are not supported, but negation on IRIs, inverted IRIs and disjunctions
of combinations of IRIs and inverted IRIs is allowed. A property-path triple is
a tuple t of the form (u; p; v), where u; v 2 (I [ V ) and p is a property path.
Such a triple is a graph pattern that matches all pairs of nodes hu; vi in an RDF
graph that are connected by paths that conform to p.
      </p>
      <p>
        Relational RDF Stores. A wide variety of RDF stores that rely on a
relational back-end have been proposed. (See [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] for an overview.) Some
implementations require intricate mechanisms that link the RDF and relational models
via schema, data, and query mappings. It is challenging to design such mappings
so they provide a correct SPARQL-to-SQL translation which results in SQL that
is also e cient to evaluate. We consider the simplest relational representation
of an RDF graph: the triples are stored in a single table triples(s,p,o). For each
triple in the RDF dataset, a single tuple is stored. SPARQL queries are
translated into SQL that is evaluated by the relational system. Figure 1 shows such
a translation.
      </p>
      <sec id="sec-1-1">
        <title>SELECT ?who</title>
        <p>{
}
?who :wrote :Hamlet .
(a) SPARQL</p>
      </sec>
      <sec id="sec-1-2">
        <title>SELECT T.s</title>
        <sec id="sec-1-2-1">
          <title>FROM triples T</title>
          <p>WHERE T.p=":wrote" AND</p>
          <p>T.o=":Hamlet"</p>
          <p>(b) SQL</p>
          <p>
            SQL Recursion. Recursion was introduced to SQL in the SQL99 standard [
            <xref ref-type="bibr" rid="ref4">4</xref>
            ].
This allows for linear recursion; i.e., the recursive de nition may call itself at
most once in its de nition. Despite this limitation, linear recursion is quite useful
in many practical settings. It allows for queries over hierarchical relationships,
to compute bill of materials, and to nd paths in graphs. A recursive query is
written in SQL via common table expressions (CTEs). A recursive CTE has a
base and a recursive SELECT statement. This recursion is then achieved by a
join in the recursive SELECT with the CTE itself. This can appear only once
in the FROM clause, which is what limits the recursion to being linear. Figure 2
illustrates a query that computes the transitive closure of a graph stored as an
adjacency list.
          </p>
        </sec>
        <sec id="sec-1-2-2">
          <title>WITH closure(i,j) AS (</title>
        </sec>
        <sec id="sec-1-2-3">
          <title>SELECT G.i, G.j FROM graph G</title>
          <p>UNION ALL</p>
        </sec>
        <sec id="sec-1-2-4">
          <title>SELECT C.i, G.j FROM closure C, graph G</title>
          <p>WHERE C.j = G.i
)</p>
        </sec>
      </sec>
      <sec id="sec-1-3">
        <title>SELECT DISTINCT i, j FROM closure</title>
        <p>| base step
| recursive
| step</p>
        <p>One can limit the recursive depth in the WHERE statement in the recursive
SELECT to avoid in nite recursion over cyclic data. Some database systems
implement a CYCLE clause that will suppress duplicate matches caused by cycles.
3</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Translation Strategy</title>
      <p>We are solving the following evaluation problem. Given an RDF graph G =
(V; E) stored in the single relational table triples and a property-path triple
pattern (u; p; v), we want to generate an SQL query that returns all pairs of
nodes (u; v) : u; v 2 V such that there is a path between u and v matching
p. To produce a correct SQL mapping, we must rst establish the semantics of
property paths; i.e., when does a path in a graph conform to a property path.</p>
      <p>
        The problem of nding a constrained path between two nodes in a graph has
been well studied. Regular paths are a subclass of such. A path matches if the
concatenation of its edges matches the regular expression. Nodes along the path
may be visited more than once (regular paths), or at most once (simple paths).
The former notion is preferred over the latter, often for complexity reasons. In [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
the authors showed that regular paths are computable in polynomial combined
(data and query) complexity, while simple paths are intractable, even for basic
regular expressions.
      </p>
      <p>
        Initially, W3C had adopted simple path semantics for arbitrary-length
property paths in SPARQL 1.1 for the \*" and \+" operators. W3C had also required
paths to be counted ; i.e., to report the number of duplicate pairs (a; b) that
correspond to a number of paths between a and b that conform to p. However, [
        <xref ref-type="bibr" rid="ref2 ref6">2, 6</xref>
        ]
have shown that both of these requirements are computationally infeasible in
many cases. These observations led W3C to drop both simple path and path
counting requirements in favor of regular paths and existential semantics.
      </p>
      <p>
        In [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], dynamic programming was shown to be a good approach to evaluate
regular path queries with existential semantics on graphs. We provide an SQL
implementation of the algorithm in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to translate a SPARQL property path p
into an equivalent SQL expression.
      </p>
      <p>De nition 1 (SPARQL property path to SQL CTE translation) Let
G be an RDF graph, DBG be its database representation as a single relation
triples(s,p,o), and p be a property path. Then, trans(p) is a procedure that
produces an SQL CTE P such that its database evaluation eval(P; DBG) produces
a relation Rp that contains all pairs of nodes (s; o) that conform to p.
Translation procedure trans( ) works as follows. Let T (p) be the parse tree of
p, the nodes of which represent subexpressions of p. The hierarchy in T (p)
corresponds to the operator precedence speci ed by the SPARQL standard. Figure 3
presents an example. We build up the SQL query by traversing T (p) bottom-up.
For each node in T (p) that corresponds to subexpression s, we generate an SQL
CTE S that computes all pairs of nodes Rs in the RDF graph that conform
to s. During the traversal of the parse tree, CTEs from its children nodes are
combined to generate a CTE for the parent node.</p>
      <sec id="sec-2-1">
        <title>SELECT DISTINCT ?x ?y</title>
        <p>{
}
?x :p1|(:p2+/:p3+) ?y .</p>
        <p>
          Let a 2 I and p, p1 and p2 be property paths. We assume set semantics for
property paths as advocated in [
          <xref ref-type="bibr" rid="ref2 ref6 ref7">2, 6, 7</xref>
          ]. Below, rules R1-R8 recursively de ne
the SQL translation for each of the operators that appear in the property path
parse tree:
R1: If p = a, then p is translated to P as in Figure 4a.
        </p>
        <p>R2: If p =!(a1 j : : : j an), then p is translated to P as in Figure 4f.
R3: If p = ^p1, then p is translated to P given P1 as in Figure 4b.
R4: If p = p1?, then p is translated to P given P1 and P2 as in Figure 4e.
R5: If p = p1=p2, then p is translated to P given P1 and P2 as in Figure 4c.
R6: If p = p1 j p2, then p is translated to P given P1 and P2 as in Figure 4d.
R7: If p = p1 , then p is translated to P given P1 as in Figure 4g.
R8: If p = p1+, then p is translated to P given P1 similarly to R7.
De nition 2 (Property-path triple to SQL translation) Let G be the RDF
graph and DBG its database representation as a single relational table triples(s,p,o).
Let T be a property path triple. Then, procedure trans( ) is overloaded so that
given T , it produces a semantically equivalent SQL expression sqlT =trans(T ).
Overloaded trans( ) works as follows. Depending on the form of the property
path triple T , we generate a di erent nal SQL statement. Rules R9-R11
(presented in Figure 5) cover the possible cases, assuming that SQL CTE P was
generated by trans(p).</p>
        <sec id="sec-2-1-1">
          <title>WITH P(s,o) AS (</title>
        </sec>
      </sec>
      <sec id="sec-2-2">
        <title>SELECT DISTINCT T.s, T.o</title>
        <sec id="sec-2-2-1">
          <title>FROM triples T</title>
          <p>WHERE T.p = ’a’
)
)
)
(a) p = a.</p>
        </sec>
        <sec id="sec-2-2-2">
          <title>WITH P(s,o) AS (</title>
        </sec>
      </sec>
      <sec id="sec-2-3">
        <title>SELECT DISTINCT P1.s, P2.o</title>
        <sec id="sec-2-3-1">
          <title>FROM P1, P2 WHERE P1.o = P2.s</title>
          <p>(c) p = p1=p2.</p>
        </sec>
        <sec id="sec-2-3-2">
          <title>WITH P(s,o) AS (</title>
        </sec>
        <sec id="sec-2-3-3">
          <title>SELECT T.s as s, T.s as o</title>
        </sec>
        <sec id="sec-2-3-4">
          <title>FROM triples T</title>
          <p>UNION</p>
        </sec>
        <sec id="sec-2-3-5">
          <title>SELECT P1.s as s, P1.o as o</title>
        </sec>
      </sec>
      <sec id="sec-2-4">
        <title>FROM P1</title>
        <sec id="sec-2-4-1">
          <title>WITH P(s,o) AS (</title>
          <p>SELECT DISTINCT</p>
          <p>P1.o as s, P1.s as o</p>
        </sec>
      </sec>
      <sec id="sec-2-5">
        <title>FROM P1</title>
        <p>)
(b) p = ^p1.</p>
        <sec id="sec-2-5-1">
          <title>WITH P(s,o) AS (</title>
          <p>SELECT * FROM P1
UNION</p>
          <p>SELECT * FROM P2
)
(d) p = p1jp2.</p>
        </sec>
        <sec id="sec-2-5-2">
          <title>WITH P(s,o) AS (</title>
        </sec>
      </sec>
      <sec id="sec-2-6">
        <title>SELECT DISTINCT T.s, T.o</title>
        <sec id="sec-2-6-1">
          <title>FROM triples T</title>
          <p>WHERE</p>
          <p>T.p NOT IN (’a1’,..,’an’)
)
(e) p = p1?.
(f) p =!(a1j : : : jan).</p>
        </sec>
        <sec id="sec-2-6-2">
          <title>WITH closure(s,o) AS (</title>
        </sec>
        <sec id="sec-2-6-3">
          <title>SELECT P1.s, P1.o FROM P1</title>
          <p>UNION ALL</p>
          <p>SELECT C.s, P1.o FROM closure C, P1 WHERE C.o = P1.s
) CYCLE s SET cyclemark TO ’Y’ DEFAULT ’N’ USING cyclepath,
P(s,o) AS (</p>
        </sec>
      </sec>
      <sec id="sec-2-7">
        <title>SELECT DISTINCT s, o FROM closure</title>
        <p>UNION</p>
        <sec id="sec-2-7-1">
          <title>SELECT T.s as s, T.s as o FROM triples T</title>
          <p>Fig. 5: Translation of SPARQL property-path triples into SQL.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Discussion</title>
      <p>Our translation of SPARQL property paths into equivalent SQL queries follows
SPARQL 1.1 semantics closely. Showing correctness of this translation can be
reasonably straightforward. However, the resulting SQL might be not e cient
to evaluate. We envision optimization strategies to generate SQL queries that
are simpler and more e cient.</p>
      <p>
        Even modest SPARQL property paths may result in a complex, highly nested
SQL queries. These are a challenge for present-day relational optimizers. Our
translations may be rewritten to use augmentation-based algorithms [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] to
generate a \ at" SQL query for each of the regular path operators. Such attened
SQL statements are typically processed more e ciently by relational query
engines than their nested counterparts.
      </p>
      <p>
        We are studying the optimization of the recursive components in the
generated SQL. First, we are investigating the optimizations that speed up the
recursion by ltering its base table. These include classical early selection rewrites [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ],
as well as novel algorithms speci c to regular path translation such as pushing
of the \=" operator into the \ " and \+" operators. Our preliminary
evaluation results indicate orders of magnitude improvement in query processing times
after incorporation of some of these techniques into the translation algorithm.
Second, we shall study more advanced recursion optimization techniques. We
are investigating the applicability of magic set transformations [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] that aim to
reduce the recursive step deltas.
      </p>
      <p>
        Next, we shall study the problem of evaluating the resulting SQL on cyclic
RDF data. The adoption of regular path semantics by W3C for property paths
can lead to in nite computation due to cycles in the graph. Our SQL translation
and evaluation need a mechanism to handle cycles gracefully. In general, SQL99
includes a speci cation of a CYCLE clause which performs a memoization to
\remember" matches considered so to suppress duplicates, avoiding unbounded
recomputation. While, in our translation, we use CYCLE clause to handle cycles, in
practice this approach has two important shortcomings. First, many open-source
and commercial databases do not implement support for this clause, thus
limiting the applicability of our approach. Second, our preliminary evaluation results
suggest that path memoization introduces a considerable amount of
computational overhead. Hence, we need to investigate how to deal with these problems
e ciently. We consider alternative translations that deal with cycles such as
placing an upper limit on the recursion depth or performing manual path
memoization by using auxiliary data structures. Moreover, it has been shown in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
that it is possible to identify the cyclic data in polynomial time. We shall study
if we can incorporate this observation into SQL to decide when to use a
cycleproof, but less e cient evaluation strategy, or a faster approach that assumes
acyclicity.
      </p>
      <p>
        Finally, we shall compare the performance of our approach to other proposed
methods of property path evaluation. In particular, we consider the recently
proposed FEM framework [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. FEM was originally developed to answer shortest
paths queries on graphs stored in a relational database by iteratively applying
Frontier-Expand-Merge operations. In our work, we plan to adapt FEM to
answer property path queries and to compare this adaptation to the recursion-based
approach presented in this paper. Additionally, we compare both of these
approaches to native triplestores such as those included in Jena [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] and Sesame [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]
frameworks.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>S.</given-names>
            <surname>Harris</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Seaborne</surname>
          </string-name>
          .
          <source>SPARQL 1</source>
          .
          <article-title>1 query language</article-title>
          .
          <source>W3C Working Draft (8 Nov</source>
          <year>2012</year>
          ). Available at http://www.w3.org/TR/sparql11-query/.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>M.</given-names>
            <surname>Arenas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Conca</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Perez</surname>
          </string-name>
          .
          <article-title>Counting beyond a Yottabyte, or how SPARQL 1.1 property paths will prevent adoption of the standard</article-title>
          .
          <source>In Proceedings of the 21st international conference on World Wide Web</source>
          , pages
          <volume>629</volume>
          {
          <fpage>638</fpage>
          . ACM,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Katja</given-names>
            <surname>Hose</surname>
          </string-name>
          , Ralf Schenkel,
          <string-name>
            <given-names>Martin</given-names>
            <surname>Theobald</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Gerhard</given-names>
            <surname>Weikum</surname>
          </string-name>
          .
          <article-title>Database foundations for scalable RDF processing</article-title>
          .
          <source>Reasoning Web. Semantic Technologies for the Web of Data</source>
          , pages
          <volume>202</volume>
          {
          <fpage>249</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Jim</given-names>
            <surname>Melton</surname>
          </string-name>
          and
          <string-name>
            <surname>Alan R Simon. SQL: 1999-Understanding Relational Language Components</surname>
          </string-name>
          . Morgan Kaufmann,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>A.O.</given-names>
            <surname>Mendelzon</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.T.</given-names>
            <surname>Wood</surname>
          </string-name>
          .
          <article-title>Finding regular simple paths in graph databases</article-title>
          .
          <source>SIAM Journal on Computing</source>
          ,
          <volume>24</volume>
          (
          <issue>6</issue>
          ):
          <volume>1235</volume>
          {
          <fpage>1258</fpage>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>K.</given-names>
            <surname>Losemann</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Martens</surname>
          </string-name>
          .
          <article-title>The complexity of evaluating path expressions in SPARQL</article-title>
          .
          <source>In Proceedings of the 31st symposium on Principles of Database Systems</source>
          , pages
          <fpage>101</fpage>
          {
          <fpage>112</fpage>
          . ACM,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>M.</given-names>
            <surname>Arenas</surname>
          </string-name>
          ,
          <string-name>
            <surname>Gutierrez</surname>
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miranker</surname>
            <given-names>D.</given-names>
          </string-name>
          , ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Perez</surname>
          </string-name>
          , and
          <string-name>
            <surname>Sequeda J. Querying</surname>
          </string-name>
          <article-title>Semantic Web Data on the Web</article-title>
          .
          <source>Sigmod Record</source>
          <volume>41</volume>
          (
          <issue>4</issue>
          ), pages
          <fpage>6</fpage>
          {
          <fpage>17</fpage>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>B.</given-names>
            <surname>Elliott</surname>
          </string-name>
          , E. Cheng, C. Thomas-Ogbuji, and
          <string-name>
            <given-names>Z.M.</given-names>
            <surname>Ozsoyoglu</surname>
          </string-name>
          .
          <article-title>A complete translation from SPARQL into e cient SQL</article-title>
          .
          <source>In Proceedings of the 2009 International Database Engineering &amp; Applications Symposium</source>
          , pages
          <volume>31</volume>
          {
          <fpage>42</fpage>
          . ACM,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>C.</given-names>
            <surname>Ordonez</surname>
          </string-name>
          .
          <article-title>Optimization of linear recursive queries in SQL. Knowledge and Data Engineering</article-title>
          , IEEE Transactions on,
          <volume>22</volume>
          (
          <issue>2</issue>
          ):
          <volume>264</volume>
          {
          <fpage>277</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>F.</given-names>
            <surname>Bancilhon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Maier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Sagiv</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.D.</given-names>
            <surname>Ullman</surname>
          </string-name>
          .
          <article-title>Magic sets and other strange ways to implement logic programs</article-title>
          .
          <source>In Proceedings of the fth ACM SIGACTSIGMOD symposium on Principles of database systems</source>
          , pages
          <fpage>1</fpage>
          <lpage>{</lpage>
          15. ACM,
          <year>1985</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Jun</surname>
            <given-names>Gao</given-names>
          </string-name>
          , Ruoming Jin,
          <string-name>
            <surname>Jiashuai Zhou</surname>
            , Je rey Xu Yu,
            <given-names>Xiao</given-names>
          </string-name>
          <string-name>
            <surname>Jiang</surname>
            , and
            <given-names>Tengjiao</given-names>
          </string-name>
          <string-name>
            <surname>Wang</surname>
          </string-name>
          .
          <article-title>Relational approach for shortest path discovery over large graphs</article-title>
          .
          <source>Proceedings of the VLDB Endowment</source>
          ,
          <volume>5</volume>
          (
          <issue>4</issue>
          ):
          <volume>358</volume>
          {
          <fpage>369</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>K.</given-names>
            <surname>Wilkinson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Sayers</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Kuno</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          , et al.
          <article-title>E cient RDF storage and retrieval in Jena2</article-title>
          .
          <source>In Proceedings of SWDB</source>
          , volume
          <volume>3</volume>
          , pages
          <fpage>131</fpage>
          {
          <fpage>150</fpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>J. Broekstra</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Kampman</surname>
            , and
            <given-names>F. Van Harmelen. Sesame:</given-names>
          </string-name>
          <article-title>A generic architecture for storing and querying RDF and RDF Schema</article-title>
          .
          <source>The Semantic WebISWC</source>
          <year>2002</year>
          , pages
          <fpage>54</fpage>
          {
          <fpage>68</fpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>