<!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>A Preference-based Stream Analyzer</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lena Rudenko</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Markus Endres</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Patrick Roocks</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Werner Kießling</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Augsburg 86135 Augsburg</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Stream query processing is becoming increasingly important as more time-oriented data is produced and analyzed nowadays. Examples for stream-based applications include sensor networks and infrastructure monitoring, electronic trading on Wall Street, or social networks. In the last decade several technologies have emerged to address the challenges of processing such high-volume and realtime data streams, which do not take the form of persistent database relations, but rather arrive in continuous, rapid and time-varying data objects. In this paper we focus on the new problem of preference-based query processing to analyze data streams. Preferences allow us to filter out only relevant information of the continuous data flow. In addition we provide a database approach that stores only the most important information in the database w.r.t. the user's preference. For this we introduce novel preference-based integrity constraints to keep the data right and consistent.</p>
      </abstract>
      <kwd-group>
        <kwd>Stream processing</kwd>
        <kwd>Preference SQL</kwd>
        <kwd>Twitter</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Many modern applications such as network monitoring, financial analysis, infrastructure
manufacturing, sensor networks, meteorological observations, or social networks require
query processing over data streams, e.g., [
        <xref ref-type="bibr" rid="ref1 ref2 ref3">1,2,3</xref>
        ]. A stream is a continuous unbounded
flow of data objects made available over time, hence, it is not feasible to locally store a
stream in its entirety. Likewise, queries over streams run continuously over a period of
time and incrementally return new results as new data arrive.
      </p>
      <p>
        Such stream data can be simple numbers or complex data, depending on the kind
of stream provider. Through collecting and analyzing this data new ways of doing
business emerge, since having such comprehensive data allows to act faster and better on
certain situations. However, several aspects of data management need to be considered
in the presence of data streams, offering a new research direction for the database
community, cp., [
        <xref ref-type="bibr" rid="ref4 ref5">4,5</xref>
        ]. The data model and query semantics must allow order-based and
time-based operations (e.g., queries over a 60sec moving window). Due to performance
and storage constraints, backtracking over a data stream is not feasible, hence online
stream algorithms are restricted to making only one pass over the data.
      </p>
      <p>
        In this paper, which is work in progress, we present an approach to analyze data
streams with the support of user preferences. The goal is to find the most interesting
information w.r.t. to one’s preference among the incredible number of streamed objects.
Preferences help us to separate the relevant data from the pointless information and
make it accessible to the user either as human readable data or by storing it in a database.
Another advantage of preference queries is that they never lead to an empty result. In
addition, we provide a language for connecting and querying streams in Preference SQL
[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], a SQL extension which supports preference queries.
      </p>
      <p>
        As running example we use the online social networking service Twitter as a
