<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">How to execute SPARQL property path queries online and get complete results?</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Julien</forename><surname>Aimonier-Davat</surname></persName>
							<email>julien.aimonier-davat@univ-nantes.fr</email>
							<affiliation key="aff0">
								<orgName type="institution">LS2N -University of Nantes</orgName>
								<address>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Hala</forename><surname>Skaf-Molli</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">LS2N -University of Nantes</orgName>
								<address>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Pascal</forename><surname>Molli</surname></persName>
							<email>pascal.molli@univ-nantes.fr</email>
							<affiliation key="aff0">
								<orgName type="institution">LS2N -University of Nantes</orgName>
								<address>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">How to execute SPARQL property path queries online and get complete results?</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">9E96F611FD38CB8681EFAE4F6C5CF1E8</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T02:55+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><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></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><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 <ref type="bibr" target="#b6">[7]</ref>. 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 <ref type="bibr" target="#b17">[18,</ref><ref type="bibr" target="#b10">11,</ref><ref type="bibr" target="#b15">16]</ref>. 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 <ref type="bibr" target="#b1">[2]</ref>. Another option is to rely on restricted SPARQL servers that ensure the termination of supported SPARQL queries such as Triple Pattern Fragment (TPF) servers <ref type="bibr" target="#b23">[24]</ref> or Preemptable servers <ref type="bibr" target="#b15">[16]</ref> 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 (b) Q2: list of similar entities on DBPedia Fig. <ref type="figure">1</ref>: Property path queries on online KGs a set of triple patterns. Unlike TPF servers, Preemptable servers support BGPs. 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. 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. 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. Finally, the conclusion is outlined in Section 6.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Related Works</head><p>Property paths were introduced in SPARQL 1.1<ref type="foot" target="#foot_0">2</ref> 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 <ref type="bibr" target="#b18">[19,</ref><ref type="bibr" target="#b5">6]</ref> proposed to compute such queries but, computing transitive closure over large graphs remains costly.</p><p>Breadth First Search or Depth First Search algorithms compute transitive closures with a time complexity in O(|E| + |V |) and a space complexity in O(|V | 2 ), with E and V the finite set of KG edges and vertices, respectively. Even if different optimisations have been proposed <ref type="bibr" target="#b24">[25,</ref><ref type="bibr" target="#b11">12]</ref> 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. 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 <ref type="bibr" target="#b8">[9]</ref> 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 Q 1 Figure <ref type="figure">1</ref> returns no result on Wikidata because it has been stopped after running more than 60s. The Q 2<ref type="foot" target="#foot_1">3</ref> 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 <ref type="bibr" target="#b1">[2]</ref>. 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 <ref type="bibr" target="#b1">[2]</ref>. 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) <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b23">24]</ref> or the preemptable server SaGe <ref type="bibr" target="#b15">[16]</ref>. 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 <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b23">24]</ref> 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><p>SaGe implements the web preemption <ref type="bibr" target="#b15">[16]</ref> 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.</p><p>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 <ref type="bibr" target="#b25">[26]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Property Path Expressions and Automata</head><p>We recall briefly definitions related to the proposal of the paper.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">SPARQL property path queries</head><p>SPARQL Queries : We follow the notation from <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b19">20]</ref> 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) ∈ (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.</p><formula xml:id="formula_0">1. A tuple from (I ∪ L ∪ V ) × (I ∪ V ) × (I ∪ L ∪ V ) is a triple pattern.</formula><p>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).</p><p>SPARQL Property Path Queries: The SPARQL 1.1 language <ref type="bibr" target="#b20">[21]</ref> introduces property paths. We adopt the same syntax as <ref type="bibr" target="#b13">[14]</ref> to define operator property Definition 1 (Property Path Expressions <ref type="bibr" target="#b13">[14]</ref>).</p><p>Property path expressions are defined by the grammar:</p><formula xml:id="formula_1">e := a | e − | e 1 • e 2 | e 1 + e 2 | e + | e * | e? | !a 1 , . . . , a k | !a − 1 , . . . , a − k ,</formula><p>where a, a Definition 2 (Property Path <ref type="bibr" target="#b13">[14]</ref>). A property path pattern is a triple in</p><formula xml:id="formula_2">(I ∪ L ∪ V ) × P P × (I ∪ L ∪ V ).</formula><p>Property path patterns are incompatible with triple patterns, because they allow property path expressions in predicate positions but forbid variables in these positions.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Modeling property path expressions via automata</head><p>A finite automaton is often used to represent a property path expression <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b7">8]</ref>. For example, the property path P = ((a•b•c)+(d•e)) + can be represented by the automaton described in Figure <ref type="figure" target="#fig_0">2a</ref>. We call such automaton a mono-predicate automaton.</p><p>To evaluate the query Q=select * where {:A P ?y} over the graph G 1 in Figure <ref type="figure" target="#fig_0">2c</ref>, an automaton-based approach <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b4">5]</ref> processes as follows:</p><p>1. A search is initialized from the configuration c 0 =(q 0 , :A), where q 0 is the initial state of the automaton, and :A is the subject of the property path pattern of Q .</p><p>2. From the configuration c 0 , states q 1 and q 4 could be reached. q 1 is reached as the evaluation of :A a ?y G1 = {?y → :B}. Therefore, the configuration c 1 = (q 1 , :B) is built. q 4 is not reached as :A d ?y G1 = ∅.</p><p>3. From the configuration c 1 , the state q 2 is reached as :B b ?y G1 = {?y → :C}, the configuration c 2 = (q 2 , :C) is built.</p><p>4. From the configuration c 2 , q 3 is reached with :C c ?y G1 = {?y → :D}, c 3 = (q 3 , :D) is built. As q 3 is a final state, {?y → :D} is a solution to the query Q.</p><p>5. The process continues from c 3 , but no more solutions can be found. The algorithm terminates when all the configurations have been found.</p><p>As we can see, all evaluations performed on G 1 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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Compression of Property Path Automata</head><p>The mono-predicate automaton in Figure <ref type="figure" target="#fig_0">2a</ref> is equivalent to the automaton presented in Figure <ref type="figure" target="#fig_0">2b</ref>, 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.</p><p>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.</p><p>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 <ref type="figure" target="#fig_0">2b</ref> is minimal, while the multi-predicate automaton presented in Figure <ref type="figure" target="#fig_1">3d</ref> 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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Algorithm for compressing path expression automata</head><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:</p><p>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.</p><p>2. Second, we compress the automaton produced by the previous step considering alternatives to produce a minimal compressed automaton. For example, in the mono-predicate automaton of the property path P = ((a</p><formula xml:id="formula_3">• b • c)+(d•e)) +</formula><p>, the sequence (a•b•c) corresponds to the paths &lt;(q 0 , a, q 1 ), (q 1 , b, q 2 ), (q 2 , c, q 3 )&gt;, &lt;(q 3 , a, q 1 ), (q 1 , b, q 2 ), (q 2 , c, q 3 )&gt;, &lt;(q 5 , a, q 1 ), (q 1 , b, q 2 ), (q 2 , c, q 3 )&gt; where q 0 , q 3 and q 5 are non-intermediate states, while q 1 and q 2 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  <ref type="figure" target="#fig_0">2a</ref> 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 <ref type="figure" target="#fig_0">2a</ref>. Algorithm 1 starts by considering all intermediate states. In this example q 1 , q 2 and q 4 . 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 <ref type="figure" target="#fig_1">3a</ref> presents the automaton obtained after considering the intermedi- ate state q 1 . At this step, paths that go through state q 1 are found and replaced. For example, the two consecutive transitions (q 0 , a, q 1 ), (q 1 , b, q 2 ), where predicate path expressions a and b are the operands of the sequence (a•b), are replaced by the transition (q 0 , a/b, q 2 ). In Figure <ref type="figure" target="#fig_1">3b</ref> it is paths that go through state q 2 that are found and replaced. Of course, transitions introduced in the previous steps are considered. Thus, the two consecutive transitions (q 0 , a/b, q 2 ), (q 2 , c, q 3 ) are replaced by the transition (q 0 , a/b/c, q 3 ). 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 <ref type="figure" target="#fig_1">3c</ref> presents the automaton obtained after considering the last intermediate state q 4 . At the end, all paths that go through states q 1 , q 2 or q 4 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 <ref type="figure" target="#fig_1">3d</ref>. This multi-predicate automaton is minimal if we consider a server that only supports triple patterns and BGPs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Algorithm 1: Compression sequence of path expressions</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.2">Processing alternative path expressions</head><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 = (a 1 + ... + a n ) 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. 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. 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 <ref type="figure" target="#fig_1">3d</ref> the two transitions (q 0 , a/b/c, q 3 ) and (q 0 , d/e, q 3 ) are the two clauses of the expression</p><formula xml:id="formula_4">(a • b • c) + (d • e).</formula><p>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 <ref type="bibr" target="#b12">[13]</ref>. 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 <ref type="figure" target="#fig_0">2a</ref> and imagine that sequences have already been processed, resulting in the automaton in Figure <ref type="figure" target="#fig_1">3d</ref>. To perform the second transformation, i.e. merge the equivalent states, first, the automaton should be minimized. In Figure <ref type="figure" target="#fig_3">4a</ref>, the two equivalent states q 3 and q 5 are merged into a new state q 35 . Then, transitions that share the same sources and destinations are merged together. For example, the two transitions (q 0 , abc, q 35 ), (q 0 , de, q 35 ) are part of the same alternative expression ((a</p><formula xml:id="formula_5">• b • c) + (d • e)),</formula><p>consequently, they are merged into a new transition (q 0 , (a/b/c+d/e), q 35 ). Here, we use the delimiter (+) to be able to rewrite this expression as an union of BGPs. Finally, the resulting automaton in Figure <ref type="figure" target="#fig_3">4b</ref> 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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Experimental Study</head><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?</p><p>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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.1">Experimental setup</head><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 <ref type="bibr" target="#b0">[1]</ref> 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 <ref type="bibr" target="#b0">[1]</ref>, an approach follows the W3C semantics if each of the 236 queries returns a complete and correct result. In 2012, for complexity reasons <ref type="bibr" target="#b14">[15,</ref><ref type="bibr" target="#b2">3]</ref>, 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 <ref type="bibr" target="#b2">[3]</ref>. We used gMark framework <ref type="bibr" target="#b3">[4]</ref> 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 Jena<ref type="foot" target="#foot_3">5</ref> , 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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Servers configurations:</head><p>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 <ref type="bibr" target="#b0">[1]</ref>, 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  time between starting query execution and the production of the final results by the client.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.2">Experimental results</head><p>Presented results correspond to the average obtained of three successive execution of the queries workloads. We fixed a time out of 30 minutes.</p><p>Does compressed automata approach follow the W3C semantics? We run the BeSEPPI benchmark with SaGe-AC, Comunica and SaGe-Jena clients. Table <ref type="table" target="#tab_2">1</ref> 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 <ref type="figure">5</ref> 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 Fig. <ref type="figure">5</ref>: gMark queries using SaGe-A and SaGe-AC (logarithmic scale).</p><p>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 <ref type="figure" target="#fig_6">6</ref> shows the execution time, the number of HTTP calls and the data transfer for each query in the workload for three approaches.</p><p>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 <ref type="figure" target="#fig_6">6b</ref> 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).  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 <ref type="bibr" target="#b22">[23]</ref>. Using a better join ordering could also improve queries performance <ref type="bibr" target="#b21">[22]</ref>. 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.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conclusion</head><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></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Fig. 2 :</head><label>2</label><figDesc>Fig. 2: For the path expression P = ((a • b • c) + (d • e)) + : (a) mono-predicate automaton of P ; (b) minimal multi-predicate automaton of P ; (c) graph G 1 path expressions, i.e. the inverse path is denoted by e − and alternative path e 1 + e 2 4 .</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Fig. 3 :</head><label>3</label><figDesc>Fig.3: Running Algorithm 1 on the automaton depicted in Figure2a</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>2 foreach k ∈ intermediate state do 3 foreach 6 l</head><label>236</label><figDesc>Input: A mono-predicate automaton Output: A multi-predicate automaton that defines BGP decomposition 1 begin i ∈ state and ∃ transition(i,k) do 4 foreach j ∈ state and ∃ transition(k,j) do 5 create new transition (i,j) = concat(label (i,k),label(k,j)) transitions for which the source or the destination is an intermediate state 13 remove intermediate states 14 end</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Fig. 4 :</head><label>4</label><figDesc>Fig. 4: Compressing alternative expressions on the automaton depicted in Figure 3d</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 6a presents results</head><label></label><figDesc>Figure6apresents results for the non-transitive queries with SaGe-AC, SaGe-Jena 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</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Fig. 6 :</head><label>6</label><figDesc>Fig. 6: gMark queries using SaGe-A, SaGe-AC, SaGe-Jena (logarithmic scale).</figDesc><graphic coords="14,289.22,125.80,200.58,189.74" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 1 :</head><label>1</label><figDesc>Number of queries that returned incomplete, incorrect, incomplete and incorrect or complete and correct result sets, or threw an error</figDesc><table><row><cell>Property path expression</cell><cell cols="3">Comunica</cell><cell></cell><cell cols="4">SaGe-Jena</cell><cell></cell><cell></cell><cell cols="3">SaGe-AC</cell><cell></cell><cell></cell></row><row><cell>Incompl. &amp; Correct</cell><cell>Complete &amp; Incor.</cell><cell>Incompl. &amp; Incor.</cell><cell>Complete &amp; Correct</cell><cell>Error</cell><cell>Incompl. &amp; Correct</cell><cell>Complete &amp; Incor.</cell><cell>Incompl. &amp; Incor.</cell><cell>Complete &amp; Correct</cell><cell>Error</cell><cell>Incompl. &amp; Correct</cell><cell>Complete &amp; Incor.</cell><cell>Incompl. &amp; Incor.</cell><cell>Complete &amp; Correct</cell><cell>Error</cell><cell>Total</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_0">https://www.w3.org/TR/sparql11-property-paths/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_1">Q1 and Q2 are executed at the public SPARQL endpoints of Wikidata, and DBPedia, respectively, at August 5 2020.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_2">SPARQL 1.1 uses symbols ^e and e1|e2 for inverse and alternative path, respectively</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_3">https://jena.apache.org/</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Beseppi: Semantic-based benchmarking of property path implementations</title>
		<author>
			<persName><forename type="first">Adrian</forename><surname>Skubella</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Daniel</forename><surname>Janke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">S</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">European Semantic Web Conference</title>
				<imprint>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Strategies for executing federated queries in SPARQL1</title>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">B</forename><surname>Aranda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Polleres</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Umbrich</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">13th International Semantic Web Conference</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">1</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Counting beyond a yottabyte, or how SPARQL 1.1 property paths will prevent adoption of the standard</title>
		<author>
			<persName><forename type="first">M</forename><surname>Arenas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Conca</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Pérez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">21st World Wide Web Conference 2012</title>
				<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="629" to="638" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">gmark: Schema-driven generation of graphs and queries</title>
		<author>
			<persName><forename type="first">G</forename><surname>Bagan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Bonifati</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Ciucanu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">H</forename><surname>Fletcher</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Lemay</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Advokaat</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Knowledge and Data Engineering</title>
		<imprint>
			<biblScope unit="volume">29</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="856" to="869" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Evaluating navigational rdf queries over the web</title>
		<author>
			<persName><forename type="first">J</forename><surname>Baier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Daroch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">L</forename><surname>Reutter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Vrgoč</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 28th ACM Conference on Hypertext and Social Media</title>
				<meeting>the 28th ACM Conference on Hypertext and Social Media</meeting>
		<imprint>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="165" to="174" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Querying Graphs</title>
		<author>
			<persName><forename type="first">A</forename><surname>Bonifati</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">H L</forename><surname>Fletcher</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Voigt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Yakovets</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Synthesis Lectures on Data Management</title>
				<imprint>
			<publisher>Morgan &amp; Claypool Publishers</publisher>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Navigating the maze of wikidata query logs</title>
		<author>
			<persName><forename type="first">A</forename><surname>Bonifati</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Martens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Timm</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The World Wide Web Conference</title>
				<imprint>
			<date type="published" when="2019">2019</date>
			<biblScope unit="page" from="127" to="138" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Regular expressions into finite automata</title>
		<author>
			<persName><forename type="first">A</forename><surname>Brüggemann-Klein</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Theoretical Computer Science</title>
		<imprint>
			<biblScope unit="volume">120</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="197" to="213" />
			<date type="published" when="1993">1993</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Sparql webquerying infrastructure: Ready for action?</title>
		<author>
			<persName><forename type="first">C</forename><surname>Buil-Aranda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Hogan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Umbrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">Y</forename><surname>Vandenbussche</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Semantic Web Conference</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="277" to="293" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">A formal framework for comparing linked data fragments</title>
		<author>
			<persName><forename type="first">O</forename><surname>Hartig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Letter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Pérez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">16th International Semantic Web Conference</title>
		<title level="s">ISWC. Lecture Notes in Computer Science</title>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="volume">10587</biblScope>
			<biblScope unit="page" from="364" to="382" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">SPORTAL: profiling the content of public SPARQL endpoints</title>
		<author>
			<persName><forename type="first">A</forename><surname>Hasnain</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Q</forename><surname>Mehmood</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">S</forename><surname>Zainab Ang Aidan Hogan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Int. J. Semantic Web Inf. Syst</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="134" to="163" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">On the optimization of recursive relational queries: Application to graph queries</title>
		<author>
			<persName><forename type="first">L</forename><surname>Jachiet</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Genevès</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Gesbert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Layaïda</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SIGMOD 2020-ACM International Conference on Management of Data</title>
				<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="page" from="1" to="23" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">On the state minimization of nondeterministic finite automata</title>
		<author>
			<persName><forename type="first">T</forename><surname>Kameda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Weiner</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Computers</title>
		<imprint>
			<biblScope unit="volume">100</biblScope>
			<biblScope unit="issue">7</biblScope>
			<biblScope unit="page" from="617" to="627" />
			<date type="published" when="1970">1970</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Sparql with property paths</title>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">V</forename><surname>Kostylev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">L</forename><surname>Reutter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Romero</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Vrgoč</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Semantic Web Conference</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="3" to="18" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">The complexity of evaluating path expressions in sparql</title>
		<author>
			<persName><forename type="first">K</forename><surname>Losemann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Martens</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 31st ACM SIGMOD-SIGACT-SIGAI symposium on Principles of Database Systems</title>
				<meeting>the 31st ACM SIGMOD-SIGACT-SIGAI symposium on Principles of Database Systems</meeting>
		<imprint>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="101" to="112" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Sage: Web preemption for public SPARQL query services</title>
		<author>
			<persName><forename type="first">T</forename><surname>Minier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Skaf-Molli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Molli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The World Wide Web Conference</title>
				<meeting><address><addrLine>The WebConf</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2019">2019. 2019</date>
			<biblScope unit="page" from="1268" to="1278" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Semantics and complexity of SPARQL</title>
		<author>
			<persName><forename type="first">J</forename><surname>Pérez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Arenas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Gutiérrez</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Transations on Database Systems</title>
		<imprint>
			<biblScope unit="volume">34</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page">45</biblScope>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">A more decentralized vision for linked data</title>
		<author>
			<persName><forename type="first">A</forename><surname>Polleres</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">R</forename><surname>Kamdar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">D</forename><surname>Fernández</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Tudorache</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">A</forename><surname>Musen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">2nd Workshop on Decentralizing the Semantic Web (DeSemWeb 2018) co-located with ISWC 2018</title>
				<imprint>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Recursion in sparql</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">L</forename><surname>Reutter</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Soto</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Vrgoč</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Semantic Web Conference</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="19" to="35" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Foundations of SPARQL query optimization</title>
		<author>
			<persName><forename type="first">M</forename><surname>Schmidt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Meier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Lausen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Database Theory -ICDT</title>
				<imprint>
			<date type="published" when="2010">2010. 2010</date>
			<biblScope unit="page" from="4" to="33" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">SPARQL 1.1 query language</title>
		<author>
			<persName><forename type="first">H</forename><surname>Steve</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Andy</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Recommendation W3C</title>
				<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Sparql basic graph pattern optimization using selectivity estimation</title>
		<author>
			<persName><forename type="first">M</forename><surname>Stocker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Seaborne</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Bernstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Kiefer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Reynolds</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 17th international conference on World Wide Web</title>
				<meeting>the 17th international conference on World Wide Web</meeting>
		<imprint>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="595" to="604" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Query execution optimization for clients of triple pattern fragments</title>
		<author>
			<persName><forename type="first">J</forename><surname>Van Herwegen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Verborgh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Mannens</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Van De Walle</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">European Semantic Web Conference</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="302" to="318" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Triple pattern fragments: A low-cost knowledge graph interface for the web</title>
		<author>
			<persName><forename type="first">R</forename><surname>Verborgh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">V</forename><surname>Sande</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Hartig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">V</forename><surname>Herwegen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">D</forename><surname>Vocht</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">D</forename><surname>Meester</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Haesendonck</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Colpaert</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">J. Web Sem</title>
		<imprint>
			<biblScope unit="volume">37</biblScope>
			<biblScope unit="page" from="184" to="206" />
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">Waveguide: Evaluating SPARQL property path queries</title>
		<author>
			<persName><forename type="first">N</forename><surname>Yakovets</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Godfrey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Gryz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">18th International Conference on Extending Database Technology</title>
				<imprint>
			<publisher>EDBT</publisher>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">High-speed regular expression matching engine using multi-character nfa</title>
		<author>
			<persName><forename type="first">N</forename><surname>Yamagaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Sidhu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Kamiya</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Conference on Field Programmable Logic and Applications</title>
				<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2008">2008. 2008</date>
			<biblScope unit="page" from="131" to="136" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
