<!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>Scalable Linked Data Stream Processing via Network-Aware Workload Scheduling</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lorenz Fischer</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Thomas Scharrenbach</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Abraham Bernstein</string-name>
          <email>bernsteing@ifi.uzh.ch</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Zurich</institution>
          ,
          <country country="CH">Switzerland</country>
        </aff>
      </contrib-group>
      <fpage>81</fpage>
      <lpage>96</lpage>
      <abstract>
        <p>In order to cope with the ever-increasing data volume, distributed stream processing systems have been proposed. To ensure scalability most distributed systems partition the data and distribute the workload among multiple machines. This approach does, however, raise the question how the data and the workload should be partitioned and distributed. A uniform scheduling strategy|a uniform distribution of computation load among available machines|typically used by stream processing systems, disregards network-load as one of the major bottlenecks for throughput resulting in an immense load in terms of intermachine communication. In this paper we propose a graph-partitioning based approach for workload scheduling within stream processing systems. We implemented a distributed triple-stream processing engine on top of the Storm realtime computation framework and evaluate its communication behavior using two real-world datasets. We show that the application of graph partitioning algorithms can decrease inter-machine communication substantially (by 40% to 99%) whilst maintaining an even workload distribution, even using very limited data statistics. We also nd that processing RDF data as single triples at a time rather than graph fragments (containing multiple triples), may decrease throughput indicating the usefulness of semantics.</p>
      </abstract>
      <kwd-group>
        <kwd>semantic ow processing</kwd>
        <kwd>stream processing</kwd>
        <kwd>linked data</kwd>
        <kwd>complex event processing</kwd>
        <kwd>graph partitioning</kwd>
        <kwd>workload scheduling</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        In today's connected world, data is produced in ever-increasing volume, velocity,