realworld stream application. Twitter is a very fast medium of information dissemination.
The amount of tweets, that are posted every day is very large. That is 500 million short
messages daily according to data from the year 2015 [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. It is an endless data flow, that
includes important and interesting records, but for the most part it consists of spam and
information trash. According to a study from 2009 [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] the news take only 4% of the
whole data. Nevertheless, in the tweets one finds latest news about accidents, terroristic
acts or natural disasters which are posted live by eyewitnesses before any journalist is
in place. The same is true for various sports events, where the most important news
are posted on Twitter by journalists or fans. Furthermore, Twitter provides easy access
by the public Twitter API, a huge amount of diverse attributes and short 140 character
messages (tweets) which can be analyzed.
      </p>
      <p>The remainder of this paper is organized as follows: Section 2 highlights related
work. Section 3 recapitulates essential concepts of the used preference model. In Section
4 we present the framework for analyzing data streams with the help of preferences, and
in Section 5 we introduce a language for preference-based stream analysis. Finally, we
conclude in Section 6.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Related Work</title>
      <p>Data streams can be found in every area of life: stock market, social networks, network
monitoring, or meteorological observations, just to name a few. Hence, it is not amazing
that many scientists all over the world try to process and to analyze these streams to
extract important information from such continuous data flows.</p>
      <p>
        Babu and Widom [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] for example, focus primarily on the problem of query
processing, specifically on how to define and evaluate continuous queries over data streams.
They address semantic issues as well as efficiency concerns. In [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] the authors motivate
the need for and research issues arising from stream data processing. The paper gives an
overview on past work and projects in the area of data streams, and explores topics in
query languages, requirements and challenges in stream query processing. Faria et. al
[
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] describe various applications of novelty detection in data streams, and Krempl et. al
[
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] discuss challenges for data stream mining such as: protecting data privacy, handling
incomplete and delayed information, or analysis of complex data. In [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] the authors
examine the characteristics of important preference queries (skyline, top-k and top-k
dominating) and review algorithms proposed for the evaluation of continuous preference
queries under the sliding window streaming model. However, they do not present any
framework for preference based stream evaluation. An important research direction
associated with stream processing is data stream clustering. This issue is discussed e.g.,
in [
        <xref ref-type="bibr" rid="ref14 ref15 ref16">14,15,16</xref>
        ]. Cherniack et. al [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] describe a large-scale distributed stream processing
system, and discusses approaches for addressing load management, high availability,
and federated operation issues in such an environment. In [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] the authors investigate
queries over continuous unbounded streams for applications like network monitoring,
financial analysis, and sensor networks. For this they present the Stanford Data Stream
Management System (STREAM) for rapid streams and long-running queries, where the
system resources may be limited.
      </p>
      <p>
        Since we refer to Twitter in our prototype implementation, we also present some
current work on this social network. In [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] the authors describe an event notification
system that monitors and delivers semantically relevant tweets if these meet the user’s
information needs. As an example they construct an earthquake prediction system
targeting Japanese tweets. For their system they use keywords, the number of words, and
the context of an event. Railean and Moraru [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] address the problem of determining
the popularity of social events (concerts, festivals, sport events, conferences, etc.) based
on their presence in Twitter. For this they compute an association coefficient for an
event-tweet pair and use it to determine the popularity.
      </p>
      <p>All previous work rely on analyzing the content of a stream or describe stream
processing systems. In this paper we filter data by a preference based approach, which
never leads to an empty result and only extracts the most important information w.r.t. the
user’s preference.
3</p>
    </sec>
    <sec id="sec-3">
      <title>Preference Background</title>
      <p>
        Preference queries in database systems have been in focus for some time, leading to
diverse approaches, e.g., [
        <xref ref-type="bibr" rid="ref21 ref22">21,22</xref>
        ]. We follow the preference model from [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], where
a preference P = (A; &lt;P ) is a strict partial order on the domain of A. Thus &lt;P is
irreflexive and transitive. The term x &lt;P y is interpreted as “I like y more than x”. The
maximal objects of a preference P = (A; &lt;P ) on an input database relation R are all
tuples that are not dominated by any other tuple w.r.t. the preference. These objects are
computed by the preference selection operator [P ](R). It finds all best matching tuples
t w.r.t. the preference P , where t:A is the projection to the attribute set A.
[P ](R) := ft 2 R j :9t0 2 R : t:A &lt;P t0:Ag
(1)
The retrieval of best-matching results follows a Best-Matches-Only (BMO) query model
that retrieves exact matches if such objects exist and best alternatives else.
3.1
      </p>
      <sec id="sec-3-1">
        <title>Preference Constructors</title>
        <p>To specify a preference, the framework follows an inductive approach of base preference
constructors that can be combined to complex preference constructors. Subsequently, we
present some selected constructors which are often applied by users.</p>
        <p>
          Preferences on single attributes are called base preferences. There are base preference
constructors for continuous (numerical), discrete (categorical), temporal, and spatial
domains. For example, the categorical preference POS(A; POS-set) expresses that a
user has a set of preferred values, the POS-set. The BETWEEN(A; [low; up]) preference
expresses the wish for a value between a lower and an upper bound. The LOWEST(A)
constructor and the HIGHEST(A) constructor prefer the minimum and maximum, resp.
Note that the dominance criterion of the base preferences is based on a SCORE function
+
f : dom(A) ! R0 , where f (v) describes how far the domain value v is away from the
optimal value. Dominated tuples have higher function values, i.e., x &lt;P y () f (x) &gt;
f (y). For more details we refer to [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ].
        </p>
        <p>
          Complex preferences determine the relative importance of preferences and
combine base or again complex preference constructors. Intuitively, people speak of “this
preference is more important to me than that one” or “these preferences are all equally
important”. In the Pareto preference P := P1 P2 = (A1 A2; &lt;P ) all preferences are
of equal importance, while in a Prioritization preference P := P1 &amp; P2 the preference
P1 = (A1; &lt;P1 ) is more important than P2 = (A2; &lt;P2 ). For a more formal definition
and more detailed information we refer to [
          <xref ref-type="bibr" rid="ref22 ref6">22,6</xref>
          ].
        </p>
        <p>Example 1. Consider the UEFA European Championship which takes place in France
in 2016. The tournaments take place in various cities (location). Since many people
post interesting information about the tournaments on Twitter, we want to get all tweets
which are posted by an author who stays in Lyon or Marseilles. This preference can be
expressed by a POS constructor: P := POS(location; fLyon, Marseillesg). If there is
no tweet posted in Lyon or Marseilles, the preference selection operator would find all
tweets from other cities.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>Preference SQL</title>
        <p>The Preference SQL query language is a declarative extension of SQL by strict partial
order preferences, behaving like soft constraints under the BMO query model as
described above. Syntactically, Preference SQL extends the SELECT statement of SQL by
an optional PREFERRING clause, cp. Figure 1.</p>
        <sec id="sec-3-2-1">
          <title>SELECT : : : &lt;projection, aggregation&gt;</title>
        </sec>
        <sec id="sec-3-2-2">
          <title>FROM : : : &lt;table reference&gt;</title>
        </sec>
        <sec id="sec-3-2-3">
          <title>WHERE : : : &lt;hard conditions&gt;</title>
        </sec>
        <sec id="sec-3-2-4">
          <title>PREFERRING : : : &lt;soft conditions&gt; TOP : : : &lt;number&gt;</title>
          <p>
            The keywords SELECT, FROM and WHERE are treated as the standard SQL keywords.
The PREFERRING clause specifies a preference which is evaluated after the WHERE
condition. If TOP-k is specified, only the k best tuples according to the preference order
are returned [
            <xref ref-type="bibr" rid="ref23 ref6">6,23</xref>
            ].
          </p>
          <p>Example 2. The POS preference in Example 1 can be expressed in Preference SQL
as follows, where Tournament is the database which contains information about the
football competitions in France.</p>
          <p>SELECT * FROM Tournament</p>
        </sec>
        <sec id="sec-3-2-5">
          <title>PREFERRING location IN (’Lyon’, ’Marseilles’);</title>
          <p>In the above example IN expresses a POS preference. The keyword AND would state a
Pareto preference, and PRIOR TO leads to a Prioritization (not shown in this example).</p>
          <p>
            The current University prototype of the Preference SQL database system adopts a
(Java 1.7-based) middleware approach as depicted in Figure 2. For a seamless application
integration we have extended standard JDBC technology towards a Preference SQL /
JDBC package. This enables the client application to submit Preference SQL queries
through familiar SQL clients. The Preference SQL middleware parses the query and
performs preference query optimization. The preference selection operator implemented
by several evaluation algorithms computes the final result. This approach has proven its
flexibility and performance in various prototype applications conducted so far, see [
            <xref ref-type="bibr" rid="ref6">6</xref>
            ]
for example.
          </p>
          <p>SQL Client</p>
          <p>Preference SQL</p>
          <p>JDBC</p>
          <p>Preference SQL</p>
          <p>Parser
Query Optimization</p>
          <p>Algorithms</p>
          <p>Data</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Analyzing Streams with Preference SQL</title>
      <p>Our goal is to analyze data streams with Preference SQL, which needs well structured
data. Hence, we need a framework that transforms the data from a stream into a
processable format. For this goal we use Apache Flink, an open source platform for distributed
stream and batch data processing1. The core of Apache Flink is a data flow engine created
in Java and Scala. Flink includes several APIs2, e.g., for Data-Streams, DataSets, Tables,
etc. These data streams can be created from various sources (e.g., message queues, socket
streams, files) and converted to other (structured) formats.</p>
      <p>For our prototype we decided to use Twitter as an example data source, because it
has an open API and free accessible data (tweets). In addition, Apache Flink provides a
Twitter Streaming API connector for direct connection to this social network.
4.1</p>
      <sec id="sec-4-1">
        <title>Stream Processing Framework</title>
        <p>When processing data streams with Preference SQL, two fundamental tasks must be
carried out:
1. The data must have a Preference SQL processable format, because Preference SQL
works on attribute based data, but streams are often encoded in various formats, e.g.,
as JSON3-objects as in Twitter.
1 https://flink.apache.org/
2 Application Programming Interface
3 http://www.json.org/
2. The result computation must be adapted to stream properties, since the dataflow is
continuous. There is no “final” result after some data of the stream is processed.
Hence, the result must be calculated and adjusted as soon as new data arrive.</p>
        <p>Before we discuss these tasks in detail, we provide a brief overview of the whole
system (see Figure 3). For more details we refer to the following sections. The incoming
data stream is processed by Apache Flink, where our StreamProcessor transforms the
data into a Preference SQL readable format. Our DataAccumulator builds chunks of
objects, which can be processed by Preference SQL. Preference SQL evaluates the user
preference on these data chunks and presents the result to the user. For this we suggest
two possibilities: (1) we present the result to the user on his mobile phone, tablet or PC
directly after the computation, or (2) we store it in a database for later usage. The first
possibility is intended for users which are in front of their internet compatible device
and want to find specific information rapidly. On the other hand we propose a method to
store the result in a database for further processing to which we refer in Section 5.3.</p>
        <p>Stream of
objects</p>
        <p>ETL Process in Apache Flink
Data Stream</p>
        <p>StreamProcessor</p>
        <p>DataAccumulator</p>
        <p>Stream of
processed data</p>
        <p>Stream of
data chunks</p>
        <p>Database
Preference</p>
        <p>SQL</p>
        <p>Best matching</p>
        <p>objects</p>
        <p>Live output to
cell phone, tablet or PC
The individual objects delivered by a data stream are encoded and not compatible with
Preference SQL, which works on attribute-based data. That means the data must be
structured and needs an attribute based format like attributeName = attributeValue.</p>
        <p>The transformation of the stream objects to a list of single attribute values occurs in
the StreamProcessor, cp. Figure 3. For this one has to implement the mapping of
the object in the stream to a table structured format. The data types of the attributes can
be extracted from the stream objects, e.g., in the case of JSON-encoded tweets with the
help of the Twitter API.</p>
        <p>Example 3. The twitter messages (tweets) are JSON-encoded as shown in Figure 4. For
example, this tweet was posted on June 22, 2016 at 12:49:31 UTC (created at:”Wed
Jun 22 12:49:31 +0000 2016”) and has a specific identifier (id:745599599151353856).
There are several different fields which describe a tweet in detail, e.g., name, description
(the user-defined string describing the account), created at (date of account creation),
followers count, status count (number of tweets of the user), lang (language the user
speaks) and many more. Our StreamProcessor converts such objects into more
structured data, e.g., into created_at = ‘‘Wed Jun 22 ...’’ and defines the data type
“VARCHAR”.
f” c r e a t e d a t ” : ”Wed Jun 22 12 : 4 9 : 3 1 +0000 2016 ” , ” i d ” :745599599151353856 , ” i d s t r ” :
” 745599599151353856 ” , ” t e x t ” : ” #SVK and #NIR have a l r e a d y q u a l i f i e d b u t who w i l l j o i n
them ?nnnnFind o u t how t h e l a s t 16 i s s h a p i n g u p : h t t p s : / / t . co / Wu1kXiTt7L #EURO2016” ,
” s o u r c e ” : ”&lt;a h r e f =n” h t t p : / / t w i t t e r . comn” r e l =n” n o f o l l o w n”&gt;T w i t t e r Web C l i e n t &lt;n/a&gt;” ,
” t r u n c a t e d ” : f a l s e , ” i n r e p l y t o s t a t u s i d ” :745581100681019392 ,
” i n r e p l y t o s t a t u s i d s t r ” : ” 745581100681019392 ” , ” i n r e p l y t o u s e r i d ” :1469402426 ,
” i n r e p l y t o u s e r i d s t r ” : ” 1469402426 ” , ” i n r e p l y t o s c r e e n n a m e ” : ”UEFAEURO” , ” u s e r ” :
f” i d ” :1469402426 , ” i d s t r ” : ” 1469402426 ” , ” name ” : ”UEFA EURO 2016 ” , ” s c r e e n n a m e ” :
”UEFAEURO” , ” l o c a t i o n ” : n u l l , ” u r l ” : ” h t t p : / / euro2016 . t i c k e t s . u e f a . com” , ” d e s c r i p t i o n ” :
” The o f f i c i a l home o f #EURO2016 on T w i t t e r . ” , . . . g</p>
        <p>
          After the object preparation the endless stream must be split into finite parts to
be processed in Preference SQL. This is done by grouping objects into chunks. This
concept is similar to moving window, described in [
          <xref ref-type="bibr" rid="ref24">24</xref>
          ]. The grouping occurs in the
DataAccumulator, see Figure 3. It takes a stream of processed objects as input and
provides a stream of chunks as output. The grouping can be size (how many objects are
in one chunk) or time (the number of objects per chunk is determined by the time) based.
For more details we refer to Section 5.2. The result of such a grouping is still a stream,
but each chunk itself is finite and can be processed with the Preference SQL system.
        </p>
        <p>In the last step we analyze the data chunks within Preference SQL. The input is a
stream of chunks, the output contains the most preferred objects w.r.t. the preference
specified by a user.
Preference SQL computes the result based on the current chunk provided by the ETL
processor (Figure 3). But this temporary BMO-set is not the final result, because when
new data arrives it may occur that the next chunk contains better objects w.r.t. the user
preference. Hence, the current temporary BMO-set must be compared to the objects
from the next chunks in the ETL process, and so on.</p>
        <p>
          More detailed: Let c1; c2; ::: be the chunks provided by the ETL processor. The
Preference SQL system evaluates the user preference P on the first chunk, i.e., [P ](c1).
Since c2 could contain better objects we also have to compare the new objects from c2
with the current BMO-set, i.e., we compute [P ]( [P ](c1) [ c2), and so on. However,
this leads to a computational overhead if c2 is large. Therefore we apply a pre-filter to
c2, i.e., we first compute [P ](c2) and afterwards apply the preference selection to the
union of [P ](c1) and [P ](c2), since the following holds [
          <xref ref-type="bibr" rid="ref25">25</xref>
          ]:
[P ](c1 [ c2) = [P ]( [P ](c1) [ [P ](c2))
(2)
This leads to a correct result, but is more efficient than the first approach.
5
        </p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>A Language for Preference-based Stream Analysis</title>
      <p>In this section we suggest a language for preference-based stream analysis. For this we
first show how to connect streams within Preference SQL and afterwards we present a
language for analyzing streams based on preference constructors. In addition, we present
preference integrity constraints for table statements.</p>
      <sec id="sec-5-1">
        <title>5.1 Connecting Streams in Preference SQL</title>
        <p>
          We want do develop an approach, that allows to analyze any data stream with Preference
SQL. For this, we have to connect the data stream to the Preference SQL system, in
particular to the Apache Flink engine as depicted in Figure 3. Note that there are also
other approaches to stream analysis and querying, e.g., [
          <xref ref-type="bibr" rid="ref26 ref27 ref28">26,27,28</xref>
          ], each of them has
SQL-like syntax and enhanced support for windows and ordering, but they cannot be
used together with preferences.
        </p>
        <p>Since we want to connect different streams, we present a general approach to create
a stream connection within the Preference SQL system. For this we provide an interface
which must be implemented for each individual stream. In our current University
prototype we provide a TwitterStream connector and we plan to implement connections
for stock market and other well-known stream provider. After implementing the stream
connector, a user can connect to a stream by a CREATE STREAM statement. Figure 5
presents our syntax of our proposed language for stream creation.</p>
        <p>CREATE</p>
        <p>STREAM
streamName</p>
        <p>AS
stream_connector
stream_connector ::=</p>
        <p>TwitterStream(consumerKey, consumerSecret, token, secret)
StockStream(…)</p>
        <p>…</p>
        <p>The keywords CREATE STREAM introduce a stream connection with the user defined
name streamName. TwitterStream corresponds to the name of the pre-imple-mented
Twitter connector which gets the user-specific login credentials.</p>
        <p>Example 4. Figure 6 shows an example for the connection statement for Twitter. The
cryptic character sequences represent the Twitter account login data.</p>
        <sec id="sec-5-1-1">
          <title>CREATE STREAM MyTwitterStream AS TwitterStream</title>
          <p>(’NQEk0KbszVbaAcjCWLksbodkN’,
’HDKxlp2REOHvuq59oKrZZsdFovItwG6upOGJuSN4btr6npp2c3’,
’2400192752-DQSedtepr68SerQVyjHLzpHhMitcwJQfbvwxnLi’,
’BAk0krCYq77W4p45UwyuAuNnpR3nrv9WofO9PNL46YFch’);</p>
        </sec>
      </sec>
      <sec id="sec-5-2">
        <title>Querying Streams in Preference SQL</title>
        <p>After the connection to a stream the data can be queried with Preference SQL. For this
we provide a preference-based stream language, whose syntax is shown in Figure 7.</p>
        <p>After SELECT STREAM one can specify a list of columns column_list, where each
column corresponds to a field in a stream object. streamName corresponds to the user
defined name given in the CREATE STREAM statement (cp. Section 5.1). The kind and
the quantity of the chunks, that are build from the endless stream (cp. Section 4.2), can
be defined by the user. Thereby, the chunks can be size or time based. When specifying a
time (in seconds), the DataAccumulator in the ETL process (cp. Figure 3) builds chunks
based on the data retrieved within the given time slot. By specifying a size the ETL
processor groups size chunks together. PREFERRING introduces the preference condition
which will be evaluated on the data stream.</p>
        <p>SELECT</p>
        <p>STREAM
column_list</p>
        <p>FROM
streamName
CHUNK</p>
        <p>SIZE
TIME
=
number</p>
        <p>PREFERRING
preference_condition</p>
        <p>Example 5. Let us imagine that a user wants to read the tweets about the semifinals in
the European Football Championship. The desired hashtag is #EURO2016 or #em2016
and the location should be the same as in Example 2. In addition, equally important
(Pareto preference) to the previous preferences is the author of a tweet, in this example
UEFA Euro 2016 or EM 2016 Frankreich. The chunks should be constructed time based,
here 60 seconds. The corresponding preference stream query is shown in Figure 8.</p>
        <p>SELECT STREAM *</p>
        <sec id="sec-5-2-1">
          <title>FROM MyTwitterStream</title>
          <p>CHUNK TIME = 60</p>
        </sec>
        <sec id="sec-5-2-2">
          <title>PREFERRING hashtag IN (’#EURO2016’, ’#em2016’)</title>
        </sec>
        <sec id="sec-5-2-3">
          <title>AND location IN (’Lyon’,’Marseilles’)</title>
        </sec>
        <sec id="sec-5-2-4">
          <title>AND author IN (’UEFA EURO 2016’,’EM 2016 Frankreich’);</title>
          <p>5.3</p>
        </sec>
      </sec>
      <sec id="sec-5-3">
        <title>Preference Based Integrity Constraints</title>
        <p>
          In this section we suggest an extension of SQL constraints [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ] to specify preference
conditions within a table definition. SQL constraints are used to specify rules for the
data in a table which now should be preference based. If there is any violation between
the preference constraint and the data action, the action is aborted by the constraint.
        </p>
        <p>In this sense, the idea is to define preference based integrity constraints which apply
whenever a tuple should be inserted into the table. If the new tuple passes the preference
condition it will be stored in the table. Otherwise, if it is dominated by any other tuple
already in the table, the new tuple can be discarded or moved to another table which
holds dominated objects. Note that when considering streams, the current content of a
database table does not necessarily represent the perfect matches, because they can be
dominated by better candidates arriving later in the stream. Therefore it is important to
specify what happens with these dominated tuples. Figure 9 shows the syntax diagram
which describes our preference integrity constraints.</p>
        <p>TABLE
CHECK
cp. SQL-92
…
cp. SQL-92</p>
        <p>…
WITH</p>
        <p>DOMINATED
PREFERRING
(
preference_condition</p>
        <p>)
DELETE
PUSH</p>
        <p>INTO</p>
        <p>
          The preference constraint follows the standard CREATE TABLE syntax [
          <xref ref-type="bibr" rid="ref29">29</xref>
          ]. After
the keyword CHECK PREFERRING one can specify the preference condition a new
tuple must fulfill. Since preferences apply to tuples, the new tuple must be compared
to the objects already in the table. If the new one is dominated it can be discarded
(WITH DOMINATED DELETE); this is also the default value. On the other hand one
may decide to store dominated objects in another table specified by the tableName
(WITH DOMINATED PUSH INTO . . . ). The preference constraints show a similar
behaviour when a new tuple dominates objects already in the table. Then the dominated
tuples can be deleted immediately or moved to another table containing worse objects.
        </p>
        <p>
          Holding already dominating tuples could be useful, e.g., if one wants to get the
Top-k elements of a preference query and the result w.r.t. the preference does not provide
enough objects (cp. [
          <xref ref-type="bibr" rid="ref23">23</xref>
          ]). Hence, the result must be filled-up with the next better objects
until k objects are retrieved. In this sense we also can specify a cascade of tables holding
“worse tuples”.
        </p>
        <p>Example 6. Reconsider Example 5, but now we want to specify a table constraint instead
of analyzing the streams directly within Preference SQL. Figure 10 shows the CREATE</p>
        <p>Note that constructing a cascade of worse objects means to specify preference based
integrity constraints for the table worseTweetsTable and move the dominated objects to a
third relation, and so on.
6</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper we proposed a preference based approach for stream analysis. We suggested
a language for connecting and querying streams in Preference SQL. In addition, we
presented the possibility to specify integrity constraints based on preference constructors.
We have implemented our approach based on Twitter data, because of its open API.
However, the same approach can be used for other data streams, such as stock exchanges
or Facebook posts.</p>
      <p>Our work is in progress and thus, we plan to implement further stream connectors
and to extend the preference stream query language. A comprehensive experimental
evaluation as well as a comparison to other existing stream analysis frameworks is also
future work.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>J.</given-names>
            <surname>Chen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D. J.</given-names>
            <surname>DeWitt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Tian</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Wang. NiagaraCQ: A Scalable Continuous</surname>
          </string-name>
          <article-title>Query System for Internet Databases</article-title>
          .
          <source>In Proceedings of SIGMOD '00</source>
          , pages
          <fpage>379</fpage>
          -
          <lpage>390</lpage>
          , New York, NY, USA,
          <year>2000</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>P.</given-names>
            <surname>Bonnet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gehrke</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Seshadri</surname>
          </string-name>
          .
          <article-title>Towards Sensor Database Systems</article-title>
          .
          <source>In Proceedings of MDM '01</source>
          , pages
          <fpage>3</fpage>
          -
          <lpage>14</lpage>
          , London, UK, UK,
          <year>2001</year>
          . Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>J.</given-names>
            <surname>Sankaranarayanan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Samet</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B. E.</given-names>
            <surname>Teitler</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. D.</given-names>
            <surname>Lieberman</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Sperling</surname>
          </string-name>
          . Twitterstand:
          <article-title>News in Tweets</article-title>
          .
          <source>In Proceedings of ACM '09</source>
          , pages
          <fpage>42</fpage>
          -
          <lpage>51</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>L.</given-names>
            <surname>Liu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Pu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Tang</surname>
          </string-name>
          .
          <article-title>Continual Queries for Internet Scale Event-Driven Information Delivery</article-title>
          .
          <source>IEEE Trans. on Knowl. and Data Eng</source>
          .,
          <volume>11</volume>
          (
          <issue>4</issue>
          ):
          <fpage>610</fpage>
          -
          <lpage>628</lpage>
          ,
          <year>July 1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>L.</given-names>
            <surname>Golab and M. T. O</surname>
          </string-name>
          <article-title>¨ zsu</article-title>
          .
          <source>Issues in Data Stream Management. SIGMOD 03</source>
          ,
          <issue>32</issue>
          (
          <issue>2</issue>
          ):
          <fpage>5</fpage>
          -
          <lpage>14</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>W.</given-names>
            <surname>Kießling</surname>
          </string-name>
          ,
          <string-name>
            <surname>Endres</surname>
            <given-names>M.</given-names>
          </string-name>
          , and Wenzel F. The
          <string-name>
            <surname>Preference SQL System - An Overview</surname>
          </string-name>
          .
          <source>Bulletin of the Technical Commitee on Data Engineering</source>
          , IEEE CS,
          <volume>34</volume>
          (
          <issue>2</issue>
          ):
          <fpage>11</fpage>
          -
          <lpage>18</lpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>C.</given-names>
            <surname>Smith. DMR Twitter Statistic</surname>
          </string-name>
          <article-title>Report</article-title>
          . http://expandedramblings.com/index.php/downloads/ twitter-statistic
          <source>-report/</source>
          ,
          <year>2015</year>
          . Accessed:
          <fpage>2016</fpage>
          -04-22.
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>R.</given-names>
            <surname>Kelly</surname>
          </string-name>
          .
          <article-title>Twitter Study (Pearanalytics)</article-title>
          . http://pearanalytics.com/ wp-content/uploads/2009/08/Twitter-Study-August-
          <year>2009</year>
          .pdf,
          <year>2009</year>
          . Accessed:
          <fpage>2016</fpage>
          -04-19.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>S.</given-names>
            <surname>Babu</surname>
          </string-name>
          and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          .
          <article-title>Continuous Queries over Data Streams</article-title>
          . SIGMOD Rec.,
          <volume>30</volume>
          (
          <issue>3</issue>
          ):
          <fpage>109</fpage>
          -
          <lpage>120</lpage>
          ,
          <year>September 2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>B.</given-names>
            <surname>Babcock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Babu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Datar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Motwani</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          .
          <article-title>Models and Issues in Data Stream Systems</article-title>
          .
          <source>In Proceedings of PODS '02</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>16</lpage>
          , New York, USA,
          <year>2002</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>E. R.</given-names>
            <surname>Faria</surname>
          </string-name>
          ,
          <string-name>
            <given-names>I. J. C. R.</given-names>
            <surname>Gonc</surname>
          </string-name>
          <article-title>¸alves,</article-title>
          <string-name>
            <surname>A. C. P. L. F. de Carvalho</surname>
            , and
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Gama</surname>
          </string-name>
          .
          <article-title>Novelty detection in data streams</article-title>
          .
          <source>Artificial Intelligence Review</source>
          ,
          <volume>45</volume>
          (
          <issue>2</issue>
          ):
          <fpage>235</fpage>
          -
          <lpage>269</lpage>
          ,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. G. Krempl,
          <string-name>
            <surname>I. Zˇliobaite</surname>
          </string-name>
          , D. Brzezi n´ski, E. H u¨llermeier,
          <string-name>
            <given-names>M.</given-names>
            <surname>Last</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lemaire</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Noack</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Shaker</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Sievi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Spiliopoulou</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Stefanowski</surname>
          </string-name>
          .
          <article-title>Open Challenges for Data Stream Mining Research</article-title>
          . SIGKDD Explor. Newsl.,
          <volume>16</volume>
          (
          <issue>1</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>10</lpage>
          ,
          <year>September 2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>M. Kontaki</surname>
            ,
            <given-names>A. N.</given-names>
          </string-name>
          <string-name>
            <surname>Papadopoulos</surname>
            , and
            <given-names>Y.</given-names>
          </string-name>
          <string-name>
            <surname>Manolopoulos</surname>
          </string-name>
          .
          <source>Continuous Processing of Preference Queries in Data Streams</source>
          , pages
          <fpage>47</fpage>
          -
          <lpage>60</lpage>
          . Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>J. A.</given-names>
            <surname>Silva</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. R.</given-names>
            <surname>Faria</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. C.</given-names>
            <surname>Barros</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. R.</given-names>
            <surname>Hruschka</surname>
          </string-name>
          ,
          <string-name>
            <surname>A. C. P. L. F. de Carvalho</surname>
            , and
            <given-names>J.</given-names>
          </string-name>
          <string-name>
            <surname>Gama</surname>
          </string-name>
          .
          <article-title>Data Stream Clustering: A Survey</article-title>
          .
          <source>ACM Comput. Surv.</source>
          ,
          <volume>46</volume>
          (
          <issue>1</issue>
          ):
          <volume>13</volume>
          :
          <fpage>1</fpage>
          -
          <lpage>13</lpage>
          :
          <fpage>31</fpage>
          ,
          <year>July 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>R. D. Baruah</surname>
            ,
            <given-names>Angelov P.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Baruah D. Dynamically</surname>
          </string-name>
          <article-title>Evolving Clustering for Data Streams</article-title>
          .
          <source>In Evolving and Adaptive Intelligent Systems (EAIS)</source>
          ,
          <source>2014 IEEE Conference on</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>6</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>X.</given-names>
            <surname>Gu</surname>
          </string-name>
          and
          <string-name>
            <given-names>P. P.</given-names>
            <surname>Angelov</surname>
          </string-name>
          .
          <article-title>Autonomous Data-Driven Clustering for Live Data Stream</article-title>
          .
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>M. Cherniack</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          <string-name>
            <surname>Balakrishnan</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <string-name>
            <surname>Balazinska</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Carney</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          <string-name>
            <surname>Cetintemel</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Xing</surname>
            , and
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Zdonik</surname>
          </string-name>
          .
          <article-title>Scalable Distributed Stream Processing</article-title>
          .
          <source>In CIDR 2003 - First Biennial Conference on Innovative Data Systems Research</source>
          , Asilomar, CA,
          <year>January 2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>A.</given-names>
            <surname>Arasu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Babcock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Babu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Datar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Ito</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Nishizawa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Rosenstein</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          . STREAM:
          <article-title>The Stanford Stream Data Manager (Demonstration Description)</article-title>
          .
          <source>In Proceedings of SIGMOD '03</source>
          , pages
          <fpage>665</fpage>
          -
          <lpage>665</lpage>
          , New York, NY, USA,
          <year>2003</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>M.</given-names>
            <surname>Okazaki</surname>
          </string-name>
          and
          <string-name>
            <given-names>Y.</given-names>
            <surname>Matsuo</surname>
          </string-name>
          . Semantic Twitter:
          <article-title>Analyzing Tweets for Real-Time Event Notification</article-title>
          . In BlogTalk, volume
          <volume>6045</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>63</fpage>
          -
          <lpage>74</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <given-names>C.</given-names>
            <surname>Railean</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Moraru</surname>
          </string-name>
          .
          <source>Discovering Popular Events From Tweets. Conference on Data Mining and Data Warehouses (SiKDD)</source>
          ,
          <year>October 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <given-names>J.</given-names>
            <surname>Chomicki</surname>
          </string-name>
          .
          <article-title>Preference Formulas in Relational Queries</article-title>
          .
          <source>In TODS '03: ACM Transactions on Database Systems</source>
          , volume
          <volume>28</volume>
          , pages
          <fpage>427</fpage>
          -
          <lpage>466</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <given-names>W.</given-names>
            <surname>Kießling</surname>
          </string-name>
          .
          <article-title>Foundations of Preferences in Database Systems</article-title>
          .
          <source>In Proceedings of VLDB '02</source>
          , pages
          <fpage>311</fpage>
          -
          <lpage>322</lpage>
          . VLDB Endowment,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <given-names>M.</given-names>
            <surname>Endres</surname>
          </string-name>
          and
          <string-name>
            <given-names>T.</given-names>
            <surname>Preisinger</surname>
          </string-name>
          .
          <article-title>Behind the Skyline</article-title>
          .
          <source>In Proceedings of DBKDA. IARIA</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <given-names>B.</given-names>
            <surname>Babcock</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Datar</surname>
          </string-name>
          , and
          <string-name>
            <given-names>R.</given-names>
            <surname>Motwani</surname>
          </string-name>
          .
          <article-title>Sampling from a Moving Window over Streaming Data</article-title>
          .
          <source>In Proceedings of SODA '02</source>
          , pages
          <fpage>633</fpage>
          -
          <lpage>634</lpage>
          , Philadelphia, PA, USA,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <given-names>B.</given-names>
            <surname>Hafenrichter</surname>
          </string-name>
          and
          <string-name>
            <given-names>W.</given-names>
            <surname>Kießling</surname>
          </string-name>
          .
          <article-title>Optimization of Relational Preference Queries</article-title>
          .
          <source>In Proceedings ADC</source>
          , pages
          <fpage>175</fpage>
          -
          <lpage>184</lpage>
          , Darlinghurst, Australia,
          <year>2005</year>
          . Australian Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <given-names>A.</given-names>
            <surname>Arasu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Babu</surname>
          </string-name>
          , and
          <string-name>
            <surname>J. Widom.</surname>
          </string-name>
          <article-title>CQL: A Language for Continuous Queries over Streams and Relations</article-title>
          , pages
          <fpage>1</fpage>
          -
          <lpage>19</lpage>
          . Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <given-names>A.</given-names>
            <surname>Arasu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Babu</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom. The CQL Continuous Query Language: Semantic Foundations</surname>
          </string-name>
          and
          <string-name>
            <given-names>Query</given-names>
            <surname>Execution</surname>
          </string-name>
          .
          <source>The VLDB Journal</source>
          ,
          <volume>15</volume>
          (
          <issue>2</issue>
          ):
          <fpage>121</fpage>
          -
          <lpage>142</lpage>
          ,
          <year>June 2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <given-names>N.</given-names>
            <surname>Jain</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Mishra</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Srinivasan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Gehrke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Widom</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Balakrishnan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            <surname>Cetintemel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Cherniack</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Tibbetts</surname>
          </string-name>
          , and
          <string-name>
            <given-names>S. B.</given-names>
            <surname>Zdonik</surname>
          </string-name>
          .
          <article-title>Towards a Streaming SQL Standard</article-title>
          . PVLDB,
          <volume>1</volume>
          (
          <issue>2</issue>
          ):
          <fpage>1379</fpage>
          -
          <lpage>1390</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29. SQL-
          <volume>92</volume>
          .
          <article-title>Database Language SQL</article-title>
          .
          <string-name>
            <surname>Document</surname>
            <given-names>ISO</given-names>
          </string-name>
          /IEC 9075:
          <year>1992</year>
          .
          <article-title>ANSI Document X3</article-title>
          .
          <fpage>135</fpage>
          -
          <string-name>
            <surname>1992 (SQL92 Standard)</surname>
          </string-name>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>