<?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">A Cost Model for Querying Distributed RDF-Repositories with SPARQL</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Philipp</forename><surname>Obermeier</surname></persName>
							<email>obermeie@inf.fu-berlin.de</email>
							<affiliation key="aff0">
								<orgName type="department">Institut für Informatik</orgName>
								<orgName type="institution" key="instit1">Freie Universität Berlin</orgName>
								<orgName type="institution" key="instit2">AG Netzbasierte Informationssysteme</orgName>
								<address>
									<addrLine>Königin-Luise-Straße 24-26</addrLine>
									<postCode>D-14195</postCode>
									<settlement>Berlin</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Lyndon</forename><surname>Nixon</surname></persName>
							<email>nixon@inf.fu-berlin.de</email>
							<affiliation key="aff0">
								<orgName type="department">Institut für Informatik</orgName>
								<orgName type="institution" key="instit1">Freie Universität Berlin</orgName>
								<orgName type="institution" key="instit2">AG Netzbasierte Informationssysteme</orgName>
								<address>
									<addrLine>Königin-Luise-Straße 24-26</addrLine>
									<postCode>D-14195</postCode>
									<settlement>Berlin</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">A Cost Model for Querying Distributed RDF-Repositories with SPARQL</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">22401F55DC7A80366E73270307C242D6</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-25T02:21+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>In the last years, the query language SPARQL has evolved into the widely accepted standard for querying RDF. Since many Semantic Web applications make use of data whose storage and management is distributed, distributed SPARQL query processing becomes necessary. In the relation and object-oriented database community the efficiency gain by cost-based, adaptive optimizers for distributed querying is proven, though such optimizers are not available for SPARQL. Thus we describe in this paper a cost model which is meant to act as a sub component of a query optimizer for distributed SPARQL query processing to serve as a cost indicator for other subcomponents of the optimizer, e.g. query decomposition, query rewriting and choosing join algorithms and their order. The cost model is tailored for a heterogeneous grid of SPARQL processors and represents query plans as SPARQL Query Graph Models (SQGM). Costs are assigned in an System-R-like fashion relying on recursive cost and cardinality functions. Therefore evaluation complexities of basic operations in SPARQL queries are derived from the complexities of best practice algorithms for the algebraically equivalent basic operations in relational query languages.</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>In January 2008 SPARQL was officially approved by a W3C Recommendation <ref type="bibr" target="#b14">[15]</ref> -a status which no other RDF query language has achieved. Parallel to this development a respectable number of SPARQL query engines have been developed, e.g. Jena ARQ, the Sesame SPARQL plugin or OWLIM as part of ORDI.</p><p>Since many Semantic Web applications eo ipso manage and store data in distributed places, distributed SPARQL query processing becomes necessary. Development of distributed query engines is only in a premature state since none of the widely accepted query engines, including the ones mentioned above, are designed for distributed query processing at all. As we will point out in section 2 cost-based, adaptive optimization techniques are well established for querying distributed relational or object-oriented databases. Since SPARQL is based on the relational algebra of Relational Database Management Systems (RDBMS), we believe it is possible to map these techniques to SPARQL. For this reason we present here a cost model for the evaluation of SPARQL queries tailored to act as part of an optimizer for adaptive, distributed query processing <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b10">11]</ref> supporting other subcomponents like query decomposition, query rewriting and join order selection for cost-based decision-making. Our cost model is similar to the ones for System-R suggested in <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b11">12]</ref> in that it estimates physical costs for each individual operation of a query and then totals these costs. Furthermore costs are distinguished by the type of used resources, i.e. number of CPU instructions, number of I/O operations (page/read accesses on persistent memory) and NET delay for retrieval of remote data. From this, a recursive cost function is developed for query execution based on physical cost functions and cardinality functions for basic operations in SPARQL Abstract Queries <ref type="bibr" target="#b14">[15]</ref>, a declarative representation of SPARQL queries (see section 3.1). Furthermore we presume a SPARQL query plan is given as a SPARQL Query Graph Model <ref type="bibr" target="#b8">[9]</ref> which is a graph model for queries abstracting to the semantic of the corresponding SPARQL Abstract Query (see section 3.2). For the choice of complexities of basic SPARQL operations we argue that complexities of best-practice algorithms for related operations in the relational algebra for RDBMS can be used as orientation.</p><p>In Section 2 we address the scientific background of this paper. In Section 3 we introduce the preliminaries necessary for the definition of the cost and cardinality function in Section 4. There we also deliver the proof for the equality of the complexities for relational algebra operators and their equivalent SPARQL basic operations. In Section 5 we demonstrate the usage of the cost model as part of a query optimizer. We conclude with a discussion of open problems and future work.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Related Work</head><p>Some breakthroughs in the analysis of the expressiveness and classification of SPARQL also with respect to other query languages has been achieved by Perez et al. <ref type="bibr" target="#b12">[13]</ref>. In their work they determined the complexity of certain types of SPARQL expression and developed an algebra for SPARQL resp. SPARQL graph pattern expressions which was a significant contribution to the theoretical algebraic model SPARQL Abstract Queries of SPARQL queries in <ref type="bibr" target="#b14">[15]</ref>. Furthermore except for minor exceptions the possibility of a straightforward reduction of SPARQL to a SQL-resembling relational algebra has been shown in <ref type="bibr" target="#b2">[3]</ref> which is the theoretical core of several SPARQL-to-SQL transforming SPARQL-DBMS like D2RQ or SquirrelRDF. Additional it can be attributed to the similarity between SPARQL and SQL algebras that a System-R-like graph model for SPARQL query plans together with optimization techniques query plans could be introduced <ref type="bibr" target="#b8">[9]</ref>.</p><p>Research in distributed SPARQL query processing started recently and predominantly leans on optimization techniques for general database query languages and RDF query languages. Heiner Stuckenschmidt et al. <ref type="bibr" target="#b17">[18]</ref> suggest for querying distributed RDF-repositories a schema-path-based indexing and storage organization as well as heuristics for join ordering. The techniques are implemented as a prototype extension for Sesame. In <ref type="bibr" target="#b1">[2]</ref>, RDFPeers, a spanning of RDF-Repositories over a Peer-to-Peer network is introduced. Execution of disjunctive and conjunctive queries over the distributed storages are described though RDFpeers doesn't support SPARQL as query language. In contrast to that Andreas Harth et al. <ref type="bibr" target="#b7">[8]</ref> propose YARS2, a toolkit for efficiently querying distributed storages of graph-shaped data, especially RDF data and SPARQL are supported. A distributed indexing mechanism for quadruples (representing RDF triples) and distributed SPARQL query processing with join ordering are fundamental contributions of this work. While lookups for indexes can be dispatched concurrently in the distributed storage environment, other operations embodied in a SPARQL query (i.e. Join, U nion, etc.) are solely executed at one host in the system. An adaptive cost estimation based on System-R-like physical cost and cardinality functions is presented in <ref type="bibr" target="#b15">[16]</ref> for conjunctive reasoning for Deductive Ontology Basis (DOB ), a subset of OWL lite. A translation of SPARQL queries into DOBs is promised by the authors for the future, but only partially explained at present.</p><p>In contrast to SPARQL the opportunities offered by distributed query processing are vastly explored in the database community. Kossmann describes in <ref type="bibr" target="#b10">[11]</ref> a series of query processing optimization concepts in distributed databases in a textbook style. Pirahesh et al. <ref type="bibr" target="#b13">[14]</ref> present rule-based rewriting techniques for queries which deliver optimization on a logical level independent from the physical implementation. Query plan cost models which sum up physical costs for single operators are suggested in <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b11">12]</ref>. Such a cost model is also needed as a subcomponent for an optimizer for distributed SPARQL processing as indicator for decision making of other components like query rewriting, decomposition or join and selection ordering. A sophisticated survey of adaptivity for query processing, especially intra-query adaptivity, was assembled by Deshpande et al. <ref type="bibr" target="#b3">[4]</ref>. Adaptivity means the query processing is interleaved with adjustments by the query optimizer, which significantly improves the performance of the query evaluation A System-R-like cost model and the cost-based, adaptive techniques addressed in the last paragraph are not available yet for a distributed SPARQL processing context. Thus our proposed cost model as part of a still to be developed optimizer for adaptive, distributed SPARQL query processing is a first step to change this circumstance.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Preliminaries</head><p>3.1 Formalization and Semantics of SPARQL Queries 3.1.1 SPARQL Abstract Queries For the study of SPARQL semantics, <ref type="bibr" target="#b14">[15]</ref> provides a declarative formalization for a SPARQL query, called SPARQL Abstract Query. A SPARQL Abstract Query is a triple that consists of a Query Form, a SPARQL Algebra Expression and a RDF Dataset.</p><p>The set of Query Forms, denoted as QF, comprises four functions {Select, Ask , Construct, Describe} which take a solution mapping multi-set (see Definition 1) as input, Construct additional uses a set of tripe pattern templates. Select returns a set of variable bindings, Ask a boolean, Construct and Describe a RDF graph.</p><p>The SPARQL Algebra, whose terms are called SPARQL Algebra Expressions, is an algebra representing graph patterns and solution modifiers in queries. It provides a set of unary or binary functions {Join, Union, Diff , LeftJoin, ...} and a set BGP of constants, which are called Basic Graph Patterns (BGP). Both function and constants return a solution mapping multi-set as result while taking solution mapping multi-sets and logical boolean constraints for variable bindings as input. In the following we refer to the set of these functions as SF, and we call SAO = {BGP}∪SF the set of SPARQL Algebra Operations (SAO). The elements of the subset SM ⊂ SF , where SM = {Distinct, OrderBy, Limit, OffSet}, are called Solution Modifiers (SM). Overall we refer to QF ∪ SAO as the set of SPARQL basic operations.</p><p>A SPARQL Abstract Term is either a SPARQL Abstract Query or a SPARQL Algebra Expressions. Intuitively a SPARQL Abstract Term describes a "sub term" of a SPARQL Abstract Query.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.2">Solution Mapping</head><p>Multi-Sets From a technical viewpoint solution mapping multi-sets are unordered lists of solution mappings which may contain duplicates. For our following discussion we adopt the mathematical definition from <ref type="bibr" target="#b14">[15]</ref>: Definition 1. A solution mapping multi-set is a tuple (S, card) where S is a set of solution mappings and card is a function which annotates every x ∈ S with a positive integer.</p><p>The cardinality of (S, card), denoted as |(S, card)|, is the summation of card(x) for all x ∈ S.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">SPARQL Query Graph Model</head><p>The SPARQL Query Graph Model (SQGM) <ref type="bibr" target="#b8">[9]</ref> is a graph model for SPARQL queries resp. SPARQL Abstract Queries adopted from the Query Graph Models for SQL <ref type="bibr" target="#b13">[14]</ref>. A SQGM is a planar rooted directed graph consisting of operator as nodes and dataflows as edges. Each operator represents an occurrence of an SPARQL algebra operation in the corresponding SPARQL Abstract Query while each data flow connects an operator A to an operator B, iff B uses A's result as input in the corresponding SPARQL Abstract Query. In this constellation A is called providing operator and B consuming operator. Furthermore operators are divided into types each of them having a one-to-one correspondence to a SPARQL basic operation, except for BGPs in combination with Filters and also for Solution Modifiers. For the first constellation SQGMs use an operator type, the set of Graph Pattern Operators (GPO), each corresponding to a BGP with an optional Filter operation. This set is referred to as GPO in the following. For Solution Modifiers SQGMs provide a general operator type, consisting of the Solution Modifier Operators which represent concatenations of arbitrary Solution Modifiers. Additionally we give the formal definition of a SQGM. r represents a Query Form), df lt ∈ OP is an operator providing the default RDF graph of the queried RDF dataset, -N G ⊂ OP is the set of graph operators that provide named graphs.</p><p>For particular details on SQGMs we refer to <ref type="bibr" target="#b8">[9]</ref>.</p><p>In the following we will base our cost estimation for SPARQL queries and query plans on their corresponding SQGMs. While as shown above queries can be translated directly into SQGMs query plans contain in general additional physical information for each operator. Thus we consider SQGM as abstraction of query plans in the sense that all physical information has been masked out.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.1">Constraints for BGPs resp. Graph Pattern Operators</head><p>Actually there are two different SPARQL basic operations which can describe joins between solution mapping multi-sets: The Join operator and BGPs containing more than one triple pattern. By limiting joins between solution mapping multisets to the actual Join operation of the SPARQL Algebra we unify these to one form to ease the definition of cost and cardinality functions. Motivated by this consideration we restrict BGPs (resp. GPOs) to the biggest subset of BGP (resp. GPO), in which each BGP (resp. GPO) only contains exactly one single triple pattern. We refer to this subset as BGP T P (resp. GPO T P ). As shown in the extension to <ref type="bibr" target="#b12">[13]</ref> it is semantically equivalent to simulate BGPs embodying an arbitrary set of triple pattern by defining a BGP for each triple pattern and after that to join these.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.2">Constrains for Solution Modifier Operators</head><p>As mentioned above a Solution Modifier Operator can express a application of several Solution Modifiers. In the following we only accept Solution Modifier Operators which represent exactly one Solution Modifier. A sequence of Solution Modifier appliances m 1 , . . . , m n in a SPARQL query can also be represented in a SQGM as a path of Solution Modifiers M 1 → . . . → M n where M i solely represents m i . This limitation is motivated by the need of a one-to-one correspondence for the sake of exchangeability of cost and cardinality functions for corresponding SPARQL basic operations and SQGMs operator types. The exchangeability of functions significantly assists the comprehensibility of the cost computations based on SQGMs.</p><p>In this section we will describe the structure of the cost model for SQGMs and provide a justification to base our cost estimation on the complexities of best-practice-algorithms for relational algebra operations related to the SPARQL basic operations.</p><p>Overall the cost model for SQGMs banks on a recursive cost function relying in turn on a recursive cardinality function. Furthermore both cost and cardinality function themselves are based on functions estimating physical cost and solution cardinalities for each SPARQL basic operation.</p><p>At first we introduce a method to assign cost and cardinality functions to each SPARQL basic operation also depending on the used implementation algorithms. After that we show how we can recursively compute costs for SQGMs based on our earlier results. Finally we justify that we can reduce almost all SPARQL basic operations to corresponding relational algebra operations in linear time to the input cardinalities.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1">Cost and Cardinality Functions for SPARQL Basic Operations</head><p>For each SPARQL basic operation we assign a cardinality, CPU-and IO-cost function. The cardinality function estimates the cardinality of the operation result, the CPU-function the necessary number of instructions and the IO-cost function the necessary number of hard disk (or page) accesses to process the operation. Each of these functions depends on the cardinalities of the input solution mapping multi-sets, the used algorithm and real number parameters expressing physical characteristics of the machine executing the query. To compute these functions for a triple pattern we use the pattern itself as indication for the cardinality of its solution mapping multi-set. This is motivated by the fact, that either we can retrieve the cardinality directly by sending the triple pattern to the RDF-Repositories or estimate the cardinality by a selectivity method with the triple pattern as input.</p><p>In Definition 3 we define a summarization of the function assignments above, denoted as configuration. Hereby T P stands for the set of all RDF Triple Pattern, RDFG for the set of all RDF-Graphs, ALG for the set of all algorithms implementing SPARQL basic operations. Moreover a physical parameter setup is defined as mapping from a set of identifiers to a set of reals. The set of all physical parameter setups is called PPS. The Cartesian product R kop is the set of all possible tuples consisting of the cardinalities of the input solution mapping multi-sets for an operation op.</p><formula xml:id="formula_0">Definition 3. A configuration C is a function assigning each SPARQL basic operation op a tuple C(op) = (f CP U,op , f IO,op , f card,op ) where if op = BGP T P then f φ,op : (T P × RDFG × ALG × PPS) → R + with φ ∈ {CP U, IO, card}, else f φ,op : (R kop + × ALG × PPS) → R + with φ ∈ {CP U, IO, card}.</formula><p>We call f IO,op resp. f CP U,op the IO resp. CPU cost function for op and f card,op the cardinality function for op.</p><p>The IO-and CPU-costs of a SPARQL basic operation can be estimated accurately by the usage of an elaborated time and space complexity function for the implementation algorithm, given that the estimation errors for the cardinalities of the input solution mapping multi-sets and the physical parameters are small.</p><p>If no additional information is available, a naive way to compute the cardinalities of the results for a SPARQL basic operation is the usage of the result cardinalities provided by the operator definitions in <ref type="bibr" target="#b14">[15]</ref>. For instance, we could use the possible maximum of the result size. Hence such a procedure, which solely relies on the input sizes of an operator, causes generally a large estimation error. If available, statistical values for the result sizes of Triple Patterns, BGPs or more complex SPARQL Algebra Expressions are a highly recommended alternative.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.2">Cost and Cardinality Functions for SQGM</head><p>In this section we recursively determine the execution costs and result cardinalities of a query graph by beginning the recursion at its root moving to the nodes with in-degree 0. Relevant physical cost factors for the processing of an SQGM operator like costs for swapping, hashing, computation, etc. are given in a function, physical parameter assignment, and thus can be respected in the cost estimation. For the delay by transmission through the network we use a very simplistic approach by assigning a real number weight for each operator x which indicates the net distance between the host computing x and the host computing x's upstream operator. The actual net costs for x is the product &lt;size of transmitted data&gt; * &lt;distance weight&gt;. To determine the overall net costs for a SQGM we add up these products for each operator.</p><p>First of all we emphasize in Definition 4 the exchangeability of cost and cardinality functions for SPARQL basic operations and SQGM operator types presuming the restrictions stated in Section 3.2.1 and 3.2.2. Definition 4. Given a SQGM (OP, DF, r, df lt, N G), a configuration C and a SQGM operator type t which represents a SPARQL basic operation op with C(op) = (f CP U,op , f IO,op , f card,op ). We call f IO,op resp. f CP U,op the IO resp. CPU cost function for t and f card,op the cardinality function for t. Analogously we use for t the references f IO,t = f IO,op , f CP U,t = f CP U,op and f card,t = f card,op .</p><p>Before we can present the cardinality (Definition 5) and cost functions (Definition 6) for SQGMs, we need to determine three kinds of functions for a given SQGM G = (OP, DF, r, df lt, N G):</p><p>An algorithm assignment is a function which assigns each operator x ∈ OP an algorithm. This algorithm is a implementation of x according to the type x belongs to. For instance, if x belongs to the Join Operator type, the algorithm is a join algorithm (NestedLoop-Join, Hash-Join,. . . ).</p><p>A physical parameter assignment is a function which assigns each operator x ∈ OP a physical parameter setup. This physical parameter setup contains (approximation of) physical values relevant for the estimation of the processing costs (e.g. block size, costs for swapping, hashing or value comparison) for the machine executing x.</p><p>A net-distance weight assignment is a function which assigns each operator x ∈ OP a positive real number. This number is a weight which expresses the net latency between the machine executing x and the machine executing x's upstream operator. The weight is multiplied with the result cardinality of x to take the net latency to the machine where the upstream operator is processed into account.</p><p>Finally we define the recursive cardinality and cost functions for SQGMs (Definition 5 and 6). </p><formula xml:id="formula_1">(D(c i ) • card(c i ) + costs N ET (c i )).</formula><p>If x is a Select-, Describe-, Construct-, or Ask-Result Operator we refer to costs φ (x) also as the φ-cost function for G.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.3">Cost Estimation Oriented on RDBMS Complexities</head><p>Based on <ref type="bibr" target="#b2">[3]</ref> we will now prove that the choice of cost functions for SPARQL basic operations oriented on the complexities of best-practice-algorithms for relational algebra operations is sound. This is motivated by the fact that there are strong similarities between SPARQL basic operations and the operations of the relational algebra for RDBMS. To support this claim we will prove that almost each SPARQL basic operation is reducible to a single operation or a more complex term of the relation algebra for RDBMS in linear time while the cardinalities of the input values are preserved. Actually this reduction only yields an upper bound for SPARQL basic operations, which might be too pessimistic for certain implementations of operations. To formally neglect this we have to show that there also exists a reduction in the other direction. More precisely, each relational algebra operation must be reducible to a corresponding SPARQL Abstract Term (see Section 3.1), while the most efficient computation of the reduction function for this operation has to be in the smallest complexity class for which the evaluation of the SPARQL Abstract Term is a member of. Alternatively we could empirically prove the usability of the upper bound gained by the reduction introduced here. This proof, by mathematical means or benchmark testing, is a future task.</p><p>Before we present the reduction in Theorem 1, we want to clarify that we base the following discussion on the named version of the relational algebra, as described by <ref type="bibr" target="#b0">[1]</ref> in chapter 5.1, which contains the operations {σ, π, , δ, ∪, −}. In addition, we define a database relation with duplicates as follows. The cardinality of (r[U ], card RA ), denoted as</p><formula xml:id="formula_2">|(r[U ], card RA )| RA , is the sum- mation of card RA (t) for all t ∈ r[U ].</formula><p>Consequently we extend the operations of the relational algebra to be capable of handling relations with duplicates as operands. For instance, the extended version of the relational algebra operation Join, called dup , additional takes care of the card RA values of its result tuples such that they resemble the card values of the SPARQL basic operation Join. We also apply this concept for the pairings (∪,Union),(−,Diff ), (π,Select) and (σ,Filter ) Definition 8. Let A be the set of all relations with duplicates. The functions dup , ∪ dup , − dup , π dup and σ dup are defined as follows: For the reduction in Theorem 1 we define in advance a simple helper algorithm, called trans, to transform a solution mapping multi-set S = (S, card) to an equivalent DB-relation with duplicates R = (r[U ], card RA ): The union of the variables in the domains of the solutions mappings in S is the set of attributes U for r. Thus the number of attributes in U is the overall number of different variables occurring in the the mappings in S. Furthermore each mapping x ∈ S is represented by a tuple t x in r with card RA (t x ) := card(x) where t x has only values for the attributes which coincide with the domain of x (formally: attributes of t x who don't represent a variable in x have a globally defined null value, which belongs to no domain of the database schema).</p><formula xml:id="formula_3">Function dub : A × A → A is defined as ∪ dub ((r 1 , card RA,1 ), (r 2 , card RA,2 )) = (r, card RA ) with r = r 1 r 2 and for each t ∈ r, t 1 ∈ r 1 , t 2 ∈ r 2 , t = t 1 ∪ t 2 holds card RA (t) = card RA,1 (t 1 ) • card RA,2 (t 2 ). Function ∪ dub : A × A → A is defined as ∪ dub ((r 1 , card RA,1 ), (r 2 , card RA,2 )) = (r, card RA ) with r = r 1 ∪ r 2 and for each t ∈ r, t 1 ∈ r 1 , t 2 ∈ r 2 , t = t 1 = t 2 holds card RA (t) = card RA,1 (t 1 ) + card RA,2 (t 2 ). Function − dub : A × A → A is defined as ∪ dub ((r 1 , card RA,1 ), (r 2 , card RA,2 )) = (r, card RA ) with r = r 1 − r 2 and for each t ∈ r, t 1 ∈ r 1 , t 2 ∈ r 2 , t = t 1 = t 2 holds card RA (t) = |card RA,1 (t 1 ) − card RA,2 (t 2 )|. Function π dub : Att n ×A → A is defined as π dub (a, (r 1 , card RA,1 )) = (r, card RA ) with r = π(a,</formula><p>In the following we use the denotations: trans(S) = R, trans(x) := t x , trans(S) := r, trans(card) := card RA , trans((S, card)) := (r, card RA ) and trans-att(S) = U . For this algorithm we imply (without explicit proof):</p><p>1. The number of attributes in U is the overall number of different variables occurring in the solution mappings in S 2. x ∈ S iff trans(x) ∈ trans(S)</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">The algorithm's time and space complexity lies in O(|(S, card)|).</head><p>Theorem 1. Given a function f from SPARQL Abstract Terms to relational algebra terms with f (Join(S 1 , S 2 )) = dup (trans(S 1 ), trans(S 2 )),</p><formula xml:id="formula_4">f (Union(S 1 , S 2 )) = ∪ dub (trans(S 1 ), trans(S 2 )), f (Diff (S 1 , S 2 )) = − dub (trans(S 1 ), trans(S 2 )), f (LeftJoin(S 1 , S 2 )) = ∪ dup ( dup (trans(S 1 ), trans(S 2 )), − dup (trans(S 1 ), trans(S 2 ))),</formula><p>where S 1 and S 2 are two multi-sets of solution mappings. Then f is a reduction of the SPARQL basic operations Join, Union, Diff, LeftJoin to relational algebra terms, i.e., for φ ∈ {Join, Union, Diff , LeftJoin} the following statements hold</p><formula xml:id="formula_5">-x ∈ S iff trans(x) ∈ r[U ], -card(x) = card RA (trans(x)) for each x ∈ S, -trans-att(S) = U ,</formula><p>where φ(S 1 , S 2 ) = (S, card), f (φ(trans(S 1 ), trans(S 2 ))) = (r[U ], card RA ) and both S 1 and S 2 are two multi-sets of solution mappings. Moreover, f is computable linear in time with respect to the sum of cardinalities of S 1 and S 2 , i.e. card(S 1 ) + card(S 2 ).</p><p>Proof. We show that for the operations Join,Union, Diff and LeftJoin the concluded statements hold.</p><p>A SPARQL Abstract Term Join(S 1 , S 2 ) = (S, card) with solution mappings multi-sets S = (S 1 , f 1 ) and S = (S 2 , f 2 ) is reduced by f to a (natural) join with duplicates in the relational algebra dup (trans(S 1 ), trans(S 2 )) = (r[U ], card RA ). For the generation of r from trans(S 1 ) and trans(S 2 ) operation dup (Definition 8) solely relies on . By the definition of ([1] p.58, top) and transformation algorithm trans it follows that trans-att(S) = U and the fact, that a solution mapping x is element of S iff there exists a tuple t x in r[U ] , which has the same values for its attributes as x for its respectively variables. Moreover, algorithm trans uses for the cardinality card RA (r) of a tuple t x ∈ r[U ] the same value as its corresponding solution mapping x (i.e. trans(x) = t x ). In addition, dup (Definition 8) relies on the same computation formula for cardinalities of tuples as the SPARQL basic operation Join for solution mappings. Thus card(x) = card RA (trans(x)) holds for each x ∈ S.</p><p>In an analogous way this can be shown for U nion and Diff. LeftJoin is defined as a SPARQL algebra term which combines Join, Union and Diff. Thus the reduction for Join, Union and Diff yields also a reduction for LeftJoin.</p><p>Furthermore, the definition of algorithm trans and reduction f implies that f is computable in linear time with respect to card(S 1 ) + card(S 2 ).</p><p>For most of the SPARQL basic operations we can determine the complexity in the same way as in the proof of Theorem 1. Few are slightly different, e.g. F ilter allowing regular expression in SPARQL which occasionally can not be directly translated into the selection operation σ as pointed out in <ref type="bibr" target="#b2">[3]</ref>. For these exceptions we will estimate their complexity based on known efficient implementations, also with orientation on similar operations in the relational algebra, if possible.</p><p>After the consideration above we are enabled to define a configuration oriented on the complexities for relational algebra operations for the example presented in Section 5. We use the complexity of relational algebra operations for the cost estimation of the related SPARQL algebra operations under the assumption that a SPARQL query processor is approximately as efficient as a RDBMS for the corresponding query (see Table <ref type="table" target="#tab_3">2</ref>). For SPARQL basic operations which are not reducible to relational algebra operations in the way described by Theorem 1, we rely on the complexities of best-practice implementations generally used by the database and Semantic Web community.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Example</head><p>At this point we showcase the expected benefits of a query optimizer based on our cost model. Therefore we require a system of networked, collaborating hosts, whereas each host contains a RDF repository embodying such a query optimizer. We provide an exemplary SPARQL query q (Listing 1.1, Figure <ref type="figure">1</ref>) and demonstrate how cost-based query decomposition will established an optimized distributed evaluation of the query in this system.</p><p>For this example we make the following presumptions for the host machines:</p><p>-The RAM size equals one block of persistent memory -One I/O access equals reading of one block in persistent memory -The RDF triples in the RDF repositories are indexed by a B+ tree as described in <ref type="bibr" target="#b6">[7]</ref> -Statistics about cardinalities of solution mapping multi-sets for SPARQL Algebra Expressions are available for each RDF repository (e.g. for BGPs a schema-path-based index of the result cardinalities for n-way triple pattern joins would be possible, analogous to the source index hierarchy proposed by <ref type="bibr" target="#b17">[18]</ref>)</p><p>In Table <ref type="table" target="#tab_3">2</ref> we provide a list of IO and CPU cost functions necessary for this example, i.e. for each occurring operator type. These functions were derived from <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b4">5]</ref>. Table <ref type="table" target="#tab_2">1</ref> explains the used symbols.  </p><formula xml:id="formula_6">f CP U = n 1 • c generic f IO = b 1 • c generic Join Operator NestedLoop-Join f CP U = n 1 • n 2 • ccompare f IO = b 1 • b 2 • cswap Hash-Join f CP U = min(n 1 , n 2 ) • ccomp+ + max(n 1 , n 2 ) • c hash f IO = (b 1 + b 2 ) • cswap + bres • c generic MergeSort-Join f CP U = (n 1 • logn 1 + n 2 • logn 2 + + n 1 + n 2 ) • ccompare f IO = (b 1 • logb 1 + b 2 • logb 2 + + b 1 + b 2 ) • cswap</formula><p>LeftJoin Operator Union(HashJoin,Diff)</p><formula xml:id="formula_7">f CP U = f CP U,HashJoin (n 1 , n 2 )+ + (n 1 + n 2 ) • ccompare+ + n 1 • c hash f IO = f IO,HashJoin (b 1 , b 2 )+ + (b 1 + b 2 ) • cswap+ + b 1 • c generic</formula><p>Graph Pattern Operator consisting only of a single triple pattern B+-Tree lookup</p><formula xml:id="formula_8">f CP U = ccomp • log b host nrepo f IO = cswap • (log b host nrepo + bres)</formula><p>Now we give a step by step walk-through of the distributed querying process:</p><p>1. Initially SPARQL query q (Listing 1.1) is transformed into a SQGM G (Figure <ref type="figure">1</ref>). 2. Then the decomposition component determines -by calling the cost estimation component -the CPU-costs and IO-costs for each operator and thereby for each sub graph in SQGM. We use the following randomly chosen configuration of physical parameters for each operator in the SQGM G:</p><formula xml:id="formula_9">c generic = c comp = 1, c swap = 10, c hash = 2, n repo = 10 6 , b host = 10</formula><p>As implementation for the uppermost Join operator in G we use the MergeSort-Join algorithm (Note: A SQGM can be interpreted as rooted directed tree, if the Default Graph operator is ignored.). For all other operators in G the choice of the implementation is unambiguous (see Table <ref type="table" target="#tab_3">2</ref>). 3. After the decomposition component gets back the cost estimations (Figure <ref type="figure" target="#fig_0">2</ref>) it decides the partitioning of SQGM G with one of the following strategies (These strategies are intuitive choices, their sophisticated research is targeted for the future.): If the query optimizer is regularly noticed about available resources, the partitions can be chosen w.r.t. to their costs and these resources, i.e. a matching between costs and resources is approximated. Alternatively the decomposition component tries to partition SQGM G into chunks with circa the same costs. Here we use the second strategy. The overall costs for the left and right sub-tree at the upper-most Join operator are 1012 + 1320 = 2332 and 6 + 310 = 316, if we weight CPU and IO costs with factor 1. Assume two remote hosts A and B are available with access to q's default graph. A should have net-distance 3 and B net-distance 10 to the host which will process the uppermost Join operator and the Select operator. The remote processing costs for the left subtree on host A would than be 2332 plus the net latency 3×200 = 600, for the right subtree on host B 316 plus the net latency 10 × 250 = 2500. Since A and B work parallel the overall cost is 2932 (if we have to wait until A is finished) for the remote processing of the both sub trees compared to a sequential local processing which is 2932 + 2816 = 6748. Thus we split G at the uppermost-most Join operator. 4. The resulting partitions for the sub trees of the uppermost Join operator in G lead to the sub queries q 1 and q 2 (Listings 1.2 and 1.3), which then are forwarded to host A and B for processing. The retrieved sub query answers routed back are combined to an answer for q according to its decomposition.  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conclusion and Future Work</head><p>We have developed a cost model that provides System-R-like cost and cardinality functions for SPARQL queries given as SQGMs and evaluated in an distributed environment. In addition we proved by reduction that for the cost estimation of most SPARQL basic operations complexities of relational algebra operations can be used as upper bounds. Hence, it has yet to be proven -mathematically or empirically -that these upper bounds are not to pessimistic.</p><p>For the future we plan an implementation of the cost model as part of query optimizer for distributed query processing. Since the optimize-then-execute paradigm is not efficient for complex queries due to exponential growth of the estimation error <ref type="bibr" target="#b9">[10]</ref> we additionally expect that the query processor and its optimizer operates in an intra-query adaptive fashion <ref type="bibr" target="#b3">[4]</ref>, i.e. the optimizer interleave query processing for dynamic adjustments and cost estimations to provide better response time or more efficient usage of resources.</p><p>We will evaluate the cost model in form of representative benchmarks tests for this implementation. In particular the accuracy of the upper bounds for SPARQL basic operations provided by the reduction mentioned above will be verified.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Definition 2 .</head><label>2</label><figDesc>A SPARQL Query Graph Model (SQGM) represents a SPARQL query. It is a tuple (OP, DF, r, df lt, N G) where -OP denotes the set of all operators necessary to model the query, -DF denotes the set of all dataflows necessary to model the query, r ∈ OP is an operator responsible for generating the result of the query (i.e.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Definition 5 .Definition 6 .</head><label>56</label><figDesc>For a SQGM (OP, DF, r, df lt, N G), a configuration C and a node x ∈ OP , possessing the providing operators c 1 , ..., c n , the recursive function card : OP → R + , called cardinality function, is defined as follows: if x ∈ GPO T P then card(x) = f card,GPO T P (tp, G) where tp is the triple pattern embodied in x and G is the input graph of x, else card(x) = f card,x.type (card(c 1 ), . . . , card(c n )) where x.type denotes the operator type of x. For a SQGM G = (OP, DF, r, df lt, N G), φ ∈ {IO, CP U, N ET }, a configuration C, an algorithm assignment A, a physical parameter assignment P, a net-distance weight assignment D and a node x ∈ OP the recursive function costs φ : OP → R + , called φ-cost function, is defined as follows: For φ ∈ {IO, CP U }: if x ∈ GPO T P then costs φ (x) = f φ,GPO T P (tp, G, A(x), P(x)) where tp is the triple pattern embodied in x and G is the input graph of x, else costs φ (x) = f φ,x.type (card(c 1 ), . . . , card(c n ), A(x), P(x)) + + ∑ i∈{1,...,n} costs φ (c i ) where x.type denotes the operator type, c 1 , ..., c n the providing operators of x. For φ = N ET : cost N ET (x) = ∑ i∈{1,...,n}</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Definition 7 .</head><label>7</label><figDesc>A relation with duplicates is a tuple (r[U ], card RA ) where r[U ] is a relation for a set of attributes U and card RA is a function which annotates every t ∈ r[U ] with a positive integer.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Fig.</head><label></label><figDesc>Fig. 1: Corresponding SQGM G for SPARQL query q</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Fig</head><label></label><figDesc>Fig. 2: Cost annotated SQGM G</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>r 1 ). For each t ∈ r the cardinality card RA (t) is the summation of card RA,1 (t 1 ) for all t 1 ∈ r 1 with t = t 1 | t . Here Att is an arbitrary set of attributes and Att n the n-ary Cartesian Product of Att, t 1 | t is the tuple t 1 restricted to the attributes of t. Function σ dub : Att × Dom × A → A is defined as ∪ dub (a, d, (r 1 , card RA,1 )) = (r, card RA ) with r = σ(a, d, r 1 ) and for each t ∈ r, t 1 ∈ r 1 , t = t 1 holds card RA (t) = card RA,1 (t 1 ). Here Att is an arbitrary set of attributes and domains a set of arbitrary domains for a relational database.</figDesc><table /></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>Symbols used in the cost and cardinality formulas</figDesc><table><row><cell>1: Corresponding SQGM G for SPARQL query q</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head>Table 2 :</head><label>2</label><figDesc>Cost functions for SQGM operator types</figDesc><table><row><cell>operator type</cell><cell>algorithm</cell><cell>cost function</cell></row><row><cell>Select Result Operator</cell><cell>full table scan</cell><cell></cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_4"><head></head><label></label><figDesc>. 2: Cost annotated SQGM G Listing 1.3: SPARQL query q2 PREFIX ub: &lt; h t t p : //www . l e h i g h . edu / . . . / u n i v b e n c h . o w l#&gt; PREFIX r d f : &lt; h t t p : //www . w3 . o r g /1999/02/22 − r d f −s y n t a x −ns#&gt; SELECT ? s ? n FROM &lt;h t t p : // e x a m p l e . o r / U n i v e r s i t y 0 . owl&gt; WHERE { ? s ub : name ? n . }</figDesc><table><row><cell>Listing 1.2: SPARQL query q1</cell></row><row><cell>PREFIX ub: &lt; h t t p : //www . l e h i g h . edu / . . . / u n i v b e n c h . o w l#&gt;</cell></row><row><cell>PREFIX r d f : &lt; h t t p : //www . w3 . o r g /1999/02/22 − r d f −s y n t a x −ns#&gt;</cell></row><row><cell>SELECT ? s ? c</cell></row><row><cell>FROM &lt;h t t p : // e x a m p l e . o r / U n i v e r s i t y 0 . owl&gt;</cell></row><row><cell>WHERE {</cell></row><row><cell>? s r d f : t y p e ub : G r a d u a t e S t u d e n t .</cell></row><row><cell>OPTIONAL { ? s ub : t a k e s C o u r s e ? c . }</cell></row><row><cell>}</cell></row></table></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">Acknowledgements</head><p>This work is partially supported by the TripCom (IST-4-027324-STP) project; http://www.tripcom.org.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">Foundations of Databases</title>
		<author>
			<persName><forename type="first">S</forename><surname>Abiteboul</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Hull</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Vianu</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1995">1995</date>
			<publisher>Addison-Wesley</publisher>
			<pubPlace>Reading, Massachusetts</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Rdfpeers: a scalable distributed rdf repository based on a structured peer-to-peer network</title>
		<author>
			<persName><forename type="first">M</forename><surname>Cai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Frank</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 13th international conference on World Wide Web</title>
				<meeting>the 13th international conference on World Wide Web<address><addrLine>New York, NY, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="650" to="657" />
		</imprint>
	</monogr>
	<note>WWW &apos;04</note>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">A relational algebra for SPARQL</title>
		<author>
			<persName><forename type="first">R</forename><surname>Cyganiak</surname></persName>
		</author>
		<idno>HPL-2005-170</idno>
		<imprint>
			<date type="published" when="2005">Sept. 28 2005</date>
		</imprint>
		<respStmt>
			<orgName>Hewlett Packard Laboratories</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Tech. Rep.</note>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Adaptive query processing</title>
		<author>
			<persName><forename type="first">A</forename><surname>Deshpande</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><forename type="middle">G</forename><surname>Ives</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Raman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Foundations and Trends in Databases</title>
		<imprint>
			<biblScope unit="volume">1</biblScope>
			<biblScope unit="page" from="1" to="140" />
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Fundamentals of Database Systems</title>
		<editor>Elmasri, R., and Navathe, S. B.</editor>
		<imprint>
			<date type="published" when="1994">1994</date>
			<publisher>Benjamin/Cummings</publisher>
		</imprint>
	</monogr>
	<note>second ed</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Query evaluation techniques for large databases</title>
		<author>
			<persName><forename type="first">G</forename><surname>Graefe</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Computing Surveys</title>
		<imprint>
			<biblScope unit="volume">25</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="73" to="170" />
			<date type="published" when="1993-06">June 1993</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Optimized index structures for querying rdf from the web</title>
		<author>
			<persName><forename type="first">A</forename><surname>Harth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Decker</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the Third Latin American Web Congress</title>
				<meeting>the Third Latin American Web Congress<address><addrLine>Washington, DC, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page">71</biblScope>
		</imprint>
	</monogr>
	<note>LA-WEB &apos;05</note>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Yars2: A federated repository for querying graph structured data from the web</title>
		<author>
			<persName><forename type="first">A</forename><surname>Harth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Umbrich</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Hogan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Decker</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 6th International Semantic Web Conference and 2nd Asian Semantic Web Conference (ISWC/ASWC2007)</title>
				<editor>
			<persName><forename type="first">K.-S</forename><surname>Aberer</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">N</forename><surname>Choi</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Noy</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">K.-I</forename><surname>Allemang</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><forename type="middle">J B</forename><surname>Lee</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">J</forename><surname>Nixon</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">P</forename><surname>Golbeck</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Mika</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Maynard</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">P</forename><surname>Schreiber</surname></persName>
		</editor>
		<editor>
			<persName><surname>Cudré-Mauroux</surname></persName>
		</editor>
		<meeting>the 6th International Semantic Web Conference and 2nd Asian Semantic Web Conference (ISWC/ASWC2007)<address><addrLine>Busan, South Korea; Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer Verlag</publisher>
			<date type="published" when="2007-11">November 2007</date>
			<biblScope unit="volume">4825</biblScope>
			<biblScope unit="page" from="211" to="224" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">The SPARQL query graph model for query optimization</title>
		<author>
			<persName><forename type="first">O</forename><surname>Hartig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Heese</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>E. Franconi, M. Kifer, and W. May</editor>
		<imprint>
			<biblScope unit="volume">4519</biblScope>
			<biblScope unit="page" from="564" to="578" />
			<date type="published" when="2007">2007</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">On the propagation of errors in the size of join results</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Ioannidis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Christodoulakis</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">19 ACM SIGMOD Conf. on the Management of Data</title>
				<meeting><address><addrLine>Boulder</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1991-05">May 1991</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">The state of the art in distributed query processing</title>
		<author>
			<persName><forename type="first">D</forename><surname>Kossmann</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Comput. Surv</title>
		<imprint>
			<biblScope unit="volume">32</biblScope>
			<biblScope unit="issue">4</biblScope>
			<biblScope unit="page" from="422" to="469" />
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">optimizer validation and performance evaluation for distributed queries</title>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">F</forename><surname>Mackert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">M</forename><surname>Lohman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Twelfth International Conference on Very Large Data Bases</title>
				<editor>
			<persName><forename type="first">W</forename><forename type="middle">W</forename><surname>Chu</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Gardarin</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><surname>Ohsuga</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Y</forename><surname>Kambayashi</surname></persName>
		</editor>
		<meeting><address><addrLine>Kyoto, Japan</addrLine></address></meeting>
		<imprint>
			<publisher>Morgan Kaufmann</publisher>
			<date type="published" when="1986-08">Aug. 1986</date>
			<biblScope unit="page" from="149" to="159" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">The semantics and complexity of SPARQL</title>
		<author>
			<persName><forename type="first">J</forename><surname>Perez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Arenas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Gutierrez</surname></persName>
		</author>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Extensible/rule based query rewrite optimization in Starburst</title>
		<author>
			<persName><forename type="first">H</forename><surname>Pirahesh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Hellerstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Hasan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 1992 ACM SIGMOD International Conference on Management of Data</title>
				<editor>
			<persName><forename type="first">M</forename><surname>Stonebraker</surname></persName>
		</editor>
		<meeting>the 1992 ACM SIGMOD International Conference on Management of Data<address><addrLine>San Diego, California</addrLine></address></meeting>
		<imprint>
			<publisher>ACM Press</publisher>
			<date type="published" when="1992">June 2-5, 1992. 1992</date>
			<biblScope unit="volume">21</biblScope>
			<biblScope unit="page" from="39" to="48" />
		</imprint>
	</monogr>
	<note>SIGMOD Record (ACM Special Interest Group on Management of Data)</note>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">SPARQL query language for RDF</title>
		<author>
			<persName><forename type="first">E</forename><surname>Prud'hommeaux</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Seaborne</surname></persName>
		</author>
		<ptr target="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/" />
	</analytic>
	<monogr>
		<title level="m">W3C recommendation</title>
				<meeting><address><addrLine>W3C</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2008-01">Jan. 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<title level="m" type="main">Query evaluation and optimization in the semantic web</title>
		<author>
			<persName><forename type="first">E</forename><surname>Ruckhaus</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Ruiz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M.-E</forename><surname>Vidal</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Access path election in a relational database management system</title>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">G</forename><surname>Selinger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">M</forename><surname>Astrahan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">D</forename><surname>Chamberlin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">A</forename><surname>Lorie</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">G</forename><surname>Price</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proc. ACM-SIGMOD International Conference on Management of Data</title>
				<meeting>ACM-SIGMOD International Conference on Management of Data</meeting>
		<imprint>
			<date type="published" when="1979-06-01">May 30 -June 1, 1979</date>
			<biblScope unit="page" from="23" to="34" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Index structures and algorithms for querying distributed RDF repositories</title>
		<author>
			<persName><forename type="first">H</forename><surname>Stuckenschmidt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Vdovjak</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G.-J</forename><surname>Houben</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Broekstra</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">WWW</title>
				<editor>
			<persName><forename type="first">S</forename><forename type="middle">I</forename><surname>Feldman</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Uretsky</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Najork</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><forename type="middle">E</forename><surname>Wills</surname></persName>
		</editor>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="631" to="639" />
		</imprint>
	</monogr>
</biblStruct>

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