variety, and veracity [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]: sensor data is gathered, transactions are made in the
nancial domain, people post/tweet messages, humans and machine infer new
information, etc. This phenomenon can also be found on the Web of Data (WoD),
where new sources are made available as linked data. In order to process these
growing data sources many have proposed the use of distributed infrastructures
such as Hadoop [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. The batch-oriented synchronous nature of these solutions,
however, may not be suited to ensure the timeliness of data processing. To
address this shortcoming stream processing approaches based on information- ow
processing have been proposed [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. These systems continuously ingest new data
as it arrives and process it online rather than storing it for batch-like processing.
This continuous processing puts a signi cant load on employed systems and is,
obviously, limited by the capacity of the employed hardware infrastructure.
      </p>
      <p>To cope with increasing demands distributed stream processing systems have
been proposed, which usually ensure scalability by partitioning the data and
distributing the processing thereof to multiple machines. Note that deciding how
to partition the data and distribute the associated processing is a non-trivial task
and can have dire consequences on performance.</p>
      <p>Distributed processes communicate with each other by sending messages
containing partial results of the overall processing task. Processes on di erent
machines communicate over the network and the resulting network load
limits scalability in two ways: First, network tra c is several orders of magnitude
slower than in-machine communication.1 Second, the bandwidth of each
machine limits the amount it can possibly communicate to processes residing on
other machines. As a consequence, nding a good distribution strategy for
distributed stream processing is crucial to ensure scalability. Note that the variety
and potential schemalessness of linked data further aggravates the problem as a
Semantic Flow Processing (SFP) systems (1) cannot rely on the schema for data
partitioning and distribution and (2) the triple-nature (rather than the reliance
on n-tuples or relations) of the underlying data model potentially further
subdivides the smallest unit of data increasing the number of possible partitioning
(and hence, distributions).</p>
      <p>As distributed stream processing becomes more important in many areas of
business and science, researchers have proposed various ways to schedule
workload in such systems. Interestingly, we found no previous work that employs
existing graph partitioning algorithms to the problem of workload scheduling.</p>
      <p>In this paper, we propose the use of graph partitioning algorithms to optimize
the assignment of tasks to machines : we regard the data- ow within an SFP
system as a graph, where the edges' weight represents the required bandwidth
for information passing and the vertices' weight represents the computational
load required to process incoming messages. Speci cally, we operationalize the
edge weights as the number of messages sent from one process to another, based
on the two assumptions: rst, that messages are approximately the same size,
and second the computational load to be proportional to the number of messages
received by a processing vertex, assuming further that all messages need the same
time to be processed on all tasks. We then use a graph partitioning algorithm to
optimize the distribution of processes to machines whilst addressing two possibly</p>
    </sec>
    <sec id="sec-2">
      <title>1 Numbers from 2009: 500 times for latency, 40 times for bandwidth. See</title>
      <p>http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf for
more details.
opposing goals: we try to minimize costly network messages whilst distributing
computation load as evenly as possible.</p>
      <p>To evaluate our distribution approach we implemented an SFP system on
top of the Storm realtime computation framework.2 Our implementation allows
compiling certain SPARQL queries, modi ed for stream processing, to a Storm
topology. To enable parallelization of the processing functions the data ows in
the topology are partitioned using appropriate hash functions. Next we
empirically determine the weight of the nodes and edges, partition the graph, and
\schedule" the processes accordingly on machines. In our evaluation using two
real-world datasets we show that our graph-partitioning strategy can decrease
inter-machine communication substantially (by 40% to 99%) whilst maintaining
an even workload distribution, even using very limited data statistics.</p>
      <p>The remainder of this paper is structured as follows: next we succinctly
summarize the most relevant related literature (Section 2) before introducing the
details of our approach (Section 3). This is followed by a description of our
experiments (Section 4), a discussion of the results in the light of its limitations
(Section 5), and an exploration of the implications and future work (Section 6).
2</p>
      <sec id="sec-2-1">
        <title>Related Work</title>
        <p>
          This study relates to (distributed) Information Flow Processing (IFP)3,
Semantic Flow Processing (SFP) [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ], and workload scheduling. We provide an overview
of the most relevant work in these elds.
        </p>
        <p>
          Information Flow Processing: The eld of IFP is vast and a survey is beyond
the scope of this paper [
          <xref ref-type="bibr" rid="ref12 ref15 ref8">15, 12, 8</xref>
          ]. Here we only discuss the Aurora/Borealis [
          <xref ref-type="bibr" rid="ref1 ref2">1,
2</xref>
          ] systems, as they are most closely related to our research.
        </p>
        <p>
          Aurora [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] lets the user specify a query using a set of operators (boxes), which are
connected by links (arrows). The Borealis system [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] extends Aurora to include|
among other things|the distribution of the workload across multiple machines.
Load distribution is achieved by query partitioning { the assignment of operators
(boxes) or a collection thereof (superboxes) to worker machines. This approach
has two drawbacks: First, it limits the degree of parallelism to the number of
boxes. Second, in its nave setup, all information exchange between operators
goes over the network consuming enormous amounts of network bandwidth. The
only improvement to this strategy is to group operators onto the same machine.
Our approach, in contrast, proposes to improve load distribution through data
partitioning, where operators themselves are replicated across many machines.
Semantic Flow Processing: The C-SPARQL system [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] performs query matching
on subsets of the information ow de ned by windows. For query matching on the
subsets it uses a regular SPARQL engine that is extended by some stream related
        </p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>2 http://storm-project.net</title>
    </sec>
    <sec id="sec-4">
      <title>3 The term Information Flow Processing has been suggested by [8] as the term Stream</title>
      <sec id="sec-4-1">
        <title>Processing is ambiguous due to its usage by both the Complex Event Processing (CEP) and the Data Stream Management Systems (DSMS) community.</title>
        <p>
          features. A distributed version was implemented using Apache S4 platform;4 yet
with no particular scheduling strategy [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ].
        </p>
        <p>
          EP-SPARQL [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] is a complex event processing system, which extends the
ETALIS system with a ow-extension of SPARQL for query processing [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ].
ETALIS is a Prolog engine for which no distributed version exists yet.
        </p>
        <p>
          CQELS [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ] \implements the required query operators natively to avoid the
overhead and limitations of closed system regimes". It optimizes the execution
by dynamically re-ordering operators to \prune the triples that will not make
it to the nal output" thus limiting processing. As the implementation makes
no assumptions about scheduling with regards to messages sent between algebra
components CQELS could bene t from a scheduler based on graph partitioning.
        </p>
        <p>
          SPARQLStream[
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] is a streaming extension to SPARQL that allow users to
query relational data streams over a set of stream-to-ontology mappings. The
language supports powerful windowing constructs and SRBench [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ] uses it as
the default engine for evaluation.
        </p>
        <p>
          INSTANS [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] and Sparkwave[
          <xref ref-type="bibr" rid="ref11">11</xref>
          ] are based on a RETE network. Both their
implementations are non-distributed implementation, yet very e cient. Both
stream querying systems support the RDF, and RDFS, and|in the case of
Sparkwave|OWL entailment. It would be interesting to investigate, to what
extent our approach could be built on top of a RETE-network.
        </p>
        <p>
          Workload Scheduling: Earlier work on scheduling in stream processing
concentrated on operator scheduling in wide area networks [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] and admission control
[
          <xref ref-type="bibr" rid="ref21 ref22">21, 22</xref>
          ], recent work also targets the usecase in which workload of a stream
processor in a compute cluster has to be scheduled [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
        </p>
        <p>
          SODA [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] is an admission control system and task scheduler for System S
[
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. The task scheduler within SODA is based on a mixed-integer optimization
program and also uses techniques from the network ow literature.
        </p>
        <p>
          Pietzbuch et al. [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] present an decentralized algorithm that is geared towards
minimizing the overall latency of a stream processor whose operators are spread
out across a wide area network, while taking CPU load into account.
        </p>
        <p>
          Xia et al. [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] map the problem of task scheduling to a multicommodity ow
network and present a distributed scheduling algorithm in which the amount of
communication between nodes is incrementally analyzed and reduced.
        </p>
        <p>
          Aniello et al. [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ] present two algorithms which are both geared towards
reducing the number tuples tranferred over the network of a storm cluster. Their
static "o ine" scheduler takes characteristics of the topology into account while
their "online" scheduler collects network statistics, before optimizing the
schedule by moving nodes connected by hot edges, i.e. edges that exhibit high data
volumes, on the same server. Their evaluations conducted using a synthetic and
a real-world dataset show, that online-scheduling results in much lower latency
than static or uniform scheduling.
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>4 http://incubator.apache.org/s4</title>
      <sec id="sec-5-1">
        <title>Problem Statement, Formal De nitions, and System</title>
      </sec>
      <sec id="sec-5-2">
        <title>Description</title>
        <p>In this section we provide the technical foundations for our study. These include
a brief introduction to the data- and processing models employed. Next, we
introduce the three concepts of data partitioning, scheduling, and load balancing
and how they a ect the performance of a distributed system, before presenting
a formal problem description. We then show, how the multi-constraint
optimization problem of scheduling can be solved using a graph partitioning algorithm,
before we, nally, introduce the system we built to test our hypothesis.
3.1</p>
        <p>
          Data- and Processing Model
A linked data stream processing system essentially continuously ingests large
volumes of temporally annotated RDF triples and emits the results again as data
stream. Such systems usually implement a version of the SPARQL algebra that
has been modi ed for processing dynamic data. In our case, we focus on a subset
of those de ned in the queries of the SRBench benchmark [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]. The processing
model considered is a directed graph, where the nodes are algebra operators and
data is sent along the edges. Hence, each query can be transformed to a query
tree of algebra expressions { the topology of the processing graph.
While the system consumes temporally annotated RDF triples (&lt; s; p; o &gt; [ts],
where ts denotes the time-stamp), internal operators in the topolgy consume
and emit sets of variable bindings when performing the operations associated
with the respective operator. These variable bindings comprise a nite number
of variable/value pairs ?var=val, where ?var is a variable name and val is an
RDF term. Note that source operators (i.e., the input to the topology) consume
timestamped RDF triples instead of bindings and output operators may also
output RDF triples if so speci ed by the query.
3.2
        </p>
        <p>Scheduling, Data Partitioning, and Load Balancing
In order to scale the system horizontally (i.e., executing its parts on multiple
processing units concurrently) we may replicate parts (or the whole) of the query's
topology and execute clones of the operators in parallel. We refer to these clones
as tasks or task instances. Hence, each operator will be instantiated as a nite
number of n tasks (where n 1). These task instances, and thus the workload of
the system, can then be distributed across several machines in a compute cluster.
We refer to the assignment of tasks to machines as scheduling. Figure 1 shows an
example operator topology and one possible schedule distributing tasks to two
servers of a compute cluster. As there are now multiple instances of each operator
of the topology the data needs to be partitioned in accordance to the operator's
needs. For stateless operators, such as lters or binders, it does not matter which
variable bindings they receive for processing. For stateful operators, in contrast,
such as aggregators or joins, the system needs to provide some guarantees about
Topology</p>
        <p>Server 1
g Bg
n
i
p
u
o
r
g Bo
g
n
i
p
u
o
r
g Bb
tg1
to1
tb2
tb1</p>
        <p>Server 2
tg2</p>
        <p>tg3
to2
tb3
what data gets delivered to which task instance. To this end, a topology con
guration contains grouping strategies (or information about the data partitioning
function) on the edges between operator nodes (see also Figure 1 on left).</p>
        <p>In this study we assume the number of messages sent between the machines
as the key performance indicator (KPI). This is seems to be a prudent choice,
as the network can become a bottleneck of a distributed system that needs to
scale horizontally. We acknowledge that our choice has limitations and therefore
provide a discussion in Section 5.</p>
        <p>Given these de nitions the goal of our approach is to nd a schedule (i.e.,
assignment of tasks to machines) for a given topology that minimizes the total
number of data messages transferred over the network, whilst maintaining an
even workload distribution across machines in terms of CPU cycles.</p>
        <p>To achieve this goal we partition the data into logical units. We then
regroup these using graph-partitioning which provides us with an optimization
procedure to minimize the number of messages sent between machines. As a
result, we propose the following hypothesis: Combining data partitioning between
tasks with a scheduler that employs graph partitioning to assign the resulting task
instances outperforms a uniform distribution of data and tasks to machines.</p>
        <p>Our hypothesis assumes that di erent distribution strategies signi cantly
inuence the number of messages sent between the machines. Most stream
processing platforms attempt to uniformly distribute compute loads possibly incurring
high network tra c. Approaches like Borealis schedule the processors according
to the structure of the query, where every operator is is assigned to one
machine. This approach has an upper limit in parallelization equal to the number
of operators and may incur high network tra c between to machines containing
active operators. Instead we propose to parallelize the operators and minimize
network tra c allowing for more exibility for distributing the workload. Most
importantly, we propose that the scheduling strategy should optimize the amount
of data sent between machines.
3.3</p>
        <p>Formal Problem Description
In principle, a linked data stream processing system can be conceived as a query
graph QSF P =&lt; Op; M C &gt;, where Op is a nite set of operators opi (i.e.,
Op = [iI=1opi) and each opi executes one or more algebra operations. The ow
of information between the operators is established by a set of edges mc 2
M C (message channels) that denote a ow of messages (time-stamped variable
bindings [ts]) between the operators (opi).</p>
        <p>Since we want to enable parallelism and distribution each operator is
instantiated in parallel as a nite number of tasks Topi = [jJ=i1ti;j , where Ji denotes
the degree of parallelism of opi. We refer to the set of all tasks as</p>
        <p>I I Ji</p>
        <p>T = [i=1Topi = [i=1[j=1ti;j</p>
        <p>Furthermore, each message channel mc 2 M C is instantiated via a nite set
of channels cij 2 C that connect the tasks ti; tj 2 T . Speci cally, connected
tasks send messages, i.e., time-stamped variable bindings [ts] to each other.</p>
        <p>Thus for each query graph QSF P there exists a parallelized Task Graph
T G =&lt; T; CT &gt;, where in addition to the mapping of each task to exactly
one operator (as speci ed above) each channel c 2 C maps to exactly one mc
and each mc has at least one c to ensure connectivity. Hence, to ensure a
correct mapping we require that 8opa; opb; mcopa;opb : 9ta;j ; tb;j ; cta;j;tb;j , where (i)
mcopa;opb is a message channel that connects opa and opb, and (ii) cta;j;tb;j
connects the corresponding tasks. In addition, we require that 8ta;j ; tb;j ; cta;j;tb;j :
9exactly oneopa; opb; mcopa;opb to ensure the one-to-n mapping of operators and
message channels to tasks and channels.</p>
        <p>Graph Partitioning A partitioning divides a set into pairwise disjoint sets.
In our case we want to partition the vertices of a graph G = (V; E) with a
nite set of vertices V and a nite set of edges E V V . A partitioning
P = fP1; : : : ; PK g for V separates the set of vertices such that
{ it covers the whole set of vertices: SK</p>
        <p>k=1 Pk = V and
{ the partitions Pk are pairwise disjoint: TK
k=1 Pk = ;
In addition, we denote (i) a partitioning function by part : V ! P that assigns
every vertex v1; : : : vl the partition Pk 2 P it belongs to, (ii) a cost function by
cost(P ) 2 R, which denotes some kind of cost associated with the partitioning
that is subject to optimization, and (iii) a load imbalance factor stdv(P ) that
ensures that the workload of the tasks is evenly distributed over the machines.</p>
        <p>We can easily map our problem of minimizing the number of messages that
are sent between machines to a graph partitioning problem with a speci c cost
function. First, we de ne the graph to be partitioned as the Task Graph T G. A
partitioning of T G maps each task to exactly one machine.</p>
        <p>Second, in our case the cost function to minimize is the number of messages
sent between machines. We operationalize the cost function for the network
trafc as cost(P ) = PK
k=1 cost(Pk). Each cost(Pk) denotes the cost of transmitting
messages, i.e. the bindings, across the network to a task situated in partition
Pk. Hence, we increment the cost for cost(Pk) by one, i a message is being
sent from task t1 to t2 and the two tasks are not in the same partition, i.e.
part(t1) 6= part(t2) and t2 2 Pk.</p>
        <p>Third, when optimizing the costs for the partitions we add the constraint
that the partitions shall be balanced with respect to the computational load.
We approximate the computation load for a partition by counting the number
of messages that are sent over a channel for which task t is the receiving task:
load(Pk) = Pcta;tb 2C count(m) i part(tb) = Pk, where m 2 M is a message
sent over channel cta;tb . Note that we count all incoming messages for each task,
regardless of wether they had to be transferred over the network or not, as they
have to be processed and hence consume computation power in both cases.</p>
        <p>In order to make optimal use of the available resources, a balanced load
distribution is desirable. The standard deviation stdv(P ) of the load for all
partitions shall hence not exceed a certain threshold C:</p>
        <p>C &lt; stdv(P ) =
s Pp2P ( load(P )</p>
        <p>K</p>
        <p>
          K
load(p))2
All graph partitioning in this paper were computed using the METIS algorithms
for graph partitioning [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] { a well established graph partitioning package.
3.4
        </p>
        <p>KATTS
In order to test our hypothesis we built a research prototype of a distributed
linked data stream processing engine called KATTS .5 In order to keep the
programming overhead minimal, we chose to build our system on top of the Storm
realtime computation framework.6 While our current prototype is built using
Storm it is important to note, that our ndings are not only valid in the context
of Storm, but for any system that uses partitioned data streams.</p>
        <p>A Storm application is a graph, consisting of compute nodes that are
connected by edges. Edges are con gured using a partitioning function or grouping
strategy. Using the abstractions of Storm we implemented a set of stream
operators, a con guration environment, and a monitoring suite. Topologies can be
speci ed using XML and will output the sending behavior of the topolgy: the
communication graph. In addition to input operators that read time annotated
n-triple les and an output operator, the current set of supported operators
contains an aggregation operator (min, max, avg), a lter operator, a bind operator,
and a temporal join operator. Every incoming edge of each consuming operator
can be con gured with a grouping strategy. If no grouping strategy is con gured
local or shu e grouping will be used.7 We always used the eld grouping
strategy, which partitions the data based on the value of a tuple eld (i.e., the value
5 KATTS is a recursive acronym for Katts is A Triple Torrent Sieve. The code will
be made accessible at https://github.com/uzh/katts upon publication of the paper.
6 http://storm-project.net
7 https://github.com/nathanmarz/storm/wiki/Concepts#stream-groupings
of a variable). For partitioning Storm uses the hashCode() method of the eld
value, which in our case is an object of type java.lang.String.8 In addition to the
con guration parameters of the particular node implementation, each node of
the topolgy can be con gured with a value that de nes its degree of parallelism,
which is the number of task instances that should be created for this operator.</p>
        <p>The monitoring suite has two main components: (1) a data collection facility,
which records communication behvaior, and (2) a runtime monitoring component
that keeps track of the number of input sources the system is receiving data from.
When all sources have been fully processed, the data aggregation process will be
executed and the topology as well as the Storm cluster will be halted.
4</p>
      </sec>
      <sec id="sec-5-3">
        <title>Evaluation</title>
        <p>In this section we evaluate if our proposed strategy is indeed better in terms of
network load whilst maintaining a comparable host load when compared to a
baseline strategy of trying to attain a uniform distribution of load. To that end
we rst present the experimental setup and then present the results.
4.1</p>
        <p>
          Experimental Setup
Datasets We evaluated our system using two example queries that are built
around a real world streaming use case: SRBench [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ], which works with streams
of weather measurements, and an open government dataset, which we collected
through public sources.
        </p>
        <p>
          SRBench is an RDF/SPARQL streaming benchmark consisting of weather
observations about hurricanes and blizzards in the USA during the years 2001 and
2009 and contains 17 queries on LinkedSensorData,9 which originated from the
MesoWest project of the University of Utah.10 Given that our approach only
implements joins, simple aggregates, and triple-pattern matching, we restricted
ourselves to Q3, which searches for weather stations observing hurricane-like
condition. These are de ned as \a sustained wind (for more than 3 hours) of at
least 33 m/s or 74 mph." Without the pre x declaration a C-SPARQL [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] like
version of this query would look as follows:11
ASK
FROM STREAM &lt;http : //www. cwi . nl /SRBench/ observations &gt; [RANGE 3h STEP 1h ]
WH?ERoEb sfe r v a t i o n om owl : procedure ? s e n s o r ;
        </p>
        <p>oomm oowwll :: orebssuerlvt edProperty w[eoamthoewr:l W:filnodaStpVeae dlu e; ? value ] .</p>
        <p>GgROUP BY ? s e n s o r
HAVING ( MIN(? value ) &gt;= "74"^^ xsd : f l o a t )
8 http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#hashCode()
9 http://wiki.knoesis.org/index.php/LinkedSensorData
10 http://mesowest.utah.edu/index.html
11 We employ a minimum aggregate rather than the average value used in
http://www.w3.org/wiki/SRBench, as we think the word "sustained" means that
the wind speed has to be "at least" 74 miles per hour and not "on average". We also
use a step size of 1 hour instead of 10 minutes.
SRB Q3:
OpenGov:
The resulting topology has four processes depicted in Fig.2: First, the reader
node (R) reads the incoming stream and scans it for the triple patterns contained
in the where-clause. Second, the matched bindings are then sent to the aggregator
node (A), which creates the minimum aggregate over the temporal window of
three hours and a step size of one hour. Third, the output of the aggregator is
then sent to the lter node (F), which lters all occurrences that are smaller
than 74 mph and sends all remaining instances to the output node (O). Finally,
the output node writes the occurrences into a le on disk.</p>
        <p>OpenGov Dataset: To complement the regular setup of SRBench, which consists
mostly of weather station measurements, we gathered a second data set, which
combines data on public spending in the US with stock ticker data.12 We devised
a query that would highlight (publicly traded) companies, that double their stock
price within 20 days and are/were awarded a government contract in the same
time-frame. This query requires the system to scan two sources, aggregate/ lter
values, and nally join certain events that may have a causal relation to each
using a temporal condition. The C-SPARQL representation of the query, for
example, looks as follows:
REGISTER QUERY PublicSpendingStock AS
FSREOLMECSTTRfEA?Mco&lt;mwparndys.ncarmspe/?t aicgkenecry. tnradmf &gt;e ?[RcAoNnGtEr a2c0t DidAY?SmTiEnP p1riDcAeY?] max price ? f a c t o r g
FROM STREAM &lt;usaspending . org / c o n t r a c t s . trdf &gt; [RANGE 20 DAY STEP 1 DAY]
WHERE f GRA?Pt Hic&lt;k werrdisd. cwrscp:P/Rt Cic k e r ?. ttri dckf&gt;e rfp r i c e ;
wc :COMNAM ?company name ;
wc :TICKER ? t i c k e r s y m b o l .
g U?NcIoOnNt rGaRcAtPHid&lt;uuss a:sapgeenndc yinidg . org / c o n t r a c t s . tnradmf&gt;e f;</p>
        <p>? agency
us : obligatedamount ? contract amount ;
us : vendorname ?company name .</p>
        <p>
          gg
AGGREGATE f (? min price , MIN, f? t i c k e r pp rr ii cc ee gg)) gg
ABGINGDREG(?ATmEaxf p(r?icmeax/ p?rmicien, pMrAicXe, Af?S t ?icf kacetro r )
FILTER(? f a c t o r &gt; 2)
The resulting topology (Fig.2) rst aggregates (A) the ticker-sourced (T) data to
compute the minimum and maximum over a time window of 20 days. It computes
the ratio between these numbers (B), and then lters those solutions where that
ratio is smaller than or equal to two (F). The remaining company tickers are
then joined (J13) with the ones that where awarded government contracts (C).
The joined tuples are then sent to the output node (O).
12 http://www.usaspending.gov, https://wrds-web.wharton.upenn.edu/wrds
13 We use a hash join with eviction rules for the temporal constraints.
Evaluation Criteria In accordance with the
Properties-Challenges-KPIsStress-tests (PCKS) paradigm for for benchmarking SFP systems [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ] we tested
the performance of our Distributed Flow Processing System by choosing the
number of inter-machines network messages as a key performance indicator
(KPI). As a secondary performance indicator (SPI) we chose the uniformity
of load distribution as measured by number of messages received per machine.
Procedure We used the following procedure to measure the performance of our
approach. First, we took each dataset and partitioned it to 12 les (as we had
12 machines at our disposal). The two queries were compiled into the topologies
described above and instantiated to allow 48 tasks for each node that is neither
a reader nor an output node.14 We then recorded the number of messages that
were sent between tasks at runtime.
        </p>
        <p>Second, to test our hypothesis we needed to partition the resulting
communication graph based on the network load of each channel. Since the channel loads
are not known before running the query we chose two experimental scenarios. In
the rst scenario we assume an oracle optimizer that would know the number of
messages that would ow along every channel. This scenario allows to establish
a hypothetical upper bound of quality that our method could attain, if it were
to have an oracle. In a second scenario we assumed a learning optimizer that
rst observes channel statistics for a brief period of time and then partitions the
graph accordingly. To that end we sliced the SRBench data into daily and the
OpenGov data into monthly slices. We then measured the the performance of
our approach based on learning during the preceding one to three time-slices,
essentially providing a adaptively learning system.</p>
        <p>
          Third, to partition the graph we employed METIS [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]. We used the gpmetis
in its standard con guration, which creates partitions of equal size, and only
changed the -objtype parameter to instruct METIS to optimize for total
communication volume when partitioning, rather than minimizing on total edgecut.15
4.2 Results
The Suitability of Graph Partitioning for Scheduling The results of our
evaluation are shown in Figure 3, which plots the number of network messages
divided by the number of total messages as a measure for the optimality of the
distribution. As the gure shows on the left, the SRBench data can be optimally
partitioned by the id of the reporting weather station even when using only the
data of the immediately preceeding time slice (Prev.1). All further computation
can be managed on a local machine, as no further joins are necessary. This
clearly indicates that some queries can be trivially distributed when a good data
partition is either known or can be learned.
        </p>
        <p>
          On the right we nd the results for the OpenGov dataset. This evaluation is
not quite as clear-cut, as the join operation requires a signi cant redistribution of
messages. The results here are quite interesting. First, we nd that our approach
14 As we we ran our experiments on machines with more than 12 cores, we were able
to achieve better capacity utilization by using more than 12 tasks per node.
15 We used v5.0.2 with default partitioning (kway) and default load imbalance of 1.03.
clearly outperforms the uniform distribution strategy by a factor of two to three.
Second, it is interesting to observe that even longer learning periods, using two
(Prev.2) and even three previous time slices (Prev.3), do not necessarily improve
the overall performance - maybe due to over- tting or concept drift [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ].
        </p>
        <p>For the sake of brevity we only show data for three time-slices of each
evaluation in Table 1: on the left side again the results for the embarrassingly parallel
SRBench query, which shows a reduction in network usage by over 99%. The
right side of the table is more interesting as it exhibits the gain of our approach
in a non-trivial case. Even for the OpenGov query, workload distribution using
a graph partitioning approach yields savings of network bandwidth of over 40%.
Balancing Computation Load Next to keeping the bandwidth usage to a
minimum, a distributed system must also make good use of the available
computational power. For this reason we analyzed how many messages were processed
by all tasks on each host for the two queries. Figure 4 shows the results of this</p>
        <sec id="sec-5-3-1">
          <title>SRBench Q3 August, 2004</title>
          <p>OpenGov , 2001</p>
        </sec>
        <sec id="sec-5-3-2">
          <title>Slice Aug 9 Aug 10 Aug 11</title>
          <p>Uniform Oracle Prev.1 Slice Uniform Oracle Prev.1
1
1
1
0.7%
0.0%
0.0%
0.0% Feb 69,5%
0.7% Mar 69,8%
0.0% Apr 69,8%
29.0% 36.0%
32.1% 30.1%
37.7% 32.1%
evaluation: The load distribution resulting from the graph partitioned task
assignment only di ers slightly from the one found by uniform task distribution
(average relative standard deviation [RSD] OpenGov : 7:04% for partitioning vs.
5:27% for uniform baseline; SRBench: 3:74% for partitioning vs. 2:68% for
uniform baseline).</p>
          <p>The In uence of Data Partitioning The results above are very encouraging.
One of the major limitations of our measurements, however, is that we assumed
that the data came partitioned into meaningful groups. Whilst this assumption
is often true in practice (the input from weather stations comes as grouped
messages from one station, data about one stock usually arrives from one source,
etc.). But in some worst-case scenarios the data might be mixed (even if a total
random intermixing is unlikely). To investigate the robustness of our procedure
against this assumption we ran our approach under two di erent partitioning
regimes: rst, we made sure to partition the data along a di erent hash function
that chosen by our system (which relies on the Storm hash partitioning) and
second, we ensured employing the same partitioning. The results of this sensitivity
analysis are shown in Figure 5 for the SRBench query, which graphs a Sankey
chart of the inter-task communication under both conditions, where the width
of the lines corresponds to the number of messages. As the gure clearly shows
the mixed hashing setting requires to reshu e all data from the readers to the
processing nodes, while the equally partitioning setting provides a clean stream
setting. As a consequence, we can expect that badly pre-partitioned data would
not exhibit as good results as the ones we exhibited above.
5</p>
        </sec>
      </sec>
      <sec id="sec-5-4">
        <title>Discussion and Limitations of the Results</title>
        <p>The results shown in the section above show that using a graph partitioning
algorithm to schedule tasks instances on machines does indeed reduce the messages
sent over the network whilst only having a slightly less even load distribution.
The rst part of the nding could be seen as almost tautological: it could be
understood as showing that graph-partitioning using a well-establish algorithm
is better than a partitioning that ignores network tra c but \only" focuses on
load distribution. We believe, however, that there are subtle considerations that
are less than obvious.</p>
        <p>First, the critical element is to realize that the operators can be parallelized with
an adequate data partitioning approach not to \just" use graph partitioning. It
is the interplay of the two partitionings that enables the graph partitioning to
nd a good schedule: inadequate data partition can lead to highly suboptimal
schedules as the results about the in uence of data partitioning show.
Second, the principle of nding the smallest possible partition given the desired
degree of parallelism (see also Section 3.2) seems important. How important
needs to be investigated. Whilst the idea seems simple its details are intricate
and required careful analysis|a task that we will have to continue in the future
by further exploring the interactions between data and graph partitioning and
devise an automated model for optimizing it.</p>
        <p>One somewhat surprising outcome of our analysis is that the overall e ciency
of the system heavily depends not only on the consistent use of the same
partitioning function, but also on the compatibility of the values over which the data
is being partitioned. Using incompatible data partioning functions can result in
very poor performance as seen in section 4.2. If a topology contains operators
that partition over incompatible elds such as in the OpenGov query, graph
partitioning is still useful, but much less e ective as when working with compatible
elds. It is this observation which contains an interesting insight: linked data
stream processors should work with graph fragments rather than triples.
\Naturally" occuring graph fragments often contain interdependent graph elements.
If one pulls these fragments apart due to some partitioning function one might
have to gather them in a later join. Hence, it seems prudent to favor an approach
that leaves these fragment together if a later join is foreseeable.</p>
        <p>
          Our current analysis is based on some underlying assumptions. First, we
assumed that some network statistics are available at the onset. Whilst this may
not always be given, our ndings shows that even a small amount of statistics
seem to produce adequate schedules. Hence, it seems straightforward to start
with an uniform distribution and then apply an incremental graph partitioning
approach [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ] improving the schedule during run-time.
        </p>
        <p>Second, we assumed that the processing load (both CPU and RAM) is
proportional to the number of messages received (i.e., constant operator complexity).
Whilst this assumption is de nitely true for some operators (e.g., computing the
average) others may require more computational e ort. We intend to address
this issue in future work.</p>
        <p>Third, we assumed that the query topology was given. Obviously, queries could
be translated to various topologies; each of which would require its own schedule.
Hence, it would make sense to combine our approach with a query optimizer {
a task beyond the scope of this paper.</p>
        <p>Also, our current evaluation has some limitations. First, it is limited to two
datasets and queries. Whilst the queries seem representative of many settings
we have seen we intend to signi cantly extend our evaluation in the future in
terms of number of datasets and queries. Second, all our evaluations were run on
a cluster with 12 machines, 1GB ethernet, and 24 cores each. Obviously, we will
have to extend our evaluation to investigate the interactions between number
of machines and cores available and the degree of parallelism \granted." Third,
we will have to run throughput-analyses in real-world setups in addition to our
current network analysis adding number of messages ingested per second as KPI.
6</p>
      </sec>
      <sec id="sec-5-5">
        <title>Conclusion and Outlook</title>
        <p>In this study we investigated whether and how scheduling the tasks of
Distributed Semantic Flow Processing (DSFP) systems bene ts from applying graph
partitioning. We implemented our approach on the Katts DSFP engine and
evaluated it using a query of the SRBench benchmark and a usecase inspired by the
open government movement with regards to network load. The results show that
using a graph partitioning algorithm to schedule task instances on machines does
indeed reduce the number of messages sent over the network. We also found that
this only leads to a slightly less even load distribution.</p>
        <p>The critical element for optimizing the scheduling using graph partitioning
is an adequate data partitioning for parallelizing the operators. Future work
will investigate whether the principle of nding the smallest possible data
partition given the desired degree of parallelism is as important as our experiments
indicate.</p>
        <p>Our study's most important shortcomings are its limitation to two datasets
and queries and the xed setup of the distributed system. For the rst we intend
to systematically extend our evaluation in the future in terms of number of
datasets and queries. For the latter, is it the interactions between number of
machines and cores available and the degree of parallelism that require further
research. Especially the impact of such interactions on throughput in terms of
messages ingested per second is of interest here.</p>
        <p>We are con dent that our ndings help making DSFP systems more scalable
and ultimately enable reactive systems that are capable of processing billions of
triples or graph fragments per second with a negligible delay. It is our rm belief
that the key to addressing these challenges needs to and will have to be revealed
from the data itself.</p>
        <p>Acknowledgements We would like to thank Thomas Hunziker, who wrote the
rst prototype of the KATTS system during his master's thesis in our group.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Abadi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Carney</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cetintemel</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cherniack</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Convey</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Erwin</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Galvez</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hatoun</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maskey</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rasin</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , Et Al.:
          <article-title>Aurora: a data stream management system</article-title>
          .
          <source>In: Proc. of the 2003 ACM SIGMOD</source>
          . pp.
          <volume>666</volume>
          {
          <issue>666</issue>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Abadi</surname>
            ,
            <given-names>D.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ahmad</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Balazinska</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hwang</surname>
            ,
            <given-names>J.h.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lindner</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Maskey</surname>
            ,
            <given-names>A.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rasin</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ryvkina</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tatbul</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xing</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zdonik</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>The Design of the Borealis Stream Processing Engine</article-title>
          .
          <source>In: Proc. CIDR2005</source>
          . pp.
          <volume>277</volume>
          {
          <issue>289</issue>
          (
          <year>2005</year>
          ),
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Amini</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Andrade</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bhagwan</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eskesen</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>King</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , Park,
          <string-name>
            <given-names>Y.</given-names>
            ,
            <surname>Venkatramani</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>Spc: A distributed, scalable platform for data mining</article-title>
          .
          <source>In: Proc. Workshop on Data Mining Standards, Services and Platforms</source>
          ,
          <string-name>
            <surname>DM-SSP</surname>
          </string-name>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Anicic</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fodor</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rudolph</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stojanovic</surname>
          </string-name>
          , N.:
          <article-title>EP-SPARQL: a uni ed language for event processing and stream reasoning</article-title>
          .
          <source>In: WWW2011</source>
          . pp.
          <volume>635</volume>
          {
          <issue>644</issue>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Aniello</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Baldoni</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Querzoni</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Adaptive online scheduling in storm</article-title>
          .
          <source>In: DEBS2013</source>
          (
          <year>2013</year>
          ),
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Barbieri</surname>
            ,
            <given-names>D.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Braga</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ceri</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Della Valle</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Grossniklaus</surname>
          </string-name>
          , M.:
          <string-name>
            <surname>C-SPARQL</surname>
          </string-name>
          :
          <article-title>A Continuous Query Language for RDF Data Streams</article-title>
          .
          <source>Int. J. of Sem. Comp</source>
          .
          <volume>4</volume>
          (
          <issue>1</issue>
          ),
          <volume>3</volume>
          {
          <fpage>25</fpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Calbimonte</surname>
            ,
            <given-names>J.p.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Corcho</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gray</surname>
            ,
            <given-names>A.J.G.</given-names>
          </string-name>
          :
          <article-title>Enabling Ontology-based Access to Streaming Data Sources</article-title>
          .
          <source>In: Proc. ISWC</source>
          <year>2010</year>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Cugola</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Margara</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Processing ows of information</article-title>
          .
          <source>ACM Computing Surveys</source>
          <volume>44</volume>
          (
          <issue>3</issue>
          ),
          <volume>1</volume>
          {
          <fpage>62</fpage>
          (Jun
          <year>2012</year>
          ),
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Hoeksema</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kotoulas</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>High-performance Distributed Stream Reasoning using S4</article-title>
          .
          <source>In: First International Workshop on Ordering and Reasoning</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Karypis</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kumar</surname>
          </string-name>
          , V.:
          <article-title>A Fast and High Quality Multilevel Scheme for Partitioning Irregular Graphs</article-title>
          .
          <source>SIAM J. on Scienti c Comp</source>
          .
          <volume>20</volume>
          (
          <issue>1</issue>
          ),
          <volume>359</volume>
          {392 (Jan
          <year>1998</year>
          ),
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Komazec</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cerri</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          : Sparkwave:
          <article-title>Continuous Schema-Enhanced Pattern Matching over RDF Data Streams</article-title>
          .
          <source>In: DEBS</source>
          <year>2012</year>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Lajos</surname>
            ,
            <given-names>J.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Toth</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Racz</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Panczel</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gergely</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Beszedes</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <source>Survey on Complex Event Processing and Predictive Analytics. Tech. rep.</source>
          ,
          <string-name>
            <surname>Citeseer</surname>
          </string-name>
          (
          <year>2010</year>
          ),
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Le-phuoc</surname>
            , D., Dao-tran,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parreira</surname>
            ,
            <given-names>J.X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hauswirth</surname>
            ,
            <given-names>M.:</given-names>
          </string-name>
          <article-title>A Native and Adaptive Approach for Uni ed Processing of Linked Streams and Linked Data</article-title>
          .
          <source>In: Proc. ISWC</source>
          <year>2011</year>
          . vol.
          <volume>7031</volume>
          , pp.
          <volume>370</volume>
          {
          <issue>388</issue>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Ou</surname>
            ,
            <given-names>C.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ranka</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Parallel incremental graph partitioning. Parallel and Distributed Systems</article-title>
          ,
          <source>IEEE Transactions on 8(8)</source>
          ,
          <volume>884</volume>
          {
          <fpage>896</fpage>
          (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Owens</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Survey of event processing</article-title>
          .
          <source>Tech. Rep. December, Air Force Research Laboratory Public A airs O ce</source>
          (
          <year>2007</year>
          ),
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Pietzuch</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ledlie</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shneidman</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Roussopoulos</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Welsh</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seltzer</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Network-Aware Operator Placement for Stream-Processing Systems</article-title>
          .
          <source>In: Proc. ICDE2006</source>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Rinne</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nuutila</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Seppo</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>INSTANS : High-Performance Event Processing with Standard RDF and SPARQL</article-title>
          .
          <source>In: ISWC 2012 Post. &amp; Demos</source>
          . pp.
          <volume>6</volume>
          {
          <issue>9</issue>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Scharrenbach</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Urbani</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Margara</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>della Valle</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bernstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Seven Commandments for Benchmarking Semantic Flow Processing Systems</article-title>
          .
          <source>In: ESWC</source>
          <year>2013</year>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Vorburger</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bernstein</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Entropy-based Concept Shift Detection</article-title>
          .
          <source>In: Proc. ICDM2006</source>
          . pp.
          <volume>1113</volume>
          {
          <issue>1118</issue>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>White</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Hadoop: The de nitive guide.</article-title>
          <string-name>
            <surname>O'Reilly Media</surname>
          </string-name>
          , Inc.,
          <volume>3</volume>
          <fpage>edn</fpage>
          . (
          <year>2012</year>
          ),
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Wolf</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bansal</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hildrum</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parekh</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rajan</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wagle</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>K.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fleischer</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>SODA: An optimizing scheduler for large-scale stream-based distributed computer systems</article-title>
          .
          <source>In: Proc. Middleware2008</source>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Xia</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Towsley</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , Zhang,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>Distributed resource management and admission control of stream processing systems with max utility</article-title>
          .
          <source>In: Proc. ICDCS2007</source>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Zhang</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Duc</surname>
            ,
            <given-names>P.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Corcho</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Calbimonte</surname>
          </string-name>
          , J.p.:
          <article-title>SRBench : A Streaming RDF / SPARQL Benchmark</article-title>
          .
          <source>In: Proc. ISWC</source>
          <year>2012</year>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>