<!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>Heuristics-based Query Reordering for Federated Queries in SPARQL 1.1 and SPARQL-LD</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Thanos Yannakis</string-name>
          <email>yannakis@ics.forth.gr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pavlos Fafalios</string-name>
          <email>fafalios@L3S.de</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yannis Tzitzikas</string-name>
          <email>tzitzik@ics.forth.gr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Computer Science Department, University of Crete</institution>
          ,
          <addr-line>and FORTH-ICS</addr-line>
          ,
          <country country="GR">Greece</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>L3S Research Center, Leibniz University of Hannover</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2018</year>
      </pub-date>
      <fpage>74</fpage>
      <lpage>88</lpage>
      <abstract>
        <p>The federated query extension of SPARQL 1.1 allows executing queries distributed over different SPARQL endpoints. SPARQL-LD is a recent extension of SPARQL 1.1 which enables to directly query any HTTP web source containing RDF data, like web pages embedded with RDFa, JSON-LD or Microformats, without requiring the declaration of named graphs. This makes possible to query a large number of data sources (including SPARQL endpoints, online resources, or even Web APIs returning RDF data) through a single one concise query. However, not optimal formulation of SPARQL 1.1 and SPARQL-LD queries can lead to a large number of calls to remote resources which in turn can lead to extremely high query execution times. In this paper, we address this problem and propose a set of query reordering methods which make use of heuristics to reorder a set of service graph patterns based on their restrictiveness, without requiring the gathering and use of statistics from the remote sources. Such a query optimization approach is widely applicable since it can be exploited on top of existing SPARQL 1.1 and SPARQL-LD implementations. Evaluation results show that query reordering can highly decrease the query-execution time, while a method that considers the number and type of unbound variables and joins achieves the optimal query plan in 88% of the cases.</p>
      </abstract>
      <kwd-group>
        <kwd>Query reordering</kwd>
        <kwd>SPARQL 1</kwd>
        <kwd>1</kwd>
        <kwd>SPARQL-LD</kwd>
        <kwd>Linked Data</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        A constantly increasing number of data providers publish their data on the Web
