=Paper=
{{Paper
|id=Vol-520/paper-3
|storemode=property
|title=Continuous Queries and Real-time Analysis of Social Semantic Data with C-SPARQL
|pdfUrl=https://ceur-ws.org/Vol-520/paper02.pdf
|volume=Vol-520
}}
==Continuous Queries and Real-time Analysis of Social Semantic Data with C-SPARQL==
Continuous Queries and Real-time Analysis of
Social Semantic Data with C-SPARQL
Davide Francesco Barbieri, Daniele Braga, Stefano Ceri, Emanuele Della Valle,
and Michael Grossniklaus
Dipartimento di Elettronica e Informazione, Politecnico di Milano
Piazza Leonardo da Vinci 32, I-20133 Milano, Italy
{dbarbieri|braga|ceri|dellavalle|grossniklaus}@elet.polimi.it
Abstract. Social semantic data are becoming a reality, but apparently
their streaming nature has been ignored so far. Streams, being unboun-
ded sequences of time-varying data elements, should not be treated as
persistent data to be stored “forever” and queried on demand, but rather
as transient data to be consumed on the fly by queries which are regis-
tered once and for all and keep analyzing such streams, producing an-
swers triggered by the streaming data and not by explicit invocation.
In this paper, we propose an approach to continuous queries and real-
time analysis of social semantic data with C-SPARQL, an extension of
SPARQL for querying RDF streams.
Keywords: Continuous SPARQL, Social Semantic Data, Continuous
Query, Real-time Analysis
1 Introduction and Motivation
“Which are the hottest topics under discussion on Twitter?” “Who is discussing
about Italian food right now?” “What have my close friends been discussing in
the last hour?” “Who is now discussing about Tuscany red wines in my social
network?” “How many people have been twittering about northern Italy white
wines in the last three hours?”
The information required to answer those queries is increasingly becoming
available on the Web. On the one side, we observe a trend in Web 2.0 as blogs,
feeds and microblogs are adopted to disseminate and publish information in
real-time streams trough social networking Web sites. This trend is often re-
ferred to as the Twitter phenomenon or, in more broader terms, as the so-called
blogosphere. On the other side, a trend can be also observed towards the inter-
linking of Social Web with semantics [1] using vocabularies such as Semantically-
Interlinked Online Communities1 (SIOC), Friend-of-a-Friend2 (FOAF) and Sim-
ple Knowledge Organization System3 (SKOS).
1
http://rdfs.org/sioc/spec/
2
http://xmlns.com/foaf/spec/
3
www.w3.org/2004/02/skos/
2 D.F. Barbieri, D. Braga, S. Ceri, E. Della Valle, M. Grossniklaus
As concrete examples, we can refer to three pioneers in this field
– SMOB [2] is a distributed and decentralized microblogging system built on
SIOC and FOAF, for which the authors implemented both a publishing and
an aggregating service prototype.
– Smesher [3] is a Semantic Microblogging client that integrates Twitter and
identi.ca, detects structure in microposts, extracts content in RDF and allows
SPARQL queries over the extracted information.
– SemanticTweet4 is a simple Web service that generates a FOAF RDF docu-
ment from the list of Twitter friends and followers of any Twitter user using
the Twitter REST API.
Several attempts to provide answers to those questions exist both by em-
ploying Information Retrieval (IR) methods (e.g., technorati.com, icerocket.com,
blogsearchengine.com, blogsearch.google.com) and Semantic Web methods (e.g.,
the SIOC API of sindice.com, SMOB aggregator and Smesher). Our claim is that
answering such questions in the space of one-time semantics of current IR and
Semantic Web tools is difficult because the underlying data are streams.
Data streams are unbounded sequences of time-varying data elements. They
have been recognized in a variety of modern applications, such as network mon-
itoring, traffic engineering, sensor networks, RFID tag applications, telecom call
records and financial applications. Processing of data streams has been largely
investigated in the last decade [4], specialized Data Stream Management Sys-
tems (DSMS) have been developed, and features of DSMS are becoming sup-
ported by major database products, such as Oracle and DB2.
DSMS represent a paradigm change in the database world as they move from
persistent relations and user-invoked queries to transient streams and continuous
queries. The innovative assumption is that streams can be consumed on the fly
rather than being stored forever and that queries which are persistently monitor-
ing streams are able to produce their answers even in the absence of invocation.
DSMS can support parallel query answering over data originating in real-time
and can cope with bursts of data by adapting their behavior to gracefully de-
grade answer accuracy by introducing higher levels of approximation. However,
even if such DSMS systems proved to be an optimal solution for on the fly anal-
ysis of data streams, they cannot perform complex reasoning tasks, such as the
ones required for computing the answers to the above questions.
At the same time, while Semantic Web reasoners are year after year scaling up
in the classical, time invariant domain of RDF triples and ontological knowledge,
reasoning upon rapidly changing information has been neglected or forgotten so
far. Reasoning systems assume static knowledge, and do not manage “changing
worlds”—at most, one can update the ontological knowledge and then repeat
the reasoning tasks.
In [5], we propose Stream Reasoning as the new multi-disciplinary approach
which will provide the abstractions, foundations, methods, and tools required to
4
http://semantictweet.com/
Continuous Queries and Analysis of Social Semantic Data with C-SPARQL 3
integrate data streams and reasoning systems, thus giving answer to the above
and other questions from different domains.
The rest of the paper is organized as follows. In Section 2, we provide the
background needed to understand the proposed extensions to RDF and SPARQL
introduced in Sections 3.1 and 3.3, respectively. In Section 4, we describe an
architecture and implementation of a C-SPARQL engine. Section 5 is dedicated
to the comparison of C-SPARQL to SPARQL using the real-world social data
streams described in Section 3.2. We close the paper by discussing related work
in Section 6 and draw conclusions in Section 7.
2 Background
This section illustrates previous work on data streams and the SPARQL lan-
guage.
2.1 Data Streams
DSMS are based on the observation that not only is it impossible to control the
order in which data items arrive in a stream, but, even more importantly, it is
not feasible to locally store a stream in its entirety [6].
The Chronicle data model [7] is one of the first models proposed for data
streams. It introduced the concept of chronicles, append-only ordered sequences
of tuples, as well as a restricted view definition language and an algebra that op-
erates both over chronicles and traditional relations. OpenCQ [8], NiagaraCQ [9]
and Aurora [10] are representative implementations of DSMS addressing contin-
uous queries and distribution issues.
The first query language tailored to data streams, CQL [11, 12], was the result
of research done by Babu et al. [13] on the problem of continuous queries over
data streams, addressing semantic issues as well as efficiency concerns. They
specify a general and flexible architecture for query processing in the presence
of data streams.
More recently, Law et al. [14] put particular emphasis on the problem of
mining data streams [15]. They conceived and developed Stream Mill [16], which
considers and addresses data mining issues extensively, specifically with respect
to the problem of online data aggregation and to the distinguishing notion of
blocking and non-blocking operators. Its query language (ESL) efficiently sup-
ports physical and logical windows (with optional slides and tumbles) on both
built-in aggregates and user-defined aggregates. The constructs introduced in
ESL extend the power and generality of DSMS.
2.2 SPARQL
SPARQL has been developed under the patronage of the W3C as the standard
query language for RDF. Therefore, the most authoritative source on its syntax
4 D.F. Barbieri, D. Braga, S. Ceri, E. Della Valle, M. Grossniklaus
and semantics is the W3C recommendation [17]. Several papers, however, discuss
extensions to the SPARQL language as defined by the W3C.
With the goal of proposing a syntactic and semantic extension to SPARQL,
we found the following works particularly useful.
– Gutierrez et al. [18], who define a conjunctive query language for RDF with
basic patterns, which is a formal and unambiguous basis for defining the
semantics of SPARQL queries evaluation;
– Perez et al. [19], who analyze the semantics and complexity of SPARQL; and
– Cyganiak [20] and Haase et al. [21], who independently present a relational
model of SPARQL which allows to implement SPARQL queries over a rela-
tional database engine.
3 RDF Streams and Continuous SPARQL
Data models and query languages for DSMS are not sufficient for continuously
querying and analyzing in real-time streams of RDF. Indeed, we deem that there
is a potential interest for giving up one-time semantics in RDF repositories as
well, so as to explore the benefits provided by continuous semantics. Therefore,
we introduce RDF streams as the natural extension of the RDF data model to
the new continuous scenario and Continuous SPARQL (or simply C-SPARQL)
as the extension of SPARQL for querying RDF streams.
3.1 RDF Streams
An RDF stream is defined as an ordered sequence of pairs, where each pair is
constituted by an RDF triple and its timestamp τ .
...
(hsubji , predi , obji i , τi )
(hsubji+1 , predi+1 , obji+1 i , τi+1 )
...
Timestamps can be considered the context of RDF triples. They are monoton-
ically non-decreasing in the stream (τi ≤ τi+1 ). They are not strictly increasing
because timestamps are not required to be unique. Any (unbounded, though fi-
nite) number of consecutive triples can have the same timestamp, meaning that
they occur at the same time, although sequenced in the stream according to
some positional order. Our definition of RDF streams extends RDF in the same
way as the stream type in CQL extends the relation type.
Named graphs [22] and N-Quads [23], a format that extends N-Triples with
context, can be both adopted as a concrete serialization for RDF streams. For our
experiments we adopt N-Quads and we use as context the timestamp encoded
as a RDF literal of type xsd:dateTime.
Continuous Queries and Analysis of Social Semantic Data with C-SPARQL 5
3.2 A Real Source of Social Semantic Data Streams
Given that RDF streams of social semantic data are not readily available yet, we
decided to use the data provided by Social Network Glue5 . Glue enables users to
connect with their friends on the Web based on the pages the users visit online.
Using semantic recognition technologies to automatically identify books, music,
movies, wines, stocks, movie stars and many other similar topics, it generates a
continuous stream of the identified objects which is accessible in real time us-
ing a REST API6 . The REST request “http://api.getglue.com/v1/glue/recent”
returns the 250 most recent public interactions. We adopted the GRDDL ap-
proach [24] and implemented a simple way to translate the resulting XML into
RDF. A live version is running at http://c-sparql.cefriel.it/sdow-demo. Below,
we provide a snapshot of the resulting RDF stream.
Subject Predicate Object Timestamp
glueinter:i1 rdf:type sioc:Post “2009-07-20T22:48:52Z”
glueinter:i1 sioc:content “The Proposal on imdb.com” “2009-07-20T22:48:52Z”
glueinter:i1 sioc:has container http://www.getglue.com “2009-07-20T22:48:52Z”
glueinter:i1 dc:title “The Proposal” “2009-07-20T22:48:52Z”
glueuser:id1 rdf:type sioc:User “2009-07-20T22:48:52Z”
glueinter:i1 sioc:has creator glueuser:id1 “2009-07-20T22:48:52Z”
glueinter:i1 sioc:topic gluecat:movies “2009-07-20T22:48:52Z”
glueinter:i2 rdf:type sioc:Post “2009-07-20T22:48:54Z”
glueinter:i2 sioc:content “Mario Kart Wii on gamefaqs.com” “2009-07-20T22:48:55Z”
glueinter:i2 sioc:has container http://www.getglue.com “2009-07-20T22:48:55Z”
glueinter:i2 dc:title “Mario Kart Wii” “2009-07-20T22:48:55Z”
glueuser:id2 rdf:type sioc:User “2009-07-20T22:48:55Z”
glueinter:i2 sioc:has creator glueuser:id2 “2009-07-20T22:48:55Z”
glueinter:i2 sioc:topic glueint:video games “2009-07-20T22:48:55Z”
Similarly to SemanticTweet, we are also able to translate the social relation-
ships obtained using the REST service “/user/friends” into FOAF.
3.3 Continuous SPARQL
C-SPARQL is an extension of SPARQL for querying both RDF graphs and
RDF streams. The complete definition of the language in terms of syntax and
semantics is given in [25]. We briefly repeat the definitions of the distinguishing
features of the language here and show how to write the queries that evaluate
the answers to the questions which opened this paper.
Continuous Queries The distinguishing feature of C-SPARQL is the support
for continuous queries, i.e. queries that are registered and then executed con-
tinuously over windows opened on RDF streams and standard RDF graphs.
Continuous queries, which make usage of aggregates, are particularly relevant.
A C-SPARQL query is registered using the grammar extension provided by
the first of the following two production rules.
5
http://getglue.com
6
http://getglue.com/api
6 D.F. Barbieri, D. Braga, S. Ceri, E. Della Valle, M. Grossniklaus
Registration → ‘REGISTER QUERY’ QueryName ‘AS’ Query
Registration → ‘REGISTER STREAM’ QueryName ‘AS’ Query
As output C-SPARQL queries produce the same types as SPARQL queries:
boolean answers, selections of variable bindings, RDF descriptions of the involved
resources or constructions of new RDF triples. These outputs are continuously
renewed in each query execution. In addition, C-SPARQL queries can be regis-
tered to produce new RDF streams using the grammar extension provided by
the second production rule given above. In this second case, only CONSTRUCT
and DESCRIBE queries can be registered, as they produce RDF triples that, once
associated with a timestamp, yield RDF streams that can be managed in C-
SPARQL.
Windows Given that RDF streams are intrinsically infinite, we introduce the
notion of windows upon RDF streams, whose types and characteristics are in-
spired by those of the windows in continuous query languages such as CQL [12].
Identification and windowing are expressed in C-SPARQL by means of the FROM
STREAM clause.
FromStrClause → ‘FROM’ [‘NAMED’] ‘STREAM’ StreamIRI ‘[ RANGE’ Window ‘]’
From the RDF stream identified by StreamIRI, a window extracts the last
triples, which are considered by the query. The extraction can be physical (a
given number of triples) or logical (a variable number of triples which occur
during a given time interval).
The part of C-SPARQL that we introduced so far is sufficient to address the
question “What have my closest friends been visiting in the last hour?” Below,
we show how to formulate this query in C-SPARQL over the Glue interaction
stream and the graph of FOAF relationships described in Section 3.2.
REGISTER QUERY WhatHaveMyCloseFriendsBeenVisitingInTheLastHour AS
PREFIX sioc:
PREFIX foaf:
PREFIX glue:
SELECT DISTINCT ?friend ?topic
FROM
FROM STREAM
[ RANGE 60m STEP 5m ]
WHERE { glue:id1 foaf:knows ?friend .
?post sioc:has_creator ?friend .
?post rdf:type sioc:Post .
?post sioc:topic ?topic . }
The first triple pattern matches triples in the FOAF graph, whereas the other
three triple patterns match triples in a sliding window of 60 minutes opened on
the RDF stream, which advances progressively in steps of 5 minutes.
Aggregation Another question that we could answer using a C-SPARQL is
“Which are the top topics in Glue?” To do so, we also need to introduce the
Continuous Queries and Analysis of Social Semantic Data with C-SPARQL 7
aggregation capabilities that we added to C-SPARQL. We allow multiple in-
dependent aggregations within the same C-SPARQL query, thus pushing the
aggregation capabilities beyond those of SQL and other proposals for aggrega-
tion in SPARQL7 . Aggregation clauses have the following syntax.
AggregateClause → ( ‘AGGREGATE { (’ var ‘,’ Fun ‘,’ Group ‘)’ [Filter ] ‘}’ )*
Fun → ‘COUNT’ | ‘SUM’ | ‘AVG’ | ‘MIN’ | ‘MAX’
Group → var | ‘{’ var ( ‘,’ var )* ‘}’
An aggregation clause starts with a new variable not occurring in the WHERE
clause, followed by an aggregation function and closed by a set of one or more
variables, occurring in the WHERE clause, which express the grouping criteria. For
instance, the query above can be expressed in C-SPARQL as follows.
REGISTER QUERY TopTopicsGlueUsersAreInterestedIn AS
PREFIX sioc:
SELECT DISTINCT ?topic ?number
FROM STREAM
[ RANGE 30m STEP 10m ]
WHERE { ?post sioc:topic ?topic . }
AGGREGATE {(?number , COUNT , {?topic })}
4 A C-SPARQL Engine
The C-SPARQL engine was designed based on a separation of concerns between
stream management and query evaluation. This separation is the foundation for
a simple architecture for C-SPARQL, built upon known database and reason-
ing technolgies. Figure 1 shows the three main components of our C-SPARQL
execution framework.
The module named C-SPARQL Query Parser gets a C-SPARQL query as
input and produces the information needed by the Data Stream Manager Layer
and the SPARQL EndPoint Layer to execute the query. The data stream man-
ager registers the data streams specified in the query and applies logical or
physical windows. When the resulting graph has been produced, the SPARQL
part of the C-SPARQL query is executed by the SPARQL endpoint. This process
is executed as frequently as specified in the REGISTER clause of the C-SPARQL
query. Finally, the result computed is timestamped and passed on. Both the data
stream manager and the SPARQL endpoint are considered plugins, in order to
be independent from the actual DSMS/SPARQL engine implementations that
will be used. We have implemented a prototype based on this architecture using
ESPER as a DSMS and Jena as a SPARQL endpoint.
ESPER8 is a component for stream processing applications, which require
high throughput to process large volumes of data elements (between 1,000 to
100k messages per second) and low latency to react in real-time (from a few
7
http://esw.w3.org/topic/SPARQL/Extensions/Aggregates
8
http://esper.codehaus.org/
8 D.F. Barbieri, D. Braga, S. Ceri, E. Della Valle, M. Grossniklaus
C-SPARQL
Query Parser
Continuous part
Standard
REGISTER SPARQL Query
FROM STREAM
Data Stream SPARQL
Manager Layer EndPoint Layer
Fig. 1. C-SPARQL Engine Architecture
milliseconds to a few seconds). In particular, it supports the various forms of
windows we defined in C-SPARQL (i.e., sliding and tumbling windows both in
terms of time and length) and several forms of aggregation we plan to exploit
for optimizations based on query rewriting.
Jena9 is a Java framework for building Semantic Web applications. We choose
it, because it includes a custom RDF storage engine for high performance appli-
cations and a SPARQL query engine. The SPARQL engine supports standard
SPARQL and aggregation, GROUP BY and assignment as SPARQL extensions.
The adoption of off-the-shelf stream management systems and reasoning tools
both provide a solid framework and a fast way of prototyping.
5 Evaluation
In order to evaluate, our approach we compared the time required to compute a
C-SPARQL query with our engine, to the time needed to execute an equivalent
SPARQL query in Jena using its SPARQL engine over its custom RDF storage
engine. The tests have been run on a Pentium Core 2 Quad 2.0GHz with 2GB
of main memory.
As representative C-SPARQL query we chose the following one, in which we
count how many Glue users are interested in the various topics recognized by
Glue in the last 3 minutes.
REGISTER QUERY CountHowManyGlueUsersAreInterestedInEachTopic AS
PREFIX sioc:
SELECT DISTINCT ?topic ?number
FROM STREAM
[ RANGE 3m STEP 10s ]
WHERE { ?post sioc:topic ?topic . }
AGGREGATE {(?number , COUNT , {?topic })}
9
http://jena.sourceforge.net/
Continuous Queries and Analysis of Social Semantic Data with C-SPARQL 9
This simple query showcases all characteristics of C-SPARQL, namely, reg-
istration, selection of triples based on a window over a RDF stream and an
aggregate function.
We registered this C-SPARQL query in our engine and continuously executed
it every second. We run two experiments feeding new triples from the RDF
stream into the C-SPARQL engine at two different rates: 5 triples per second
(5 t/s) and 200 t/s. In both experiments, we measured the time required to
compute the answer with the triples in the window.
It is possible to write a SPARQL query, which computes the same results
as the C-SPARQL query above, by adding (a) a triple pattern that matches
the creation date of the post, (b) a FILTER clause that selects the same time
interval of the C-SPARQL query, and (c) an aggregate function that counts the
number of topics using Jena SPARQL extensions for aggregates.
PREFIX sioc:
PREFIX dcterms:
PREFIX xsd:
SELECT ?topic count(?topic)
WHERE { ?post sioc:topic ?topic .
?post dcterms:created ?date .
FILTER (?date > ‘‘2009-07-20T22:47:00Z’’ˆˆxsd:dateTime
&& ?date < ‘‘2009-07-20T22:50:00Z’’ˆˆxsd:dateTime ) }
GROUP BY ?topic
Using Jena, we executed the above SPARQL query six times against reposito-
ries containing the first 100, 500, 1000, 1500, 2000 and 2500 triples, respectively.
In these experiments, we again measured the time required to compute each
answer.
The results are shown in Figure 2 and are named SPARQL. Comparing the
linear regressions of the three experiments, named Linear(SPARQL), Linear(C-
SPARQL 5 t/s) and Linear(C-SPARQL 200 t/s), we see that the C-SPARQL
window based selection always performs significantly better than the FILTER
based selection of SPARQL in Jena. Notably, this result holds both for a low
triple per second rate of 5 t/s and a reasonably high rate of 200 t/s.
6 Related Work
A previous effort to combine SPARQL and data streams is presented in Bolles
et al. [26]. They introduce a syntax for the specification of logical and physical
windows in SPARQL queries by means of local grammar extensions.
Our approach is different from their in several key aspects. First, Bolles et
al. omit essential ingredients such as aggregate functions, thus the resulting ex-
pressive power is not sufficient to express interesting practical queries such as
“Which are the top topics under discussion?”. Second, the authors do not follow
the approach, established by DSMS, to only use windows to transform streaming
data into non-streaming data in order to apply standard algebraic operations.
Bolles et al. choose to also change the standard SPARQL operators by making
them timestamp-aware and, thereby, effectively introduce a new language seman-
tics. Finally, their approach allows window clauses to appear within SPARQL
10 D.F. Barbieri, D. Braga, S. Ceri, E. Della Valle, M. Grossniklaus
Response Time C-SPARQL vs. SPARQL
40
30
ms
20
10
0
0 500 1000 1500 2000 2500
number of triples in the window (C-SPARQL) or in the repository (SPARQL)
SPARQL C-SPARQL 5 t/2 C-SPARQL 200 t/s
Linear (SPARQL) Linear (C-SPARQL 5 t/2) Linear (C-SPARQL 200 t/s)
Fig. 2. The window based selection of C-SPARQL outperforms the FILTER based
selection of SPARQL.
group graph pattern expressions. This makes the query syntax more intricate
and it complicates query evaluation. Moreover, it violates the separation of con-
cerns between stream management and query evaluation that is the basis of our
simple architecture for C-SPARQL engines.
7 Conclusions
We began this paper with a list of questions related to social data on the Web
that stress the streaming nature of blogs and microblogs. Our initial claim was
that social data should not be treated as persistent data to be stored forever
and queried on demand, but rather as transient data to be consumed on the fly
by registered queries. In order to prove this claim, we have made the following
arguments in this paper.
– RDF streams can be defined by extending RDF data type with a notion of
timestamp;
– RDF streams can be serialized as N-Quads;
– sources of RDF streams are available and can be obtained from blogs and
microblogs with the same approach used to obtain the RDF representations
used for social semantic data;
– SPARQL can be extended with the notion of continuous query registered
once and for all that keep monitoring such RDF streams, producing answers
triggered by the streaming data and not by explicit invocation;
Continuous Queries and Analysis of Social Semantic Data with C-SPARQL 11
– C-SPARQL queries can be evaluated using a simple architecture based on
the decision to keep stream management and query evaluation separated;
and
– in terms of response time, even in a naive implementation of this architecture
the window based selection of C-SPARQL outperforms the FILTER based
selection needed to formulate the equivalent query in SPARQL.
Moreover, we do not exploit several optimization opportunities. On the one
hand, we can adopt smarter query rewriting techniques that push part of a
C-SPARQL query evaluation from the SPARQL engine to the DSMS. On the
other hand, we are not considering the parallel nature of streams and thus the
opportunity for parallel continuous query processing.
Finally, we have been limiting ourselves to treat RDF as relational data with-
out considering it part of the Semantic Web stack. We are currently investigating
techniques [27] to incrementally maintain materialization of knowledge derived
by the triples currently selected by the window.
Acknowledgements
The work described in this paper has been partially supported by the European
project LarKC (FP7-215535). Michael Grossniklaus’s work is carried out under
SNF grant number PBEZ2-121230.
References
1. Bojars, U., Breslin, J.G., Peristeras, V., Tummarello, G., Decker, S.: Interlinking
the social web with semantics. IEEE Intelligent Systems 23(3) (2008) 29–40
2. Passant, A., Hastrup, T., Bojars, U., Breslin, J.: Microblogging: A semantic web
and distributed approach. In: 4th Workshop Scripting For the Semantic Web
(SFSW2008) co-located with ESWC2008. (2008)
3. Nowack, B.: Semantic microblogging. In: Microblogging Conference. (2009)
4. Garofalakis, M., Gehrke, J., Rastogi, R.: Data Stream Management: Processing
High-Speed Data Streams (Data-Centric Systems and Applications). Springer-
Verlag New York, Inc., Secaucus, NJ, USA (2007)
5. Della Valle, E., Ceri, S., Braga, D., Celino, I., Frensel, D., van Harmelen, F.,
Unel, G.: Research chapters in the area of stream reasoning. In: SR2009. Volume
466 of CEUR Workshop Proceedings., CEUR-WS.org (2009) online http://ceur-
ws.org/Vol-466/sr2009-intro.pdf.
6. Golab, L., DeHaan, D., Demaine, E.D., López-Ortiz, A., Munro, J.I.: Identifying
Frequent Items in Sliding Windows over On-line Packet Streams. In: Proc. Intl.
Conf. on Internet Measurement (IMC 2003). (2003) 173–178
7. Jagadish, H.V., Mumick, I.S., Silberschatz, A.: View Maintenance Issues for the
Chronicle Data Model. In: Proc. ACM Symp. on Principles of Database Systems
(PODS 1995). (1995) 113–124
8. Liu, L., Pu, C., Tang, W.: Continual Queries for Internet Scale Event-Driven
Information Delivery. IEEE Trans. Knowl. Data Eng. 11(4) (1999) 610–628
12 D.F. Barbieri, D. Braga, S. Ceri, E. Della Valle, M. Grossniklaus
9. Chen, J., DeWitt, D.J., Tian, F., Wang, Y.: NiagaraCQ: A Scalable Continuous
Query System for Internet Databases. In Chen, W., Naughton, J.F., Bernstein,
P.A., eds.: Proc. ACM Intl. Conf. on Management of Data (SIGMOD 2000). (2000)
379–390
10. Balakrishnan, H., Balazinska, M., Carney, D., Çetintemel, U., Cherniack, M., Con-
vey, C., Galvez, E., Salz, J., Stonebraker, M., Tatbul, N., Tibbetts, R., Zdonik, S.:
Retrospective on Aurora. The VLDB Journal 13(4) (2004) 370–383
11. Arasu, A., Babcock, B., Babu, S., Datar, M., Ito, K., Nishizawa, I., Rosenstein,
J., Widom, J.: STREAM: The Stanford Stream Data Manager (Demonstration
Description). In: Proc. ACM Intl. Conf. on Management of data (SIGMOD 2003).
(2003) 665
12. Arasu, A., Babu, S., Widom, J.: The CQL Continuous Query Language: Semantic
Foundations and Query Execution. The VLDB Journal 15(2) (2006) 121–142
13. Babu, S., Widom, J.: Continuous Queries over Data Streams. SIGMOD Rec. 30(3)
(2001) 109–120
14. Law, Y.N., Wang, H., Zaniolo, C.: Query Languages and Data Models for Database
Sequences and Data Streams. In: Proc. Intl. Conf. on Very Large Data Bases
(VLDB 2004). (2004) 492–503
15. Law, Y.N., Zaniolo, C.: An Adaptive Nearest Neighbor Classification Algorithm
for Data Streams. In: Proc. Europ. Conf. on Principles and Practice of Knowledge
Discovery in Databases (PKDD 2005). (2005) 108–120
16. Bai, Y., Thakkar, H., Wang, H., Luo, C., Zaniolo, C.: A Data Stream Language and
System Designed for Power and Extensibility. In: Proc. Intl. Conf. on Information
and Knowledge Management (CIKM 2006). (2006) 337–346
17. Prud’hommeaux, E., Seaborne, A.: SPARQL Query Language for RDF.
http://www.w3.org/TR/rdf-sparql-query/
18. Gutierrez, C., Hurtado, C., Mendelzon, A.O.: Foundations of Semantic Web
Databases. In: Proc. ACM Symp. on Principles of Database Systems (PODS 2004).
(2004) 95–106
19. Pérez, J., Arenas, M., Gutierrez, C.: Semantics and Complexity of SPARQL. In:
Proc. Intl. Semantic Web Conf. (ISWC 2006). (2006) 30–43
20. Cyganiak, R.: A Relational Algebra for SPARQL. Technical report, HP-Labs
21. Haase, P., Broekstra, J., Eberhart, A., Volz, R.: A Comparison of RDF Query
Languages. In: Proc. Intl. Semantic Web Conf. (ISWC 2004). (2004) 502–517
22. Carroll, J.J., Bizer, C., Hayes, P.J., Stickler, P.: Named graphs, provenance and
trust. In: WWW. (2005) 613–622
23. Cyganiak, R., Harth, A., Hogan, A.: N-quads: Extending n-triples with context.
http://sw.deri.org/2008/07/n-quads/ (2008)
24. Connolly, D., et al.: Gleaning Resource Descriptions from Dialects of Lan-
guages (GRDDL) - W3C Recommendation. Available on the Web at
http://www.w3.org/TR/grddl/ (11 September 2007)
25. Barbieri, D.F., Braga, D., Ceri, S., Della Valle, E., Grossniklaus, M.: C-SPARQL:
SPARQL for continuous querying. In: WWW. (2009) 1061–1062
26. Bolles, A., Grawunder, M., Jacobi, J.: Streaming SPARQL – Extending SPARQL
to Process Data Streams. In: Proc. Europ. Semantic Web Conf. (ESWC 2008).
(2008) 448–462
27. Volz, R., Staab, S., Motik, B.: Incrementally maintaining materializations of on-
tologies stored in logic databases. J. Data Semantics 2 (2005) 1–34