<!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>How to execute SPARQL property path queries online and get complete results?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Julien Aimonier-Davat</string-name>
          <email>Julien.Aimonier-Davat@univ-nantes.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hala Skaf-Molli</string-name>
          <email>hala.skaf@univ-nantes.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pascal Molli</string-name>
          <email>pascal.molli@univ-nantes.fr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>LS2N - University of Nantes</institution>
          ,
          <country country="FR">France</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>SPARQL property path queries provide a concise way to write complex navigational queries over RDF knowledge graphs. However, the evaluation of these queries over online knowledge graphs such as DBPedia or Wikidata are often interrupted by quotas, returning no results or partial results. Decomposing SPARQL property path queries into triple pattern subqueries allows to get complete results. However, such decomposition generates a high number of subqueries, a large data transfer and finally delivers poor performances. In this paper, we propose an algorithm able to decompose SPARQL property path queries into Basic Graph Pattern (BGP) subqueries. As BGP queries are guaranteed to terminate on preemptable SPARQL servers, property path queries always deliver complete results. Experimental results demonstrate that our approach outperforms existing approaches in terms of HTTP calls, data transfer and query execution time.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Context and motivation: Property path queries provide a concise way to
write sophisticated navigational queries in Knowledge Graphs (KGs). SPARQL
queries with property paths are largely used. They represent a total of 38% of
the entire log of wikidata [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. However, executing these complex queries against
online public SPARQL services is challenging, mainly due to quotas enforcement
that prevent queries to deliver complete results as pointed out in [
        <xref ref-type="bibr" rid="ref11 ref16 ref18">18, 11, 16</xref>
        ]. This
raises the main issue of the paper: How to execute SPARQL property path queries
online and get complete results?
Related Works: The decomposition of SPARQL property path queries into
subqueries that may terminate under quotas allows to get complete results.
However, ensuring the termination of any query under quotas is challenging [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
Another option is to rely on restricted SPARQL servers that ensure the
termination of supported SPARQL queries such as Triple Pattern Fragment (TPF)
servers [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ] or Preemptable servers [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] such as SaGe 1. The granularity of the
decomposition strongly impacts the execution time of the initial query, i.e. a
decomposition of a property path query into triple patterns generates more
subqueries than a decomposition into Basic Graph Patterns (BGPs) where a BGP is
      </p>
      <sec id="sec-1-1">
        <title>1 http://sage.univ-nantes.fr</title>
        <p>Copyright © 2020 for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0).
s e l e c t ? oeuvre ? i n s p i r a t i o n
where {
? oeuvre wdt : P144 ? i n s p i r a t i o n .
? oeuvre wdt : P31/wdt : P279∗ wd : Q17537576 .</p>
        <p>? i n s p i r a t i o n wdt : P136 wd : Q8253
}
(a) Q1: Creative works and the list
of fiction works that inspired it on
Wikidata
@ p r e f i x owl : &lt;http ://www. w3 . org /2002/07/ owl#&gt;
@seplreecfti x ?xf o?a of : w&lt;hhetretp {:// xmlns . com/ f o a f /0.1/&gt;
?x f o a f : name ?n .</p>
        <p>?x owl : sameAs∗ ?o .
}
(b) Q2: list of similar entities on</p>
        <p>DBPedia
a set of triple patterns. Unlike TPF servers, Preemptable servers support BGPs.</p>
        <p>Unfortunately, there is currently no algorithm to decompose a property path
query into BGP subqueries.</p>
        <p>Approach and Contributions: In this paper, we propose an algorithm able to
decompose a SPARQL property path query into BGP subqueries with filters and
unions. As the generated subqueries are guaranteed to terminate when processed
by a preemptable SPARQL server, the property path queries are executed online
and always return complete results.</p>
        <p>The contributions of the paper are the following: (i) We define an algorithm
that computes a compressed automaton for SPARQL property path queries.</p>
        <p>The algorithm allows to decompose the SPARQL property path queries into
BGP subqueries. (ii) We compare the performance of our approach with existing
approaches (TPF and SaGe). Experimental results demonstrate that the
compressed automata approach outperforms existing approaches by several orders
of magnitude in terms of HTTP calls, execution time and data transfer.</p>
        <p>This paper is organized as follows. Section 2 reviews related works. Section 3
introduces SPARQL property path queries and automata as property path
expressions models. Sections 4 presents the automata compression approach in
the context of the web preemption. Section 5 presents our experimental results.</p>
        <p>Finally, the conclusion is outlined in Section 6.
2</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>Related Works</title>
      <p>
        Property paths were introduced in SPARQL 1.1 2 to add extensive navigational
capabilities to the SPARQL query language. Property paths closely correspond
to regular expressions and are crucial to perform non-trivial navigation in
knowledge graphs. Regular expressions involve operators such as ’ * ’ (zero or more
occurrences-kleene star), ’ | ’ (OR operator), ’ / ’ (sequence operator), ’ ^ ’
(inverse operator), ’ ! ’ (NOT operator) that allow to describe complex paths of
arbitrary length. For instance, the query SELECT ?x ?y WHERE ?x foaf:knows*
?y require to compute the transitive closure of the relation f oaf : knows over
all pairs x; y present in the KG. Many techniques [
        <xref ref-type="bibr" rid="ref19 ref6">19, 6</xref>
        ] proposed to compute
such queries but, computing transitive closure over large graphs remains costly.
      </p>
      <sec id="sec-2-1">
        <title>2 https://www.w3.org/TR/sparql11-property-paths/</title>
        <p>
          Breadth First Search or Depth First Search algorithms compute transitive
closures with a time complexity in O(jEj + jV j) and a space complexity in O(jV j2),
with E and V the finite set of KG edges and vertices, respectively. Even if
different optimisations have been proposed [
          <xref ref-type="bibr" rid="ref12 ref25">25, 12</xref>
          ] that greatly improve performances,
a simple property path query evaluation over a large graph may require a large
amount of CPU and memory to complete.
        </p>
        <p>
          This makes the evaluation of property path queries challenging on online
Knowledge Graphs such as DBPedia or Wikidata. To ensure a fair usage policy of
resources, public SPARQL endpoints enforce quotas [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] in time and ressources
for executing queries. As queries are stopped by quotas, many queries return no
results or partial results. For instance, the query Q1 Figure 1 returns no result
on Wikidata because it has been stopped after running more than 60s. The Q2
3 on DBPedia returns partial results because it has been killed after delivering
the first 10000 results.
        </p>
        <p>To overcome quotas limitations, KG providers publish dumps of their data.
However, re-ingesting billions of triples on local resources to compute SPARQL
property path queries is extremely costly and raises issues with freshness. Moreover,
it is an offline approach, and in this paper we want to execute property path
queries online and get complete results.</p>
        <p>
          To overcome quota limitations, it is also possible to decompose SPARQL queries
into subqueries that may terminate under quotas [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. However, finding such
decomposition is hard in the general case, as quotas can be different from one
server to another, both in terms of values and nature [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Consequently, there is
no guarantee that subqueries terminate. Another option is to rely on restricted
server interfaces to ensure that the execution of subqueries terminate, e.g. the
Triple Pattern Fragments approach (TPF) [
          <xref ref-type="bibr" rid="ref10 ref24">10, 24</xref>
          ] or the preemptable server
SaGe [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ]. However, the granularity of the decomposition strongly impact the
execution time of the initial query. Relying on the TPF interface, a property path
query has to be decomposed into sequences of multiple triple pattern queries,
while a preemptable server allows to decompose property path queries into BGP
queries with union and filters.
        </p>
        <p>
          The TPF client [
          <xref ref-type="bibr" rid="ref10 ref24">10, 24</xref>
          ] decomposes SPARQL queries into sequences of paginated
triple pattern queries. As paginated triple patterns queries can be executed in
bounded times, the server does not need quotas, i.e. all queries executed by
the server have nearly the same duration. However, as the TPF server only
processes triple pattern queries, property paths have to be decomposed into
sequences of triple pattern queries. This requires to compute several joins on
the client, especially to compute transitive closure expressions, which require
a high number of HTTP calls and a large data transfer leading to poor query
performance.
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>3 Q1 and Q2 are executed at the public SPARQL endpoints of Wikidata, and DBPedia,</title>
        <p>respectively, at August 5 2020.</p>
        <p>
          SaGe implements the web preemption [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] model. A preemptable server
interrupts a SPARQL query execution after a quantum of time, returning partial
results and the state of the SPARQL query (the query execution plan). The
client can continue the query execution by sending the state of SPARQL query
back to the preemptable server. Following the web preemption model, many
queries may be virtually suspended, but the server remains stateless. As queries
are suspended after a quantum, the server only processes queries of nearly the
same duration and there is no need for quotas. SaGe server implements the
evaluation of triple patterns, BGPs, filters and unions. Although, web preemption
allows processing BGPs, property paths are still decomposed into sequences of
triple pattern queries leading to poor query performance.
        </p>
        <p>
          A BGP decomposition is much more efficient than a triple pattern
decomposition, as it generates less subqueries and transfers less intermediate results.
Unfortunately, there is no algorithm able to decompose property path into BGP
queries. In this paper, we propose an algorithm of decomposition based on
automaton compression. Similar automaton compression techniques have been
already used in other domains, but not related to query processing [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ].
3
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Property Path Expressions and Automata</title>
      <p>We recall briefly definitions related to the proposal of the paper.
3.1</p>
      <sec id="sec-3-1">
        <title>SPARQL property path queries</title>
        <p>
          SPARQL Queries : We follow the notation from [
          <xref ref-type="bibr" rid="ref17 ref20">17, 20</xref>
          ] and consider three
disjoint sets I (IRIs), L (literals) and B (blank nodes) and denote the set T
of RDF terms I [ L [ B. An RDF triple (s; p; o) 2 (I [ B) I T connects
subject s through predicate p to object o. An RDF graph G (called also RDF
dataset) is a finite set of RDF triples. We assume the existence of an infinite set
V of variables, disjoint with previous sets. A mapping from V to T is a partial
function : V ! T , the domain of , denoted dom( ) is the subset of V where
is defined.
        </p>
        <p>
          A SPARQL graph pattern expression P is defined recursively as follows.
1. A tuple from (I [ L [ V ) (I [ V ) (I [ L [ V ) is a triple pattern.
2. If P 1 and P 2 are graph patterns, then expressions (P1 AND P2), (P1 OPT
P2), and (P1 UNION P2) are graph patterns (a conjunction graph pattern,
an optional graph pattern, and a union graph pattern, respectively).
3. If P is a graph pattern and R is a SPARQL built-in condition, then the
expression (P FILTER R) is a graph pattern (a filter graph pattern).
SPARQL Property Path Queries: The SPARQL 1.1 language [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] introduces
property paths. We adopt the same syntax as [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] to define operator property
start
        </p>
        <p>q0
:A
a
d
a
q1
q4</p>
        <p>(a)
:B
b
a
d
e
b
d
q2
q5
c</p>
        <p>q3
:C
c
:D
(c)
path expressions, i.e. the inverse path is denoted by e
e1 + e2 4.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Definition 1 (Property Path Expressions [14]).</title>
        <p>Property path expressions are defined by the grammar:
and alternative path
e := a j e</p>
        <p>j e1 e2 j e1 + e2 j e+ j e j e? j !a1; : : : ; ak j !a1 ; : : : ; ak ;
where a; a1; : : : ; ak are properties, i.e. IRIs in I. A single property is called
a predicate path expression. It is the smallest path expression and it can
only match paths of length one, i.e. triple patterns. Expressions of the forms
(e1 e2), (e1 + e2), (e+ ) and (e?) are respectively called sequence, alternative,
transitive and optional path expressions. Expressions of the last two forms
(i.e. starting with !) are called negated property sets. The set of all property paths
expressions is denoted by P P .</p>
        <p>
          Definition 2 (Property Path [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ]). A property path pattern is a triple in
(I [ L [ V ) P P (I [ L [ V ).
        </p>
        <p>Property path patterns are incompatible with triple patterns, because they allow
property path expressions in predicate positions but forbid variables in these
positions.
3.2</p>
      </sec>
      <sec id="sec-3-3">
        <title>Modeling property path expressions via automata</title>
        <p>
          A finite automaton is often used to represent a property path expression [
          <xref ref-type="bibr" rid="ref6 ref8">6, 8</xref>
          ].
For example, the property path P = ((a b c)+(d e))+ can be represented by the
4 SPARQL 1.1 uses symbols ^e and e1je2 for inverse and alternative path, respectively
automaton described in Figure 2a. We call such automaton a mono-predicate
automaton.
        </p>
        <p>
          To evaluate the query Q=select * where {:A P ?y} over the graph G1 in
Figure 2c, an automaton-based approach [
          <xref ref-type="bibr" rid="ref5 ref6">6, 5</xref>
          ] processes as follows:
1. A search is initialized from the configuration c0=(q0, :A), where q0 is the
initial state of the automaton, and :A is the subject of the property path
pattern of Q .
2. From the configuration c0, states q1 and q4 could be reached. q1 is reached
as the evaluation of J:A a ?yKG1 = f?y ! :Bg. Therefore, the configuration
c1 = (q1, :B) is built. q4 is not reached as J:A d ?yKG1 = ;.
3. From the configuration c1, the state q2 is reached as J:B b ?yKG1 = f?y !
:Cg, the configuration c2 = (q2, :C) is built.
4. From the configuration c2, q3 is reached with J:C c ?yKG1 = f?y ! :Dg,
c3 = (q3, :D) is built. As q3 is a final state, f?y ! :Dg is a solution to the
query Q.
5. The process continues from c3, but no more solutions can be found. The
algorithm terminates when all the configurations have been found.
As we can see, all evaluations performed on G1 correspond to triple pattern
queries. By this way, the automaton-based approach decomposes the property
path expressions into triple pattern subqueries. We call such automaton a
monopredicate automaton.
4
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Compression of Property Path Automata</title>
      <p>The mono-predicate automaton in Figure 2a is equivalent to the automaton
presented in Figure 2b, i.e. they both recognize the same language. Compared to
the mono-predicate automaton, transitions in the second automaton are labeled
with more complex expressions such as sequences and alternatives. We call this
automaton a multi-predicate automaton.</p>
      <p>If both automata are equivalent, evaluating the path expression with the
multipredicate automaton generates BGP subqueries with union, which is much more
efficient than evaluating triple pattern subqueries. Obviously, the second
automaton is a compressed version of the first one. The scientific problem is to write an
algorithm able to transform any mono-predicate automaton into an equivalent
minimal multi-predicate automaton according to servers capabilities.
A multi-predicate automaton is said to be minimal if it does not exist another
equivalent multi-predicate automaton with less states and transitions, according
to a set of operators supported by a server, i.e. server capabilities.
For example, a mono-predicate automaton is a minimal multi-predicate
automaton for a TPF server, as TPF only supports triple pattern queries. For a server
supporting BGP and union such as SaGe, the multi-predicate automaton of
Figure 2b is minimal, while the multi-predicate automaton presented in Figure 3d
is not.</p>
      <p>In this paper, we only consider predicate, sequence, alternative and transitive path
expressions. Optionals are ignored as they are naturally rewritten as alternatives
when a property path expression is converted into a finite automaton. Concerning
negated property sets and inverse path expressions, they can be treated as special
cases of predicate path expressions. An inverse path expression can be rewritten
as a triple pattern whose subject and object have been reversed, while a negated
property set can be rewritten as a triple pattern whose predicate is a variable that
is associated to a "not in" filter condition to exclude unwanted properties.
4.1</p>
      <sec id="sec-4-1">
        <title>Algorithm for compressing path expression automata</title>
        <p>In this section, we describe an algorithm to transform a mono-predicate
automaton into a multi-predicate automaton. The algorithm is composed of two
parts:
1. We first build an automaton for sequence path expressions, i.e. not
considering alternatives. This produces a first compressed automaton that may be
not minimal.
2. Second, we compress the automaton produced by the previous step
considering alternatives to produce a minimal compressed automaton.
4.1.1</p>
      </sec>
      <sec id="sec-4-2">
        <title>Processing sequence path expressions</title>
        <p>When a property path expression is converted into a mono-predicate automaton,
sequences without transitive closures are converted into paths of mono-predicate
transitions, such that (1) consecutive transitions are connected together by an
intermediate state, (2) paths start from a non-intermediate state, (3) paths
go to a non-intermediate state.</p>
        <p>Definition 3 (Intermediate state). A state is called an intermediate state if
and only if (1) it is not a start state, (2) it is not a final state, (3) it has no self
transition.</p>
        <p>For example, in the mono-predicate automaton of the property path P = ((a b
c)+(d e))+, the sequence (a b c) corresponds to the paths &lt;(q0; a; q1); (q1; b; q2),
(q2; c; q3)&gt;, &lt;(q3; a; q1); (q1; b; q2); (q2; c; q3)&gt;, &lt;(q5; a; q1); (q1; b; q2); (q2; c; q3)&gt;
where q0, q3 and q5 are non-intermediate states, while q1 and q2 are intermediate
states.</p>
        <p>Consequently, the first step to build a minimal multi-predicate automaton is to
replace these paths by single transitions that are labeled with the
corresponding sequence path expressions. As only paths extremities are non-intermediate
a
d
q1
q4
b
d
e
a=b=c
q0
d=e
a=b
c
q3</p>
        <p>a=b=c
a=b=c
a=b=c
d=e
q3</p>
        <p>a=b=c
a=b=c
start
d=e a=b=c
start
q0
a
d
a
d
start
q0
a=b a
d a=b
start
q0
a=b a
d a=b
(a) Replacing paths that go through
q1
(b) Replacing paths that go through q2
q1
q4
q1
q4</p>
        <p>a=b=c
a=b a
d=e
b
d
e
b
d
e
a=b
c</p>
        <p>q3
a
q2
q5
a
q2
a=b
c
d ab d=e
q5
d=e
a
q2
q5
q3
q5
(c) Replacing paths that go through q4
(d) Result of replacing paths
between non-intermediate
states by the shortest paths
states, a simple solution to achieve this is to compute the shortest paths
between the non-intermediate states, before removing the intermediate states and
all transitions that are connected to one of them. Algorithm 1 follows this
procedure by using a Floyd-Warshall based approach to compute the shortest paths
between the non-intermediate states.</p>
        <p>To illustrate, consider the automaton in Figure 2a. Algorithm 1 starts by
considering all intermediate states. In this example q1, q2 and q4. For each of them,
the algorithm searches all pairs of transitions that are consecutive through it.
Two consecutive transitions can be seen as the two operands of a join operator,
where the label of the first transition is the right operand, while the label of the
second transition is the left operand. Consequently, the two transitions can be
merged together into a new transition, labeled with the concatenation of the two
operands. A delimiter (=) is used to be able to parse the expression, in order to
convert it into a BGP query, during the evaluation of the property path
expression. Figure 3a presents the automaton obtained after considering the
intermedi13
14 end
end
remove the original transitions for which the source or the destination is
an intermediate state
remove intermediate states
ate state q1. At this step, paths that go through state q1 are found and replaced.
For example, the two consecutive transitions (q0; a; q1); (q1; b; q2), where
predicate path expressions a and b are the operands of the sequence (a b), are replaced
by the transition (q0; a=b; q2). In Figure 3b it is paths that go through state q2
that are found and replaced. Of course, transitions introduced in the previous
steps are considered. Thus, the two consecutive transitions (q0; a=b; q2); (q2; c; q3)
are replaced by the transition (q0; a=b=c; q3). At this step, we can see that the
expression (a b c) is now complete. No more transition is labeled with a
subexpression of (a b c). Finally, Figure 3c presents the automaton obtained after
considering the last intermediate state q4. At the end, all paths that go through
states q1, q2 or q4 have been found and replaced by single transitions labeled
with the corresponding sequence expressions. After removing the intermediate
states, we obtain the automaton described in Figure 3d. This multi-predicate
automaton is minimal if we consider a server that only supports triple patterns
and BGPs.
4.1.2</p>
      </sec>
      <sec id="sec-4-3">
        <title>Processing alternative path expressions</title>
        <p>Although, evaluating alternative expressions on the server-side does not improve
the data transfer, it can significantly reduce the number of subqueries. To
illustrate, if the property path P = (a1 + ::: + an) is evaluated on the client, then it
requires to send n subqueries to the server. However, only one call is required to
evaluate this expression on the server.</p>
        <p>Definition 4 (Equivalent states). Two states in a finite automaton M are
equivalent if and only if for every string x, if M is started in either state with x
as input, it either accepts in both cases or rejects in both cases.</p>
        <p>
          start
q0
a=b=c
d=e
q35
d=e
When sequences have been processed, the n clauses of a same alternative
expression are represented by n transitions, such as they start from the same state
and go to the same or equivalent states. For example, in Figure 3d the two
transitions (q0; a=b=c; q3) and (q0; d=e; q3) are the two clauses of the expression
(a b c) + (d e). Consequently, the last step to build a multi-predicate
automaton is just to merge transitions that share the same sources and equivalent
destinations. This also requires to merge equivalent states. A simple solution
is to merge equivalent states by using a minimization algorithm such as [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ].
Then, transitions that are part of the same alternative expression can be safely
merged, knowing that in a minimized automaton, n transitions represent the
n clauses of a same alternative expression if they share the same source and
destination.
        </p>
        <p>To illustrate, consider the automaton in Figure 2a and imagine that sequences
have already been processed, resulting in the automaton in Figure 3d. To perform
the second transformation, i.e. merge the equivalent states, first, the automaton
should be minimized. In Figure 4a, the two equivalent states q3 and q5 are
merged into a new state q35. Then, transitions that share the same sources and
destinations are merged together. For example, the two transitions (q0; abc; q35),
(q0; de; q35) are part of the same alternative expression ((a b c) + (d e)),
consequently, they are merged into a new transition (q0; (a=b=c+d=e); q35). Here,
we use the delimiter (+) to be able to rewrite this expression as an union of BGPs.
Finally, the resulting automaton in Figure 4b is the corresponding minimal
multipredicate automaton of the property path ((a b c) + (d e))+. The decomposition
defines by this automaton is effectively minimal in the context of a server that
supports triple patterns, joins and unions.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Experimental Study</title>
      <p>We want to empirically answer the following questions: Does compressed
automata approach follow the W3C semantics of SPARQL property paths? Does
compressed automata approach outperform mono-predicate automata approach
in terms of query execution time, number of HTTP calls and data transfer? Does
compressed automata approach outperform existing client-side approaches in
terms of query execution time, number of HTTP calls and data transfer?
We implemented our multi-predicate automata compression approach as an
extension of the SaGe query engine framework. All extensions and experimental
results are available at https://github.com/JulienDavat.
5.1</p>
      <sec id="sec-5-1">
        <title>Experimental setup</title>
        <p>
          Dataset and Queries: We used BeSEPPI benchmark and gMark framework.
We used BeSEPPI benchmark to study the compliance of our approach with
the W3C semantics. BeSEPPI [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] is a benchmark designed to test the
different semantics aspects of SPARQL property path expressions. BeSEPPI has 236
queries (73 ASK queries and 163 SELECT queries) and a dataset of 29 triples.
The dataset is kept small in order to make the verification and the creation of
new queries simple. According to [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], an approach follows the W3C semantics
if each of the 236 queries returns a complete and correct result. In 2012, for
complexity reasons [
          <xref ref-type="bibr" rid="ref15 ref3">15, 3</xref>
          ], the evaluation of transitive closure expressions has
changed from a multi-set semantics to a set semantics. Because none of the 236
queries allow to check if this change has been taken into account, we added 6
new SELECT queries and 30 new triples.These queries are designed around the
clique test introduced in [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. We used gMark framework [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] to compare our
approach with SaGe-Jena and Comunica. We generate a workload of 30
property path queries with complex path expressions on a dataset of 1M triples using
the default "Shop" scenario of the framework.
        </p>
        <p>Approaches: We compare the following approaches: (1) SaGe-AC : implements
the automata compression approach on the SaGe smart client. (2) SaGe-A: for
comparison, implements a traditional automaton-based approach with a
monopredicate automaton on the SaGe smart client. (3) SaGe-Jena: is implemented
as an extension of Apache Jena5, consequently, property path expressions are
evaluated as defined in Jena, i.e. property path expressions are decomposed into
sequences of triple patterns. (4) Comunica: a TPF smart client.
Servers configurations: We run the experimentations on a machine with a
Processor Intel® Core™ i7-6700HQ CPU @ 2.60GHz x 8 and 16GB of RAM.
To be able to run SaGe-Jena and our approach, we run a SaGe server with a
time quantum of 75ms, a page-size of 2000 mappings and HDT files as backend.
For Communica (version 1.12.1), we run a TPF server (version 2.2.5) with HDT
files as backend and the same settings as SaGe.</p>
        <p>
          Evaluation Metrics: (1) Compliance with W3C semantics : check whether the
236 return complete and correct results as defined in [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ], i.e. produce the same
results. We also checked manually the compliance of the results of our six defined
queries. (2) Data transfer : is the total number of bytes transferred to the client
when executing a query. (3) Number of http calls : is the total number of HTTP
calls issued by the client when executing a query. (4) Execution time: is the total
        </p>
        <sec id="sec-5-1-1">
          <title>5 https://jena.apache.org/</title>
          <p>time between starting query execution and the production of the final results by
the client.
Presented results correspond to the average obtained of three successive
execution of the queries workloads. We fixed a time out of 30 minutes.
Does compressed automata approach follow the W3C semantics? We run the
BeSEPPI benchmark with SaGe-AC, Comunica and SaGe-Jena clients. Table 1
presents the results for the different approaches.</p>
          <p>SaGe-AC follows the W3C semantics of SPARQL property paths, it returns
complete and correct results for the 242 queries. SaGe-Jena is just as compliant
as Jena, i.e. it follows the semantics. However, Comunica is unable to compute
the transitive path expressions when paths have longer more than one, or
reflexive closure must be computed.</p>
          <p>Does compressed automata approach outperform mono-predicate automata? We
run the 30 queries of gMark workload with the SaGe-A and SaGe-AC
approaches. Figure 5 shows the execution time, the number of HTTP calls and
the data transfer for each query in the workload for both approaches. Dashed
lines represent incomplete queries after an execution time of 30 minutes. As
expected, when it is possible to improve the decomposition of property path
queries, SaGe-AC outperforms SaGe-A in terms of HTTP calls, data transfer
and execution time. However, when mono-predicate automata cannot be
compressed, then both approaches are equivalent. Queries 12 and 20 are examples of
property path queries for which mono-predicate automata and multi-predicate
automat have similar performance.</p>
          <p>Does compressed automata approach existing client-side approaches We run the
30 queries of gMark workload with the SaGe-AC, communica and SaGe-Jena
clients. Figure 6 shows the execution time, the number of HTTP calls and the
data transfer for each query in the workload for three approaches.
As Comunica does not support gMark transitive queries, we split the query
workloads into two groups: transitive queries and non-transitive queries. The
transitive queries regroupes queries that have at least one transitive closure
expression. The non-transitive queries regroupes other queries.</p>
          <p>Figure 6b presents the results of transitive queries with only SaGe-AC and
SaGe-Jena, as these queries cannot be executed by Communica. As we can see,
SaGe-AC outperforms SaGe-Jena in terms of execution time, number of HTTP
calls and data transfer for all queries. Moreover, SaGe-AC provides complete
result for all queries (20 queries) except the query Q30, while SaGe-Jena provides
complete results for only three queries (Q12, Q20 and Q22).</p>
          <p>Figure 6a presents results for the non-transitive queries with SaGe-AC,
SaGeJena and Comunica. SaGe-AC outperforms SaGe-Jena and Comunica in term
of the execution time, the number of HTTP calls and the data transfer. These
results demonstrate empirically the performance of automata compression
approach compared to Communica and SaGe-Jena decomposition of property path
(a) Queries without transitive
closure expressions
(b) Queries with at least one transitive closure
expression
Fig. 6: gMark queries using SaGe-A, SaGe-AC, SaGe-Jena (logarithmic scale).
queries. These results demonstrate also the advantage of using the web
preemption instead of TPF. The web preemption ensures queries completeness, as TPF,
while providing a more expressive interface. Therefore, operations that could be
costly to compute on the client-side are supported directly by the server-side.
Consequently, communication costs are significantly decreased and only final
results are transferred to the client. Obviously, the more operators supported by
the server, the better the performance will be.</p>
          <p>
            Of course, it is possible to optimize queries evaluation with TPF [
            <xref ref-type="bibr" rid="ref23">23</xref>
            ]. Using a
better join ordering could also improve queries performance [
            <xref ref-type="bibr" rid="ref22">22</xref>
            ]. This explains
why Comunica offers better performance than SaGe-Jena on the non-transitive
queries. However, even if these optimizations could decrease the number of HTTP
calls sent to the server and execution times, they do not change the data transfer
for client-side operators.
6
          </p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper, we proposed an algorithm to decompose property path queries
into BGPs subqueries. As BGP subqueries are guaranteed to terminate under
the web preemption model, this ensures that property path queries are processed
online and return complete answers. Compared to the state of art,
decomposing into BGPs subqueries is much more efficient than decomposing into Triple
Pattern queries. It finally achieves better execution time. We modeled property
path expressions as an automaton, and we demonstrated that generating BGPs
subqueries instead of triple pattern subqueries can be seen as compressing of
the automaton. We implemented our approach in smart client for a preemptable
SPARQL server. We demonstrated that our approach outperforms existing
approach in term of generated subqueries, data transfer and execution time while
supporting full SPARQL 1.1 property path expressions.</p>
      <p>The current approach has several limitations. First, in case of simple
transitive closure such as ?x sameas* ?y, then there is no room for BGP
optimisation. Second, when property path expressions are included inside a BGP, i.e.
?x rdf:type Person . ?x sameas* ?y, then joins have to processed in the
smart client, generating high data transfer. Such limitations are the consequences
of the lack of support for property path expressions on restricted SPARQL
servers. Improving performances for property path expressions requires to find
a way to process fairly property path expressions on server-side. This is clearly
challenging as property paths may explore a large part of the knowledge graph
while remembering visited nodes.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Adrian</surname>
            <given-names>Skubella</given-names>
          </string-name>
          , Daniel Janke,
          <string-name>
            <surname>S.S.</surname>
          </string-name>
          : Beseppi:
          <article-title>Semantic-based benchmarking of property path implementations</article-title>
          .
          <source>European Semantic Web Conference</source>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Aranda</surname>
            ,
            <given-names>C.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polleres</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Umbrich</surname>
          </string-name>
          , J.:
          <article-title>Strategies for executing federated queries in SPARQL1.1</article-title>
          . In: 13th International Semantic Web Conference, (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Arenas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Conca</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pérez</surname>
          </string-name>
          , J.:
          <article-title>Counting beyond a yottabyte, or how SPARQL 1.1 property paths will prevent adoption of the standard</article-title>
          .
          <source>In: 21st World Wide Web Conference</source>
          <year>2012</year>
          , WWW. pp.
          <fpage>629</fpage>
          -
          <lpage>638</lpage>
          . ACM (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Bagan</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bonifati</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ciucanu</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fletcher</surname>
            ,
            <given-names>G.H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lemay</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Advokaat</surname>
          </string-name>
          , N.:
          <article-title>gmark: Schema-driven generation of graphs and queries</article-title>
          .
          <source>IEEE Transactions on Knowledge and Data Engineering</source>
          <volume>29</volume>
          (
          <issue>4</issue>
          ),
          <fpage>856</fpage>
          -
          <lpage>869</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Baier</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Daroch</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reutter</surname>
            ,
            <given-names>J.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vrgoč</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Evaluating navigational rdf queries over the web</article-title>
          .
          <source>In: Proceedings of the 28th ACM Conference on Hypertext and Social Media</source>
          . pp.
          <fpage>165</fpage>
          -
          <lpage>174</lpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Bonifati</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fletcher</surname>
            ,
            <given-names>G.H.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Voigt</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yakovets</surname>
            ,
            <given-names>N.: Querying</given-names>
          </string-name>
          <string-name>
            <surname>Graphs</surname>
          </string-name>
          .
          <source>Synthesis Lectures on Data Management</source>
          , Morgan &amp; Claypool Publishers (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Bonifati</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Martens</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Timm</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Navigating the maze of wikidata query logs</article-title>
          .
          <source>In: The World Wide Web Conference</source>
          . pp.
          <fpage>127</fpage>
          -
          <lpage>138</lpage>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Brüggemann-Klein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Regular expressions into finite automata</article-title>
          .
          <source>Theoretical Computer Science</source>
          <volume>120</volume>
          (
          <issue>2</issue>
          ),
          <fpage>197</fpage>
          -
          <lpage>213</lpage>
          (
          <year>1993</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Buil-Aranda</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hogan</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Umbrich</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vandenbussche</surname>
          </string-name>
          , P.Y.:
          <article-title>Sparql webquerying infrastructure: Ready for action</article-title>
          ? In: International Semantic Web Conference. pp.
          <fpage>277</fpage>
          -
          <lpage>293</lpage>
          . Springer (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Hartig</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Letter</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pérez</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>A formal framework for comparing linked data fragments</article-title>
          .
          <source>In: 16th International Semantic Web Conference, ISWC. Lecture Notes in Computer Science</source>
          , vol.
          <volume>10587</volume>
          , pp.
          <fpage>364</fpage>
          -
          <lpage>382</lpage>
          . Springer (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Hasnain</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mehmood</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          , e Zainab ang Aidan Hogan,
          <string-name>
            <surname>S.S.:</surname>
          </string-name>
          <article-title>SPORTAL: profiling the content of public SPARQL endpoints</article-title>
          .
          <source>Int. J. Semantic Web Inf. Syst</source>
          .
          <volume>12</volume>
          (
          <issue>3</issue>
          ),
          <fpage>134</fpage>
          -
          <lpage>163</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Jachiet</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Genevès</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gesbert</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Layaïda</surname>
          </string-name>
          , N.:
          <article-title>On the optimization of recursive relational queries: Application to graph queries</article-title>
          .
          <source>In: SIGMOD 2020-ACM International Conference on Management of Data</source>
          . pp.
          <fpage>1</fpage>
          -
          <lpage>23</lpage>
          (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Kameda</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Weiner</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>On the state minimization of nondeterministic finite automata</article-title>
          .
          <source>IEEE Transactions on Computers</source>
          <volume>100</volume>
          (
          <issue>7</issue>
          ),
          <fpage>617</fpage>
          -
          <lpage>627</lpage>
          (
          <year>1970</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Kostylev</surname>
            ,
            <given-names>E.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reutter</surname>
            ,
            <given-names>J.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Romero</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vrgoč</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Sparql with property paths</article-title>
          .
          <source>In: International Semantic Web Conference</source>
          . pp.
          <fpage>3</fpage>
          -
          <lpage>18</lpage>
          . Springer (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Losemann</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Martens</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>The complexity of evaluating path expressions in sparql</article-title>
          .
          <source>In: Proceedings of the 31st ACM SIGMOD-SIGACT-SIGAI symposium on Principles of Database Systems</source>
          . pp.
          <fpage>101</fpage>
          -
          <lpage>112</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Minier</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Skaf-Molli</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Molli</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          : Sage:
          <article-title>Web preemption for public SPARQL query services</article-title>
          .
          <source>In: The World Wide Web Conference, The WebConf</source>
          <year>2019</year>
          . pp.
          <fpage>1268</fpage>
          -
          <lpage>1278</lpage>
          (
          <year>2019</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Pérez</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arenas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gutiérrez</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Semantics and complexity of SPARQL</article-title>
          .
          <source>ACM Transations on Database Systems</source>
          <volume>34</volume>
          (
          <issue>3</issue>
          ),
          <volume>16</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>16</lpage>
          :
          <fpage>45</fpage>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Polleres</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kamdar</surname>
            ,
            <given-names>M.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fernández</surname>
            ,
            <given-names>J.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tudorache</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Musen</surname>
            ,
            <given-names>M.A.</given-names>
          </string-name>
          :
          <article-title>A more decentralized vision for linked data</article-title>
          .
          <source>In: 2nd Workshop on Decentralizing the Semantic Web (DeSemWeb</source>
          <year>2018</year>
          )
          <article-title>co-located with ISWC 2018 (</article-title>
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Reutter</surname>
            ,
            <given-names>J.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Soto</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vrgoč</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Recursion in sparql</article-title>
          . In: International Semantic Web Conference. pp.
          <fpage>19</fpage>
          -
          <lpage>35</lpage>
          . Springer (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meier</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lausen</surname>
          </string-name>
          , G.:
          <article-title>Foundations of SPARQL query optimization</article-title>
          .
          <source>In: Database Theory - ICDT</source>
          <year>2010</year>
          . pp.
          <fpage>4</fpage>
          -
          <lpage>33</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Steve</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Andy</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>SPARQL 1.1 query language</article-title>
          .
          <source>In: Recommendation W3C</source>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Stocker</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seaborne</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bernstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kiefer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Reynolds</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Sparql basic graph pattern optimization using selectivity estimation</article-title>
          .
          <source>In: Proceedings of the 17th international conference on World Wide Web</source>
          . pp.
          <fpage>595</fpage>
          -
          <lpage>604</lpage>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Van Herwegen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Verborgh</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mannens</surname>
          </string-name>
          , E., Van de Walle, R.:
          <article-title>Query execution optimization for clients of triple pattern fragments</article-title>
          .
          <source>In: European Semantic Web Conference</source>
          . pp.
          <fpage>302</fpage>
          -
          <lpage>318</lpage>
          . Springer (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Verborgh</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sande</surname>
            ,
            <given-names>M.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hartig</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Herwegen</surname>
            ,
            <given-names>J.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vocht</surname>
            ,
            <given-names>L.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Meester</surname>
            ,
            <given-names>B.D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haesendonck</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Colpaert</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Triple pattern fragments: A low-cost knowledge graph interface for the web</article-title>
          .
          <source>J. Web Sem</source>
          .
          <fpage>37</fpage>
          -
          <issue>38</issue>
          ,
          <fpage>184</fpage>
          -
          <lpage>206</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Yakovets</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Godfrey</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gryz</surname>
          </string-name>
          , J.:
          <article-title>Waveguide: Evaluating SPARQL property path queries</article-title>
          .
          <source>In: 18th International Conference on Extending Database Technology</source>
          ,
          <string-name>
            <surname>EDBT</surname>
          </string-name>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Yamagaki</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sidhu</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kamiya</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>High-speed regular expression matching engine using multi-character nfa</article-title>
          .
          <source>In: 2008 International Conference on Field Programmable Logic and Applications</source>
          . pp.
          <fpage>131</fpage>
          -
          <lpage>136</lpage>
          . IEEE (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>