following the Linked Data principles and adopting standard RDF formats.
According to the Web Data Commons project [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], 38% of the HTML pages in the
Common Crawl3 of October 2016 contains structured data in the form of RDFa,
JSON-LD, Microdata, or Microformats4. This data comes from millions of
different pay-level-domains, meaning that the majority of Linked Data is nowadays
available through a large number of different data sources. The question is: how
can we efficiently query this large, distributed, and constantly increasing body
of knowledge?
      </p>
      <p>
        SPARQL [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is the de facto query language for retrieving and manipulating
RDF data. The SPARQL 1.1 Federated Query recommendation of W3C allows
executing queries distributed over different SPARQL endpoints [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ].
SPARQLLD [
        <xref ref-type="bibr" rid="ref7 ref8">7,8</xref>
        ] is an extension (generalization) of SPARQL 1.1 Federated Query which
extends the applicability of the service operator to enable querying any HTTP
web source containing RDF data, like online RDF files (RDF/XML, Turtle,
N3) or web pages embedded with RDFa, JSON-LD, or Microformats. Another
important characteristic of SPARQL-LD is that it does not require the named
graphs to have been declared, thus one can even fetch and query a dataset
returned by a portion of the query, i.e., whose URI is derived at query execution
time. Thereby, by writing a single concise query, one can query hundreds or
thousands of data sources, including SPARQL endpoints, online resources, or
even Web APIs returning RDF data [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
      </p>
      <p>However, not optimal query writing in both SPARQL 1.1 and SPARQL-LD
can lead to a very large number of service calls to remote resources, which in
turn can lead to an extremely high query execution time. Thus, there arises the
need for an effective query optimization method than can find a near-optimal
query execution plan. In addition, given the dynamic nature of Linked Data
and the capability offered by SPARQL-LD to query any remote HTTP resource
containing RDF data, we need a widely-applicable method that does not require
the use of statistics or metadata from the remote sources and that can operate
on top of existing SPARQL 1.1 and SPARQL-LD implementations.</p>
      <p>To this end, in this paper we propose and evaluate a set of query reordering
methods for SPARQL 1.1 and SPARQL-LD. We focus on fully heuristics-based
methods that reorder a query’s service graph patterns based on their
restrictiveness (selectivity), without requiring the gathering and use of statistics from
the remote sources. The objective is to decrease the number of intermediate
results and thus the number of calls to remote resources. We also propose the use
of a greedy algorithm for computing a near-optimal query execution plan for
cases of large number of service patterns.</p>
      <p>In a nutshell, in this paper we make the following contributions:
– We propose a set of heuristics-based query reordering methods for SPARQL
1.1 and SPARQL-LD, which can also exploit a greedy algorithm for
choosing a near-optimal query execution plan. The query optimizer is publicly
available as open source.5
– We report the results of an experimental evaluation which show that a
method that considers the number and type of unbound variables and the
number and type of joins achieves the optimal query plan in 88% of the
examined queries, while the greedy algorithm has an accuracy of 94% in
finding the reordering with the lowest cost.</p>
      <p>The rest of this paper is organized as follows: Section 2 presents the required
background and related works. Section 3 describes the proposed query reordering</p>
    </sec>
    <sec id="sec-2">
      <title>5 https://github.com/TYannakis/SPARQL-LD-Query-Optimizer</title>
      <sec id="sec-2-1">
        <title>Copyright held by the author(s). 75 QuWeDa 2018</title>
        <p>methods. Section 4 reports experimental results. Finally, Section 5 concludes the
paper and discusses interesting directions for future work.
2
2.1</p>
        <sec id="sec-2-1-1">
          <title>Background and Related Literature</title>
          <p>
            SPARQL-LD
The service operator of SPARQL 1.1 (service a P ) is defined as a graph
pattern P evaluated in the SPARQL endpoint specified by the URI a, while
(service ?X P ) is defined by assigning to the variable ?X all the URIs (of
endpoints) coming from partial results, i.e. that get bound after executing an initial
query fragment [
            <xref ref-type="bibr" rid="ref5">5</xref>
            ]. The idea behind SPARQL-LD is to enable the evaluation
of a graph pattern P not absolutely to a SPARQL endpoint a, but generally
to an RDF graph Gr specified by a Web Resource r. Thus, now a URI given
to the service operator can also be the dereferenceable URI of a resource, the
Web page of an entity (e.g., of a person), an ontology (OWL), Turtle or N3 file,
or even the URL of a service that dynamically creates and returns RDF data.
In case the URI is not the address of a SPARQL endpoint, the RDF data that
may exist in the resource are fetched at real-time and queried for the graph
pattern P . Currently, SPARQL-LD supports a variety of standard formats,
including RDF/XML, N-Triples, N3/Turtle, RDFa, JSON-LD, Microdata,
Microformats [
            <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
            ].
          </p>
          <p>
            SPARQL-LD is a generalization of SPARQL 1.1 in the sense that every query
that can be answered by SPARQL 1.1 can be also answered by SPARQL-LD.
Specifically, if the URI given to the service operator corresponds to a SPARQL
endpoint, then it works exactly as the original SPARQL 1.1 (the remote endpoint
evaluates the query and returns the result). Otherwise, instead of returning an
error (and no bindings), it tries to fetch and query the triples that may exist in
the given resource. SPARQL-LD has been implemented using Apache Jena [
            <xref ref-type="bibr" rid="ref1">1</xref>
            ],
an open source Java framework for building Semantic Web applications. The
implementation is available as open source6.
          </p>
          <p>Listing 1 shows a query that can be answered by SPARQL-LD. The query
returns all co-authors of Pavlos Fafalios together with the number of their
publications and the number of distinct conferences in which they have a publication.
The query first accesses the RDFa-embedded web page of Pavlos Fafalios to
collect his co-authors, then queries a SPARQL endpoint over DBLP to retrieve
the conferences, and finally accesses the URI of all co-authors to gather their
publications. Notice that the co-author URIs derive at query-execution time. In
the same query, one could further integrate data from any other web resource,
or from a web API which can return results in a standard RDF format.</p>
          <p>The query in Listing 1 is answered within a few seconds. However, if we
change the order of the first two service patterns, then its execution time is
dramatically increased to many minutes. To cope with this problem, in this paper
we propose methods to reorder the query’s service patterns and thus improve
the query execution time in case of non optimal query formulation.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>6 https://github.com/fafalios/sparql-ld</title>
      <sec id="sec-3-1">
        <title>Copyright held by the author(s). 76 QuWeDa 2018</title>
        <p>1 SELECT DISTINCT ?authorURI (count(distinct ?paper) AS ?numOfPapers)
2 (count(distinct ?series) AS ?numOfDiffConfs) WHERE {
3 SERVICE &lt;http://l3s.de/~fafalios/&gt; { ?p &lt;http://purl.org/dc/terms/creator&gt; ?authorURI }
4 SERVICE &lt;http://dblp.l3s.de/d2r/sparql&gt; {
5 ?p2 &lt;http://purl.org/dc/elements/1.1/creator&gt; ?authorURI .
6 ?p2 &lt;http://swrc.ontoware.org/ontology#series&gt; ?series }
7 SERVICE ?authorURI { ?paper &lt;http://purl.org/dc/elements/1.1/creator&gt; ?authorURI }
8 } GROUP BY ?authorURI ORDER BY DESC(?numOfPapers)</p>
        <p>Listing 1. Example SPARQL query that can be answered by SPARQL-LD.
2.2</p>
        <p>
          Related Works
SPARQL Endpoint Federation
The idea of query federation is to provide integrated access to distributed sources
on the Web. DARQ [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] and SemWIQ [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ] are two of the first systems to support
SPARQL query federation to multiple SPARQL endpoints. They provide access
to distributed RDF data sources using a mediator service that transparently
distributes the execution of queries to multiple endpoints. Given the need to
address query federation, in 2013 the SPARQL W3C working group proposed a
query federation extension for SPARQL 1.1 [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ]. Buil-Aranda et al. [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] describe
the syntax of this extension, formalize its semantics, and implement a static
optimization for queries that contain the OPTIONAL operator, the most costly
operator in SPARQL.
        </p>
        <p>
          There is also a plethora of query federation engines to support efficient
SPARQL query processing to multiple endpoints. The work in [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] provides
a comprehensive analysis, comparison, and evaluation of a large number of
SPARQL endpoint federation systems.
        </p>
        <p>
          The ANAPSID system [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ] adapts query execution schedulers to data
availability and run-time conditions. It stores information about the available
endpoints and the ontologies used to describe the data in order to decompose queries
into sub-queries that can be executed by the selected endpoints, while adaptive
physical operators are executed to produce answers as soon as responses from
the available remote sources are received. The query optimizer component of
ANAPSID exploits statistics about the distribution of values in the different
datasets in order to identify the best combination of sub-queries.
        </p>
        <p>
          The work in [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] proposes a heuristic-based approach for endpoint federation.
Basic graph patterns are decomposed into sub-queries that can be executed by
the available endpoints, while the endpoints are described in terms of the list
of predicates they contain. Similar to ANAPSID, sub-queries are combined in a
bushy tree execution plan, while the SPARQL 1.1 federation extension is used
to specify the URL of the endpoint where the sub-query will be executed.
        </p>
        <p>
          SPLENDID [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] is another endpoint federation system which relies on
statistical data obtained from VoID descriptions [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ]. For triple patterns with bound
variables not covered in the VoID statistics, SPLENDID sends ASK queries to
all the pre-selected data sources and removes those which fail the test. Bind and
hash joins are used to integrate the results of the sub-queries, while a dynamic
        </p>
      </sec>
      <sec id="sec-3-2">
        <title>Copyright held by the author(s). 77 QuWeDa 2018</title>
        <p>programming strategy is exploited to optimize the join order of SPARQL basic
graph patterns.</p>
        <p>
          ADERIS [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] is a query processing system for efficiently joining data from
multiple distributed endpoints. ADERIS decomposes federated SPARQL queries
into multiple source queries and integrates the results through an adaptive join
reordering method for which a cost model is defined.
        </p>
        <p>
          The FedX framework [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] provides join processing and grouping techniques
to minimize the number of requests to remote endpoints. Source selection is
performed without the need of preprocessed metadata. It relies on SPARQL
ASK queries and a cache which stores the most recent ASK requests. The input
query is forwarded to all of the data sources and those sources which pass the
SPARQL ASK test are selected. FedX uses a rule-based join optimizer which
considers the number of bound variables. One of the methods we examine in
this paper (UVC) is also based on the same heuristic.
        </p>
        <p>
          Regarding more recent works, SemaGrow [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] is a federated SPARQL querying
system that uses metadata about the federated data sources to optimize query
execution. The system balances between a query optimizer that introduces little
overhead, has appropriate fall backs in the absence of metadata, but at the same
time produces optimal plans in many situations. It also exploits non-blocking and
asynchronous stream processing to achieve efficiency and robustness.
        </p>
        <p>
          Finally, Odyssey [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] is a cost-based query optimization approach for
endpoint federation. It defines statistics for representing both entities and links
among datasets, and uses the computed statistics to estimate the size of
intermediate results. It also exploits dynamic programming to produce an efficient
query execution plan with a low number of intermediate results.
Our approach. In this work, we focus on optimizing SPARQL 1.1 and
SPARQLLD queries through plain query reordering. The input is a query containing two
or more service patterns, and the output is a near-optimal (in terms of query
execution time) reordering of the contained services, i.e., an optimized reordered
query. Given the dynamic nature of Linked Data as well as the advanced query
capabilities offered by SPARQL-LD (enabling to query any remote HTTP
resource containing or returning RDF data), we aim at providing a general query
reordering method that does not require statistics or metadata from the remote
resources and that, contrary to the aforementioned works, can be directly applied
on top of existing SPARQL 1.1 and SPARQL-LD implementation.
Selectivity-based Query Optimization
Another line of research has investigated optimization methods for non-federated
SPARQL queries based on selectivity estimation.
        </p>
        <p>
          The work in [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] defines and analyzes heuristics for selectivity-based
basic graph pattern optimization. The heuristics range from simple triple pattern
variable counting to more sophisticated selectivity estimation techniques that
consider pre-computed triple pattern statistics. Likewise, [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] describes a set of
        </p>
      </sec>
      <sec id="sec-3-3">
        <title>Copyright held by the author(s). 78 QuWeDa 2018</title>
        <p>
          heuristics for deciding which triple patterns of a SPARQL query are more
selective and thus it is in the benefit of the planner to evaluate them first. The
planner tries to maximize the number of merge joins and reduce intermediate
results by choosing triples patterns most likely to have high selectivity. [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ]
extends these works by considering more SPARQL expressions, in particular the
operators FILTER and GRAPH.
        </p>
        <p>
          In [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] the authors study the star and chain patterns with correlated
properties and propose two methods for estimating their selectivity based on
precomputed statistics. For star query patterns, Bayesian networks are constructed to
compactly represent the joint probability distribution over values of correlated
properties, while for chain query patterns the chain histogram is built which can
obtain a good balance between the estimation accuracy and space cost.
Our approach. Similar to [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] and [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ], we exploit heuristics for selectivity
estimation. However, we focus on reordering a set of service graph patterns in
order to optimize the execution of SPARQL 1.1 and SPARQL-LD queries. Some
of the heuristics we examine in this paper are based on the results of these
previous works.
3
        </p>
        <sec id="sec-3-3-1">
          <title>Query Reordering</title>
          <p>We first model query reordering as a cost minimization problem (Section 3.1).
Then we describe four heuristics-based methods for computing the cost of a
service graph pattern (Section 3.2). We also discuss how we handle some special
query cases (Section 3.3). At the end we motivate the need for a greedy algorithm
for computing a near-optimal reordering for cases of large number of service
graph patterns (Section 3.4).
3.1</p>
          <p>Problem Modeling
Let Q be a SPARQL query and let S = (s1, s2, . . . , sn) be a sequence of n
service patterns contained in Q. For a service pattern si, let gi be its nested
graph pattern and Bi be the list of bindings of Q before the execution of si. Our
objective is to compute a reordering S0 of S that minimizes its execution cost.
Formally:</p>
          <p>R∗ = argmin cost(S0) (1)</p>
          <p>S0</p>
          <p>In our case, the execution cost of a sequence of service patterns S0
corresponds to its total execution time. However, the execution time of a service
pattern si ∈ S0 highly depends on the query patterns that precede si, while the
bindings produced by si affect the execution time of the succeeding service
patterns. Considering the above, we can estimate cost(S0) as the weighted sum
of the cost of each service pattern si ∈ S0 given Bi. Formally:
cost(S0) =
n
X (cost(si|Bi) · wi)
i=1
(2)</p>
        </sec>
      </sec>
      <sec id="sec-3-4">
        <title>Copyright held by the author(s). 79 QuWeDa 2018</title>
        <p>where cost(si|Bi) expresses the cost of service pattern si given Bi (i.e., given
the already-bound variables before executing si), and wi is the weight of service
pattern si which expresses the degree up to which it influences the execution
time of the sequence S0. We define wi = n−i+1 . In this case, for a sequence of
n
four service patterns S0 = (s1, s2, s3, s4), the weights are: w1 = 1.0 (since s1
influences the execution time of 3 service patterns), w2 = 0.75 (s2 affects 2
service patterns), w3 = 0.5 (s3 affects 1 service pattern), and w4 = 0.25 (s4
does not affect any other service pattern).</p>
        <p>Now, the cost of each service pattern si can be estimated based on the
selectivity/restrictiveness of its graph pattern gi given Bi. Formally:
cost(si|Bi) = unrestrictiveness(gi|Bi)
(3)</p>
        <p>A service graph pattern that is very unrestrictive will return a large number
of intermediate results (large number of bindings), which in turn will increase
the number of calls to succeeding service patterns, resulting in higher total
execution time. In the query of Listing 1 for example, a large number of bindings
of the variables in the first service pattern will result in many calls of the second
service. Thus, our objective is to first execute the more restrictive service
patterns that will probably return small result sets.</p>
        <p>
          As proposed in [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] and [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ] (for the case of triple patterns), the
restrictiveness of a graph pattern can be determined by the number and type of new
(unbound) variables in the graph pattern. The most restrictive graph pattern can
be considered the one containing the less unbound variables (since fewer
bindings are expected). Regarding the type of the unbound variables, subjects can
be considered more restrictive than objects, and objects more restrictive than
predicates (usually there are more triples matching a predicate than a subject or
an object, and more triples matching an object than a subject) [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. Moreover,
the number and type of joins can also affect the restrictiveness of a graph
pattern since, for example, an unusual subject-predicate join will probably return
less bindings. Finally, literals and filter operators usually restrict the number
of bindings and thus increase the restrictiveness of a graph pattern. Below, we
define formulas for unrestrictiveness that consider the above factors.
3.2
        </p>
        <p>Methods for Estimating Unrestrictiveness
We examine four methods for computing the unrestrictiveness cost (Equation 3)
of a service graph pattern:
– I. Variable Count (VC)
– II. Unbound Variable Count (UVC)
– III. Weighted Unbound Variable Count (WUVC)
– IV. Joins-aware Weighted Unbound Variable Count (JWUVC)
I. Variable Count (VC). The first unrestrictiveness measure simply considers
the number of graph pattern variables without considering whether they are
bound or not. For a given graph pattern gi, let V (gi) be the set of variables of</p>
      </sec>
      <sec id="sec-3-5">
        <title>Copyright held by the author(s). 80 QuWeDa 2018</title>
        <p>gi. The unrestrictiveness of gi can be now defined as:</p>
        <p>unrestrictiveness(gi|Bi) = |V (gi)|
With the above formula, more variables in a graph pattern means higher
unrestrictiveness score. Consider for example the query in Listing 2. The second
service pattern contains one variable and is more likely to retrieve a smaller
number of results than the first one which contains three variables. Thus the
second service pattern is more restrictive and should be executed first.
1 SELECT * WHERE {
2 SERVICE &lt;http://resource1&gt; { ?s ?p ?o }
3 SERVICE &lt;http://resource2&gt; { ?s a :fish } }</p>
        <p>Listing 2. Example SPARQL query for VC reordering.</p>
        <p>II. Unbound Variable Count (UVC). A service pattern containing many
new unbound variables is more likely to retrieve a higher number of results
compared to a service pattern with less unbound variables. Thereby, we can
also consider the set of binding Bi before the execution of a service pattern si.
Let first V u(gi, Bi) be the set of new (unbound) variables of gi given Bi. The
unrestrictiveness of gi can be now defined as:</p>
        <p>unrestrictiveness(gi|Bi) = |V u(gi, Bi)|
Listing 3 shows an example for this case. After the execution of the first service
pattern, we should better run the third one since all its variables are already
bound. The second service pattern contains one unbound variable, although
its total number of variables is less than those of the third service pattern.
1 SELECT * WHERE {
2 SERVICE &lt;http://resource1&gt; {
3 &lt;http://entity1&gt; :birthPlace ?place1 ; :friend ?entity2 ; :workPlace ?place2 }
4 SERVICE &lt;http://resource2&gt; { ?entity2 a ?type }
5 SERVICE &lt;http://resource3&gt; { ?entity2 :birthPlace ?place1 ; :workPlace ?place2 } }</p>
        <p>Listing 3. Example SPARQL query for UVC reordering.</p>
        <p>III. Weighted Unbound Variable Count (WUVC). The above formulas
do not consider the type of the unbound variables in the graph pattern, i.e.,
whether they are in the subject, predicate or object position in the triple pattern.
For a graph pattern gi and a set of bindings Bi, let Vsu(gi, Bi), Vpu(gi, Bi) and
Vou(gi, Bi) be the set of subject, predicate and object unbound variables in gi,
respectively. Let also ws, wp and wo be the weights for subject, predicate and
object variables, respectively. The unrestrictiveness of gi can be now defined as:
unrestrictiveness(gi|Bi) = |Vsu(gi, Bi)| · ws + |Vpu(gi, Bi)| · wp + |Vou(gi, Bi)| · wo (6)</p>
        <p>
          According to [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], subjects are in general more restrictive than objects and
objects are more restrictive than predicates, i.e., there are usually more triples
        </p>
      </sec>
      <sec id="sec-3-6">
        <title>Copyright held by the author(s). 81 QuWeDa 2018 (4)</title>
        <p>
          (5)
matching a predicate than an object, and more triples matching an object than
a subject. When considering variables, selectivity is opposite: a subject variable
may return more bindings than an object variable and an object variable more
bindings than a predicate variable. Consider for example the query in Listing 4.
The subjects having Greece as the birth place (1st service pattern) are expected
to be more than the friends of George (2nd service pattern), while the friends
of George are expected to be more than the different properties that connect
George with Nick (3rd service pattern). Thus, one can define weights so that
ws &gt; wo &gt; wp. Based on the distribution of subjects, predicates and objects
in a large Linked Data dataset of more than 28 billion triples (gathered from
more than 650 thousand sources) [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], we define the following weights: ws = 1.0,
wo = 0.8, wp = 0.1. Moreover, if a variable exists in more than one triple pattern
position (e.g., both as subject or object), we consider it as being in the more
restrictive position.
1 SELECT * WHERE {
2 SERVICE &lt;http://resource1&gt; { ?entity1 :birthPlace :Greece }
3 SERVICE &lt;http://resource2&gt; { &lt;http://George&gt; :friend ?entity1 }
4 SERVICE &lt;http://resource3&gt; { &lt;http://George&gt; ?p &lt;http://Nick&gt; } }
        </p>
        <p>Listing 4. Example SPARQL query for WUVC reordering.</p>
        <p>
          IV. Joins-aware Weighted Unbound Variable Count (JWUVC). When
a graph pattern contains joins, its restrictiveness is usually increased depending
on the number and type of joins (star, chain, or unusual join) [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ]. For a graph
pattern gi, let J∗(gi), J→(gi), and J×(gi) be the number of star, chain, and
unusual joins in gi, respectively. We consider the subject-subject and
objectobject joins as star joins, the object-subject and subject-object as chain joins,
and all the others as unusual joins. Let also j∗, j→ and j× be the weights for star,
chain, and unusual joins, respectively. Based on the assumption that, in general,
unusual joins are much more restrictive than chain joins, and chain joins are more
restrictive than star joins [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ], one can define weights so that j× &gt; j→ &gt; j∗. We
define: j× = 1.0, j→ = 0.6, j∗ = 0.5. The following unrestrictiveness formula
considers both the number and the type of joins in the graph pattern gi:
unrestrictiveness(gi|Bi) = |Vsu(gi, Bi)| · ws + |Vpu(gi, Bi)| · wp + |Vou(gi, Bi)| · wo
1 + J∗(gi) · j∗ + J→(gi) · j→ + J×(gi) · j×
(7)
        </p>
        <p>Listing 5 shows an example for this case. The first service pattern contains
a star join, the second a chain join, and the third an unusual join. The unusual
join will probably return fewer results than the star and chain joins.
1 SELECT * WHERE {
2 SERVICE &lt;http://resource1&gt; { ?ent1 :birthPlace :Greece ; :workPlace :Germany }
3 SERVICE &lt;http://resource2&gt; { &lt;http://George&gt; :friend ?ent1 . ?ent1 :friend &lt;http://Nick&gt; }
4 SERVICE &lt;http://resource3&gt; { &lt;http://George&gt; ?p &lt;http://Nick&gt; . ?p :label "best friend" } }</p>
        <p>Listing 5. Example SPARQL query for JWUVC reordering.</p>
      </sec>
      <sec id="sec-3-7">
        <title>Copyright held by the author(s). 82 QuWeDa 2018</title>
        <p>In Section 4 we evaluate the effectiveness of the above four methods on finding
the optimal, in terms of query execution time, query reordering.
3.3</p>
        <p>
          Handling of Special Cases
Query plans with same cost. In case the lowest unrestrictiveness cost is the
same for two or more query reorderings, we consider the number of literals and
filter operators contained in the graph patterns. Literals are generally considered
more selective than URIs [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ], while a filter operator limits the bindings of the
filtered variable and thus increases the selectivity of the corresponding graph
pattern [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. Thus, we count the total number of literals and filter operators in
each service pattern, and consider it when we get query plans with the same
unrestrictiveness cost. If the corresponding service patterns contain the same
number of literals and filter operators, then we maintain their original ordering,
i.e., we order them based on their order in the input query.
        </p>
        <p>SERVICE within OPTIONAL. In case a service call is within an optional
pattern, then we separately reorder the service patterns that exist before and
after it. An optional pattern requires a left outer join and thus changing its order
can distort the query result.</p>
        <p>Variable in SERVICE clause. If a service clause contains a variable instead of a
URI, we should ensure that this variable gets bound before the execution of the
service pattern. Thereby, during reordering we ensure that all other services
containing this variable in their graph patterns are placed before the service
pattern having the variable in its clause.</p>
        <p>Projection variables. The set of variables that appear in the SELECT clause of a
service pattern are called the projection variables. Since these are part of the
answer and affect the size of the bindings, we only consider these variables in all
the proposed formulas.</p>
        <p>UNION operator, nested patterns, combination of triple and SERVICE patterns.
In this work we do not study the case of queries containing the UNION operator as
well as nested patterns. Such queries require the reordering of groups of service
patterns which is not currently supported by our implementation. In addition,
our implementation does not yet support the case of queries containing both
triple patterns (that query the “local” endpoint) and service patterns. We
leave the handling of these cases as part of our future work.
3.4</p>
        <p>Computing a near-optimal query-execution plan
Computing the unrestrictiveness score for all the different query reorderings
may be prohibitive for large number of service patterns, since the complexity
is n! (where n is the query’s number of service patterns). This applies in all
the proposed optimization methods apart from VC where no all permutations
are needed to be computed. For example, for queries with 5 service patterns
there are 5! (=720) different permutations, however for 10 service patterns this</p>
      </sec>
      <sec id="sec-3-8">
        <title>Copyright held by the author(s). 83 QuWeDa 2018</title>
        <p>number is increased to more than 3.6 million permutations and for 15 to around
1.3 trillion.</p>
        <p>Table 1 shows the time required for computing the reordering with the lowest
cost for different number of service patterns using the JWUVC method (the
time is almost the same for also UVC and WUVC). Our implementation (cf.
Footnote 5) is in Java and uses Apache Jena for decomposing the SPARQL
query, while we run the experiments in an ordinary computer with processor
Intel Core i5 @ 3.2Ghz CPU, 8GB RAM and running Windows 10 (64 bit).</p>
        <p>We see that the time is very high for queries with many service patterns.
For example, more than 1 hour is required for just finding the reordering with
the lowest cost for a query with 12 service patterns. This illustrates the need
for a cost-effective approach which can find a near-optimal query execution plan
without needing to check all the different permutations. We adopt a greedy
algorithm starting with the service pattern with the smaller unrestrictiveness
score (local optimal choice) and continuing with the next service pattern with
the smaller score, considering at each stage the already bound variables of the
previous stages. To find the local optimal choice, we can use any of the proposed
unrestrictiveness formulas. Considering the UVC formula for example, in the
query of Listing 6 the greedy algorithm first selects the 2nd service pattern
since it contains only 1 variable. In the next stage, it selects the 3rd service
pattern which contains 2 unbound variables, fewer than those of the 1st service
pattern.
1 SELECT * WHERE {
2 SERVICE &lt;http://resource1&gt; { ?ent1 :birthPlace ?place1 ; :workPlace ?place2 ; :friend ?ent2 }
3 SERVICE &lt;http://resource2&gt; { ?ent2 a :Actor }
4 SERVICE &lt;http://resource3&gt; { ?ent2 :birthPlace ?place1 ; :workPlace ?place2 } }</p>
        <p>Listing 6. Example SPARQL query for choosing a near-optimal query plan.</p>
      </sec>
      <sec id="sec-3-9">
        <title>Copyright held by the author(s). 84 QuWeDa 2018</title>
        <p>4</p>
        <sec id="sec-3-9-1">
          <title>Evaluation</title>
          <p>
            We evaluated the effectiveness of the proposed query reordering methods using
real federated queries from the LargeRDFBench [
            <xref ref-type="bibr" rid="ref19">19</xref>
            ] dataset7. From the provided
32 SPARQL 1.1 queries, we did not consider 10 queries that make use of the
UNION operator (it is not currently supported by our implementation) and 5
“large data” queries (due to high memory requirements). To consider larger
number of possible query permutations, and since some of the queries contain
only 2 service patterns, we removed the OPTIONAL operators keeping though
the embedded service pattern(s).8 For instance, we transformed the query:
          </p>
          <p>SELECT * WHERE { SERVICE &lt;ex1&gt; {..} OPTIONAL { SERVICE &lt;ex2&gt; {..} } }
to the query:</p>
          <p>SELECT * WHERE { SERVICE &lt;ex1&gt; {..} SERVICE &lt;ex2&gt; {..} }</p>
          <p>The final evaluation dataset contains 17 queries of varying complexity (each
one containing at least two service patterns), while their service patterns
require access to totally 7 remote SPARQL endpoints. Note that there is no
benchmark for SPARQL-LD, however this does not affect the objective of our
evaluation since the proposed methods do not distinguish between SPARQL 1.1
and SPARQL-LD queries (a SPARQL endpoint can be considered an HTTP
resource containing all the endpoint’s triples).</p>
          <p>For each query, we found the optimal reordering by computing the execution
time of all possible permutations (average of 5 runs). Then, we examined the
effectiveness of the proposed optimization methods (VC, UVC, WUVC, and
JUWVC, as described in Section 3.2) on finding the optimal query execution
plan. Figure 1 shows the results. VC finds the optimal query plan in 8/17 queries
(47%), UVC in 10/17 queries (59%), WUVC in 9/17 queries (53%), and JUWVC
in 15/17 queries (88%). We notice that the JUWVC method, which considers
the number and type of joins, achieves a very good performance. Given the
infrastructure used to host the SPARQL endpoints in our experiments9, query
reordering using JUWVC achieves a very large decrease of the query execution
time for many of the queries (for example, from minutes to some seconds for the
queries S4, S10, S12, C7, C10).</p>
          <p>JUWVC fails to find the optimal query plan for the queries S13 and C6, which
both contain 2 service patterns. The first service pattern of S13 contains 1
star join and the second 2 star joins. As regards C6, its first service pattern
contains 1 star join and 1 chain join, and its second 5 star joins. In both queries,
although the second service pattern contains more joins than the first service
pattern, it returns larger number of bindings and this increases the number of
calls to the first remote endpoint and thus the overall query execution time.
Note that, without exploiting dataset statistics, such cases are very difficult to
be caught by an unrestrictiveness formula.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>7 https://github.com/dice-group/LargeRDFBench</title>
      <p>8 Although this transformation changes the query results, it does not affect the
objective of our evaluation.
9 2x Intel Xeon CPU E5-2630 @ 2.30GHz, 6-core, 384GB RAM.</p>
      <sec id="sec-4-1">
        <title>Copyright held by the author(s). 85 QuWeDa 2018</title>
        <p>1.E+07
1.E+06
1.E+05
e
l
a
c
s
l-g1.E+04
o
)
s
(m1.E+03
e
m
i
T1.E+02
1.E+01
1.E+00
OPTIMAL VC UVC WUVC JWUVC</p>
        <p>S2 S3 S4 S5 S10 S11 S12 S13 S14 C1 C2 C5 C6 C7 C8 C9 C10</p>
        <p>Query</p>
        <p>As regards the effectiveness of the greedy algorithm which avoids computing
the cost of all possible permutations (cf. Section 3.4), it manages to find the
reordering with the lowest cost using JUWVC in 16/17 queries (94%). It fails
for the query C2, however the returned reordering is very close to the optimal
(the difference is only a few milliseconds).</p>
        <p>
          One of the limitations of such a fully heuristics-based method is that it is
practically impossible to always find the optimal query plan. However, this is
the case also for methods that pre-compute and exploit metadata and statistics
from the remote resources, or which make use of caching. The reason is that
the Web of Data is a huge and constantly evolving information space, meaning
that we may always need to query a new, unknown resource discovered during
query execution. A solution to this problem is the exploitation of VoID [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], in
particular the publishing of a rich VoID file alongside each resource. In this case,
an optimizer can access (and exploit for query reordering) such VoID descriptions
at query execution time, considering though that all publishers follow a common
pattern for publishing these VoID files.10
5
        </p>
        <sec id="sec-4-1-1">
          <title>Conclusion</title>
          <p>We have proposed and evaluated a set of fully heuristics-based query reordering
methods for federating queries in SPARQL 1.1 and SPARQL-LD. The proposed
methods reorder a set of service graph patterns based on their selectivity
(restrictiveness) and do not require the gathering and use of statistics or metadata
10 https://www.w3.org/TR/void/#void-file</p>
        </sec>
      </sec>
      <sec id="sec-4-2">
        <title>Copyright held by the author(s). 86 QuWeDa 2018</title>
        <p>from the remote resources. Such an approach is widely-applicable and can be
exploited on top of existing SPARQL 1.1 and SPARQL-LD implementations.</p>
        <p>Since the new query functionality offered by SPARQL-LD (allowing to query
any HTTP resource containing RDF data) can lead to queries with large
number of service patterns which in turn can dramatically increase the time to
find the optimal reordering, we proposed the use of a simple greedy algorithm
for finding a near-optimal query execution plan without checking all possible
query reorderings. The results of an experimental evaluation using an existing
benchmark showed that a query reordering method which considers the number
and type of unbound variables and the number and type of joins achieves the
optimal query plan in 88% of the examined queries, resulting in a large decrease
of the overall query execution time (from minutes to a few seconds in many
cases). Regarding the greedy algorithm, it has an accuracy of 94% in finding the
reordering with the lowest cost.</p>
        <p>As part of our future work, we plan to offer a holistic query reordering
approach which will cover any type of federated queries. This involves the handling
of queries containing UNION and nested graph patterns, as well as queries which
combine triple and service patterns. We also plan to offer this query reordering
functionality as a web service, allowing for on-the-fly query optimization.
Acknowledgements
The work was partially funded by the European Commission for the ERC
Advanced Grant ALEXANDRIA under grant No. 339233.</p>
      </sec>
      <sec id="sec-4-3">
        <title>Copyright held by the author(s). 87 QuWeDa 2018</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>Apache</given-names>
            <surname>Jena</surname>
          </string-name>
          . http://jena.apache.org/
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <article-title>2. SPARQL 1.1 Query Language (W3C)</article-title>
          . http://www.w3.org/TR/sparql11-query/
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Acosta</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vidal</surname>
            ,
            <given-names>M.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lampo</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castillo</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ruckhaus</surname>
          </string-name>
          , E.:
          <article-title>ANAPSID: an adaptive query processing engine for SPARQL endpoints</article-title>
          . In: International Semantic Web Conference. pp.
          <fpage>18</fpage>
          -
          <lpage>34</lpage>
          . Springer (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Alexander</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hausenblas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Describing linked datasets-on the design and usage of VoID, thevocabulary of interlinked datasets</article-title>
          .
          <source>In: Linked Data on the Web Workshop (LDOW'09)</source>
          .
          <source>Citeseer</source>
          (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Buil-Aranda</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arenas</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Corcho</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Polleres</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Federating queries in SPARQL 1.1: Syntax, semantics and evaluation</article-title>
          .
          <source>Web Semantics: Science, Services and Agents on the World Wide Web</source>
          <volume>18</volume>
          (
          <issue>1</issue>
          ) (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Charalambidis</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Troumpoukis</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Konstantopoulos</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>SemaGrow: Optimizing federated SPARQL queries</article-title>
          .
          <source>In: Proceedings of the 11th International Conference on Semantic Systems</source>
          . pp.
          <fpage>121</fpage>
          -
          <lpage>128</lpage>
          . ACM (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Fafalios</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tzitzikas</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>SPARQL-LD: A SPARQL Extension for Fetching and Querying Linked Data</article-title>
          . In:
          <article-title>The Semantic Web-ISWC 2015 (Posters &amp; Demonstrations Track)</article-title>
          . Bethlehem, Pennsylvania, USA (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fafalios</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yannakis</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tzitzikas</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>Querying the Web of Data with SPARQLLD</article-title>
          .
          <source>In: International Conference on Theory and Practice of Digital Libraries</source>
          . pp.
          <fpage>175</fpage>
          -
          <lpage>187</lpage>
          . Springer (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Ferna´ndez, J.D.,
          <string-name>
            <surname>Beek</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <article-title>Mart´ınez-</article-title>
          <string-name>
            <surname>Prieto</surname>
            ,
            <given-names>M.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Arias</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>LOD-a-lot</article-title>
          . In: International Semantic Web Conference. pp.
          <fpage>75</fpage>
          -
          <lpage>83</lpage>
          . Springer (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10. G¨orlitz,
          <string-name>
            <given-names>O.</given-names>
            ,
            <surname>Staab</surname>
          </string-name>
          ,
          <string-name>
            <surname>S.:</surname>
          </string-name>
          <article-title>SPLENDID: SPARQL endpoint federation exploiting VoID descriptions</article-title>
          .
          <source>In: Proceedings of the Second International Conference on Consuming Linked Data-Volume</source>
          <volume>782</volume>
          . pp.
          <fpage>13</fpage>
          -
          <lpage>24</lpage>
          . CEUR-WS. org (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Huang</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , Liu,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>Estimating selectivity for joined RDF triple patterns</article-title>
          .
          <source>In: 20th ACM international conference on Information and knowledge management</source>
          . pp.
          <fpage>1435</fpage>
          -
          <lpage>1444</lpage>
          . ACM (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Langegger</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , Wo¨ß, W., Blo¨chl,
          <string-name>
            <surname>M.:</surname>
          </string-name>
          <article-title>A semantic web middleware for virtual data integration on the web</article-title>
          .
          <source>In: 5th ESWC</source>
          . Springer-Verlag (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Lynden</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kojima</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Matono</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tanimura</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          :
          <article-title>ADERIS: An adaptive query processor for joining federated SPARQL endpoints</article-title>
          .
          <source>In: On the Move to Meaningful Internet Systems: OTM 2011</source>
          . pp.
          <fpage>808</fpage>
          -
          <lpage>817</lpage>
          . Springer (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Montoya</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Skaf-Molli</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hose</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>The Odyssey approach for optimizing federated SPARQL queries</article-title>
          . In: International Semantic Web Conference. pp.
          <fpage>471</fpage>
          -
          <lpage>489</lpage>
          . Springer (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Montoya</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vidal</surname>
            ,
            <given-names>M.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Acosta</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>A heuristic-based approach for planning federated SPARQL queries</article-title>
          .
          <source>In: Proceedings of the Third International Conference on Consuming Linked Data-Volume</source>
          <volume>905</volume>
          . pp.
          <fpage>63</fpage>
          -
          <lpage>74</lpage>
          . CEUR-WS. org (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. Mu¨hleisen, H.,
          <string-name>
            <surname>Bizer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          :
          <article-title>Web data commons-extracting structured data from two large web corpora</article-title>
          .
          <source>LDOW 937</source>
          ,
          <fpage>133</fpage>
          -
          <lpage>145</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Prud'hommeaux</surname>
          </string-name>
          , E.,
          <string-name>
            <surname>Buil-Aranda</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , et al.
          <source>: SPARQL 1</source>
          .
          <article-title>1 federated query</article-title>
          .
          <source>W3C Recommendation</source>
          <volume>21</volume>
          ,
          <issue>113</issue>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Quilitz</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leser</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          :
          <article-title>Querying distributed RDF data sources with SPARQL</article-title>
          .
          <source>In: 5th ESWC</source>
          . Springer (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Saleem</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hasnain</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ngomo</surname>
            ,
            <given-names>A.C.N.:</given-names>
          </string-name>
          <article-title>LargeRDFBench: a billion triples benchmark for SPARQL endpoint federation</article-title>
          .
          <source>Journal of Web Semantics</source>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Saleem</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Khan</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hasnain</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ermilov</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Ngonga</given-names>
            <surname>Ngomo</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.C.</surname>
          </string-name>
          :
          <article-title>A finegrained evaluation of SPARQL endpoint federation systems</article-title>
          .
          <source>Semantic Web</source>
          <volume>7</volume>
          (
          <issue>5</issue>
          ),
          <fpage>493</fpage>
          -
          <lpage>518</lpage>
          (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Schwarte</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haase</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hose</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schenkel</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schmidt</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>FedX: Optimization techniques for federated query processing on linked data</article-title>
          .
          <source>In: The Semantic WebISWC 2011</source>
          . Springer (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Song</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Corby</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <article-title>Extended Query Pattern Graph and Heuristics-based SPARQL Query Planning</article-title>
          .
          <source>Procedia Computer Science</source>
          <volume>60</volume>
          ,
          <fpage>302</fpage>
          -
          <lpage>311</lpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <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>
          . ACM (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Tsialiamanis</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sidirourgos</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fundulaki</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Christophides</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Boncz</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Heuristics-based query optimisation for SPARQL</article-title>
          .
          <source>In: 15th International Conference on Extending Database Technology</source>
          . pp.
          <fpage>324</fpage>
          -
          <lpage>335</lpage>
          . ACM (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>