<!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>sparqlPuSH: Proactive notification of data updates in RDF stores using PubSubHubbub</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alexandre Passant</string-name>
          <email>alexandre.passant@deri.org</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Pablo N. Mendes</string-name>
          <email>pablo@knoesis.org</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Digital Enterprise Research Institute National University of Ireland</institution>
          ,
          <addr-line>Galway</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Kno.e.sis Center, CSE Department Wright State University</institution>
          ,
          <addr-line>Dayton, OH -</addr-line>
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>With the growing numbers of status update websites and related wrappers, initiatives modelling sensor data in RDF, as well as the dynamic nature of many Linked Data exporters, there is a need for protocols enabling real-time notification and broadcasting of RDF data updates. In this paper we present a flexible approach that provides such notifications to be delivered in real-time to any RSS or Atom reader. Our framework enables the active delivery of SPARQL query results through the PubSubHubbub (PuSH) protocol upon the arrival of new information in RDF stores. Our open source implementation can be plugged on any SPARQL endpoint and can directly reuse PuSH hubs that are already deployed in scalable clouds (e.g. Google's).</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>
        Since the Semantic Web is “an extension of the current Web” [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], it has to deal
with the different paradigm shifts happening on the Web. In particular, more
and more streamed information is available online, ranging from microblogging
updates to sensor data, often being combined with trends in ubiquitous
computing — e.g. status and geolocation updates from mobile phones, related to the
two aforementioned aspects. From the Semantic Web side, this entails the ability
to capture this streamed information in RDF, through efforts such as semantic
microblogging [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] or representation of sensor information as Linked Open
Data [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. In addition, many data sources in the Linking Open Data cloud are
build from user-generated content, as DBpedia, Freebase, FOAF profiles, etc [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
Consequently, there is a need to tackle this dynamic generation aspects which
lead to an area of constantly evolving RDF data available at Web scale.
      </p>
      <p>
        These dynamic aspects of RDF data entail various issues, including changes
management [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ], stream querying [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], etc. In this paper we focus on how to
enable real-time notifications of data updates in RDF stores. We provide a way
to let users subscribe to a subset of content available within an RDF store
(defined as a SPARQL query) and get a notification message each time some
content within that subset changes in the store. To achieve this goal, we define
a complete framework for such notifications and broadcasting, based on:
– the representation of data updates in RDF stores through RSS/Atom feeds
and a registration system to map SPARQL queries to these feeds;
– the use of the PubSubHubbub protocol3 to proactively broadcast the
previous feeds and inform clients about data updates in real-time;
– an open-source implementation of the aforementioned principles, build in
PHP and flexible enough to be adapted on the top of any SPARQL endpoint
supporting SPARQL Query SPARQL Update4.
      </p>
      <p>The rest of this paper is organised as follows. In Section 2, we discuss our
motivations for real-time notification of data updates, before discussing related
work in Section 3. In Section 4, we present how we use the PubSubHubbub
protocol to broadcast changes happening in RDF stores. In particular, we discuss
how we map SPARQL query results to RSS feeds and how they are broadcasted
to interested parties. In Section 5, we discuss the implementation of the previous
principles in sparqlPuSH. Finally, we conclude the paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Motivations</title>
      <p>
        On the Web, particularly in the post-Web 2.0 era, there is an ubiquitous feed of
socially created content around the globe that may or may not find its way to an
interested user. Imagine users interested in monitoring a developing news story
(e.g. the 2010 Chile earthquake), keeping up-to-date on media placements for
a brand, or getting the latest news on the stock market. In such cases, content
updates may contain actionable information that is useful only if delivered in
real-time, especially in emergency scenarios such as earthquake monitoring [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>Google Alerts, a content monitoring service, automatically notifies users when
there are new Google results for a set of keywords. It delivers updates through
e-mails (text and HTML), and RSS feeds. However, monitoring alerts are
limited to keyword-based queries. From the information retrieval point of view, in
comparison to keywords, SPARQL queries provide a more expressive language to
describe a user’s information need — i.e. complex constraints and unambiguous
references. A Semantic Web counterpart to Google Alerts should allow users to
register a SPARQL query and get updates pushed to the users as new matching
triples arrive in an underlying RDF store containing relevant data.</p>
      <p>As such, Semantic Search engines that allow persistent searches and real time
updates could support the brief use-cases that we now briefly describe.
2.1</p>
      <p>Monitoring competitors information in a corporate context
A product manager interested in following the competitors of his company could
ask a semantic search engine to “select user-generated content mentioning
companies that compete with mine”, using DBpedia to identify such competitors,
as depicted in Fig. 1. Using a pull approach, his RSS aggregator would have to</p>
      <sec id="sec-2-1">
        <title>3 http://code.google.com/p/pubsubhubbub/</title>
      </sec>
      <sec id="sec-2-2">
        <title>4 http://www.w3.org/TR/sparql11-update/</title>
        <p>constantly fetch the feeds to identify new content. However, with a push model,
relevant data is simply delivered as soon as it comes into the original system(s).</p>
        <sec id="sec-2-2-1">
          <title>PREFIX ex : &lt; http :// example . org /&gt;</title>
        </sec>
        <sec id="sec-2-2-2">
          <title>PREFIX moat : &lt; http :// moat - project . org / ns #&gt;</title>
        </sec>
        <sec id="sec-2-2-3">
          <title>PREFIX company : &lt; http :// dbpedia . org / ontology / Company &gt;</title>
        </sec>
        <sec id="sec-2-2-4">
          <title>SELECT ? document</title>
        </sec>
        <sec id="sec-2-2-5">
          <title>WHERE {</title>
          <p>? document moat : taggedWith ? competitor .
? competitor company : industry ? industry .</p>
          <p>ex : MyCompany company : industry ? industry .</p>
          <p>}
In the context of the Health Care Reform in the U.S.A., we present the following
fictitious use case: Otto is a balanced congressman that is concerned primarily
with practical considerations, rather than moralistic premises. He would like to
follow, as the discussion unfolds, how does the public perception change across
states. Especially, he would like to compare the trending topics in states with
Republican versus Democratic majorities.</p>
          <p>Many data sources can be applicable to Otto’s use case, including local news
and microblog posts. Otto would like to “select all entities mentioned in microblog
posts from democratic states”, while in another window he would like to “select
all entities mentioned in microblog posts from republican states”. Looking at the
windows side by side he would be able to quickly glance over the differences.
However, a more complex query could provide a direct answer, if he choses to
“select all entities mentioned in microblog posts from democratic states that were
not mentioned in microblog posts from republican states”. Once again, in order
to get an accurate perception of the current trends, this information should be
updated as soon as new data comes in one of these original systems.
3</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Related work</title>
      <p>Various work recently focused on the representation of changes in RDF data
sources and related datasets, notably in the Linked Data realm5. These include</p>
      <sec id="sec-3-1">
        <title>5 http://www.ldodds.com/blog/2010/04/rdf-dataset-notifications/</title>
        <p>
          the Talis Changesets6 and Triplify update vocabularies7 [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ], as well as the dady
(Dataset Dynamics) vocabulary8, that can be combined with voiD [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. While the
two first ones provide the ability to represent atomic changes (e.g. new triples
being added to a resource), dady focuses mainly on representing characteristics
of changes in dataset, such as their expected frequency. In addition, atomic
changes can be transmitted in Atom9. Other efforts include the Web of Data
Link Maintenance Protocol10 [
          <xref ref-type="bibr" rid="ref14">14</xref>
          ], which notifies linked resource when links are
added to and removed from them, as well as — to some extent — the Semantic
Sitemap extension [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ] that defines how often data can be re-crawled from a
website to get fresh information, while it relies on clients regularly fetching it,
not directly solving the notification issue.
        </p>
        <p>
          Regarding real-time notification, XMPP messaging [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] can be used as a
way to transport SPARQL queries11 [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ], while Semantic Pingback12 focuses on
informing remote sources of new links, as soon as a link is created from a seed
source.
        </p>
        <p>Finally, outside the Semantic Web world, both rssCloud13 and
PubSubHubbub14 (PuSH) address the notification issue. Both focus on a push approach
to broadcast notifications in feeds transmitted via hubs that push information
proactively from one service to the various clients interested in following this
service changes. However, rssCloud focuses only on RSS 2.0 feeds, while PuSH
can be adapted to both RSS and Atom. In addition, it provides a public
infrastructure that can be used by implementers, notably by using the Google public
PuSH hub15.
4
4.1</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Distributing data updates as RSS and Atom feeds</title>
      <p>Shifting from a pull to a push approach
As we presented in the use-cases, our main motivation is to enable data changes
notification to shift from a pull to a push approach, i.e. letting people being
notified of changes in the information they are interested to, rather than forcing
them to constantly pull sources to identify new data.</p>
      <p>In particular, our goal is to enable proactive notification of changes happening
in RDF stores, whatever they deal with: new data of a particular type being
added, updated statements about a given resource, etc. To do so, we rely on the
aforementioned PubSubHubbub protocol to broadcast these updates, combined
6 http://n2.talis.com/wiki/Changeset
7 http://triplify.org/vocabulary/update
8 http://vocab.deri.ie/dady
9 http://linkeddatacamp.org/wiki/LinkedDataCampVienna2009/DatasetDynamics
10 http://www4.wiwiss.fu-berlin.de/bizer/silk/wodlmp/
11 http://danbri.org/words/2008/02/11/278
12 http://aksw.org/Projects/SemanticPingback
13 http://rsscloud.org/
14 http://pubsubhubbub.googlecode.com/
15 https://pubsubhubbub.appspot.com/
with a two-steps approach: (i) registering the SPARQL queries related to the
updates that must be monitored in a RDF store and (ii) broadcasting changes
when data mapped to these queries is updated in the store.</p>
      <p>This workflow has been implemented in sparqlPuSH, a system that can be
plugged on the top of any SPARQL endpoint to achieve this goal, and that we
will further describe in Section 5.
4.2</p>
      <p>Registering SPARQL queries for data updates</p>
      <p>Client</p>
      <p>RDF Store</p>
      <p>LQRAPS
51
11
41
PuSH Hub
e
c
a
itfr
e
n
H
S
u
P
l
q
r
a
p
s
31
21</p>
      <p>The registration of a SPARQL query to be notified of updates happening in
a RDF store works as follows16 (Fig. 2):
1. a user sends a SPARQL query to the sparqlPuSH interface (compliant with
the SPARQL protocol), e.g. http://example.org/sparqlPuSH/;
2. the sparqlPuSH interface registers the query locally and maps it to a new
feed, also indicating its creation date (Fig. 3). The information is stored in
a particular graph, e.g. http://example.org/sparqlPuSH/feeds;
3. the interface generates a feed (RSS or Atom) corresponding to the query,
and registers it to a PuSH hub (using the public Google’s one by default);
4. the feed, containing a link to the PuSH hub URL in its header — according
to the PuSH specification17 — is send to the client;
5. the client parses the feed in order to get the PuSH hub URL, and registers
its interest to the feed at this particular hub.
16 The last two steps of this workflow are simply the adaptation of the PuSH principles
to our Semantic Web use-case.
17 http://code.google.com/p/pubsubhubbub/wiki/RssFeeds
&lt; http :// example . org / feed /34562738 &gt; a sp : Feed ;</p>
      <p>sp : query "</p>
      <sec id="sec-4-1">
        <title>SELECT ? uri ? author ? label ? date</title>
        <p>WHERE {
? uri a sioc : Post ;
sioc : has_creator ? author ;
dc : title ? label ;
dct : created ? date .
} ORDER BY ASC (? date )" ;
dct : modified "2010 -03 -29 T09 :18:23 Z" .</p>
        <p>In order to register the query, any system can send a HTTP POST query to
the sparqlPuSH interface, and the query has to be passed using the query
parameter18. The system automatically interprets some common prefixes, and
additional ones can be easily added in an appropriate configuration file. Moreover, in
order to provide relevant feeds (e.g. appropriate &lt;rss:title&gt; or &lt;dc:creator&gt;
elements), the system uses a few conventions to must be respected in the SPARQL
query:
– ?uri — their URI of the element(s) to be retrieved;
– ?date — their creation / modification date;
and some optional ones:
– ?label — their label;
– ?author — their author19;</p>
        <p>That way, the different elements of the RDF data that is retrieved are
converted into elements of the feeds. Notably, the use of a ?date variable is required
to order information by date and ensure that information in the feed is ordered
as expected, i.e. by update date. Moreover, any &lt;item&gt; element of the feed
(identified from the ?uri variable) can be a dereferencable URI, so that it can
be easily consumed by Linked Data aware clients. That way, we use simple RSS
or Atom feeds to transfer RDF information between the original triple-store and
the client(s) that request the changes notifications.</p>
        <p>Furthermore, these queries (and the complete architecture proposed in this
paper) can be used not only to identify new data from a particular type
being loaded in a store (sometimes with additional constraints, such as filtering
18 In addition, as we will describe later, sparqlPuSH provides a form-based interface to
directly register queries.
19 The ?author variable can bind either to the URI of an author, or to a literal
identifying it, while the first way is obviously preferred in a Linked Data scenario.
based on a given topic or author) but also to identify changes corresponding
to a particular entity that is being modified. For example, relying on the Talis
Changeset vocabulary, one can register a SPARQL query that will — based on
the following broadcast system — notify an alert as soon as new statements are
edited regarding the resource &lt;http://example.org/FooBar&gt;, as described in
Fig. 4.</p>
      </sec>
      <sec id="sec-4-2">
        <title>PREFIX cs : &lt; http :// purl . org / vocab / changeset / schema #&gt;</title>
      </sec>
      <sec id="sec-4-3">
        <title>SELECT ? uri ? author ? label ? date</title>
        <p>WHERE {
? uri a cs : ChangeSet ;
cs : creatorName ? author ;
cs : changeReason ? label ;
cs : createdDate ? date ;
cs : subjectOfChange &lt; http :// example . org / FooBar &gt; .
} ORDER BY ASC (? date )
4.3 Triggering events and broadcasting updates via PuSH hubs</p>
        <p>Once feeds have been registered in the system, the process works as follows
(Fig. 5):
1. RDF data can be loaded in the RDF store through the sparqlPuSH interface,
that is compliant with SPARQL Update principles, so that it can be send
using HTTP POST. Actually, this interface just acts as proxy that launches
triggers when new data is loaded;
2. once the data have been loaded, the system runs all the registered SPARQL
queries and update — if needed — the according feeds20;
3. for each updated feed, a notification is sent to the the PuSH hub;
4. immediately, the hub broadcasts the information to all the clients that have
registered to this particular feed with it.</p>
        <p>In practice, our experiments showed that once the data is loaded in the
sparqlPuSH interface, the clients receive it only a few seconds later, using the Google
public PuSH hub server21.</p>
        <p>With regards to the triggering step, since the sparqlPuSH interface lives on
the top of any SPARQL endpoint, it is done by (1) sending the update query from
the interface to the store via HTTP, then (2) running all the registered queries
when it receives a response from this update query. However, this process could
be a bit cumbersome, especially when the sparqlPuSH interface and the original
RDF store are on the same server, as it still implies running the queries over
HTTP. To solve this issue, and as we will now discuss, the interface can be
adapted for some particular stores to use their internal API for querying, rather
than doing it via HTTP.
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Implementation</title>
      <p>We implemented sparqlPuSH in PHP, as a proxy that can be plugged on the
top of any RDF store supporting the currently standardised SPARQL Update
language, the SPARQL protocol via HTTP, as well as named graphs (in order
to register the queries and their mappings in a particular graph)22. The system
includes (i) an interface to let users register queries (Figure 6(a)) — while this
is generally done remotely, through clients that can then interpret the resulting
feed and register to the appropriate PuSH hub —, and (ii) an interface listing
the available RSS feeds, and the corresponding SPARQL queries (Figure 6(b)).</p>
      <p>The sparqlPuSH implementation is available at http://code.google.com/
p/sparqlpush through SVN, and comes with an example client that can be
used to test the approach, in addition to the server part described in this paper.
This test client can (1) register SPARQL queries to any sparqlPuSH interface
(including the management of the PuSH hub registration when retrieving the
response feed) and (2) receive notifications from any PuSH hub to update its
interface its real-time (using JavaScript to check every second if a notification
has been received) In addition, a video is also available from the project website
in order to showcase the interest of approach.
20 In addition, their dct:modified value (as seen in Fig. 3) is updated.
21 http://pubsubhubbub.appspot.com/
22 These requirements being common features of many RDF stores.</p>
      <p>Furthermore, as we previously mentioned, in addition to the generic SPARQL
connector, sparqlPuSH includes a direct interface to ARC2 using its PHP API.
That way, interactions between sparqlPuSH and the RDF store are not done
through HTTP but directly using the ARC2 API, as well as the triggering step,
making the approach even faster. New wrappers for other APIs could easily be
added, in order to avoid this HTTP interactions and making sparqlPuSH part
of the RDF store itself.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper, we detailed an architecture for triggering data updates in RDF
store and broadcasting them in real-time to various clients. Our system,
sparqlPuSH, has been made available by combining SPARQL queries, RSS / Atom
feeds, and the PubSubHubbub protocol. We believe that this approach can be
a first step towards a push-model for the Semantic Web, which becomes mostly
needed considering the evolution of the (Semantic) Web towards a continuous
stream of data.</p>
      <p>
        In addition, while currently available as a plug-in for any RDF store, we
hope that this push approach can become a default model in various RDF store
implementations, enabling more capabilities to monitor, in real-time, changes
related to RDF data. In the future, we could also imagine to register the queries
to be monitored using C-SPARQL [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], instead of the current triggering approach.
      </p>
    </sec>
    <sec id="sec-7">
      <title>Acknowledgements</title>
      <p>The work presented in this paper has been funded in part by Science Foundation
Ireland under Grant No. SFI/08/CE/I1380 (Líon-2).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <source>Proceedings of the 1st SemSensWeb2009 Workshop on the Semantic Sensor Web</source>
          , volume
          <volume>468</volume>
          .
          <article-title>CEUR-WS</article-title>
          .org,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Keith</surname>
            <given-names>Alexander</given-names>
          </string-name>
          , Richard Cyganiak,
          <string-name>
            <given-names>Michael</given-names>
            <surname>Hausenblas</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Jun</given-names>
            <surname>Zhao</surname>
          </string-name>
          .
          <article-title>Describing Linked Datasets</article-title>
          .
          <source>In Proceedings of the Second Workshop on Linked Data on the Web (LDOW2009) at WWW2009</source>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>Sören</given-names>
            <surname>Auer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Sebastian</given-names>
            <surname>Dietzold</surname>
          </string-name>
          , Jens Lehmann,
          <string-name>
            <given-names>Sebastian</given-names>
            <surname>Hellmann</surname>
          </string-name>
          , and David Aumueller.
          <article-title>Triplify: light-weight linked data publication from relational databases</article-title>
          .
          <source>In Juan Quemada</source>
          , Gonzalo León, Yoëlle S. Maarek, and Wolfgang Nejdl, editors,
          <source>Proceedings of the 18th International Conference on World Wide Web, WWW</source>
          <year>2009</year>
          , Madrid, Spain,
          <source>April 20-24</source>
          ,
          <year>2009</year>
          , pages
          <fpage>621</fpage>
          -
          <lpage>630</lpage>
          . ACM,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Davide</given-names>
            <surname>Francesco</surname>
          </string-name>
          <string-name>
            <surname>Barbieri</surname>
          </string-name>
          , Daniele Braga, Stefano Ceri, Emanuele Della Valle, and
          <string-name>
            <given-names>Michael</given-names>
            <surname>Grossniklaus</surname>
          </string-name>
          .
          <article-title>C-SPARQL: SPARQL for continuous querying</article-title>
          .
          <source>In WWW</source>
          , pages
          <fpage>1061</fpage>
          -
          <lpage>1062</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>Tim</given-names>
            <surname>Berners-Lee</surname>
          </string-name>
          ,
          <article-title>James A</article-title>
          .
          <string-name>
            <surname>Hendler</surname>
            , and
            <given-names>Ora</given-names>
          </string-name>
          <string-name>
            <surname>Lassila</surname>
          </string-name>
          .
          <source>The Semantic Web. Scientific American</source>
          ,
          <volume>284</volume>
          (
          <issue>5</issue>
          ):
          <fpage>34</fpage>
          -
          <lpage>43</lpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>Christian</given-names>
            <surname>Bizer</surname>
          </string-name>
          , Tom Heath, and
          <string-name>
            <surname>Tim</surname>
          </string-name>
          Berners-Lee.
          <article-title>Linked Data - The Story So Far</article-title>
          .
          <source>International Journal on Semantic Web and Information Systems (IJSWIS)</source>
          ,
          <volume>5</volume>
          (
          <issue>3</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>22</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. Richard Cyganiak, Holger Stenzhorn, Renaud Delbru, Stefan Decker, and
          <string-name>
            <given-names>Giovanni</given-names>
            <surname>Tummarello</surname>
          </string-name>
          . Semantic Sitemaps:
          <article-title>Efficient and Flexible Access to Datasets on the Semantic Web</article-title>
          .
          <source>In Proceedings of the 5th European Semantic Web Conference (ESWC</source>
          <year>2008</year>
          ), volume
          <volume>5021</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>690</fpage>
          -
          <lpage>704</lpage>
          . Springer,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Frank</given-names>
            <surname>Osterfeld</surname>
          </string-name>
          , Malte Kiesel, and
          <string-name>
            <given-names>Sven</given-names>
            <surname>Schwarz</surname>
          </string-name>
          .
          <article-title>Nabu - A Semantic Archive for XMPP Instant Messaging</article-title>
          .
          <source>In Proceedings of the 1st Workshop on The Semantic Desktop, 4th International Semantic Web Conference</source>
          , volume
          <volume>175</volume>
          <source>of CEUR Workshop Proceedings. CEUR-WS.org</source>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Alexandre</given-names>
            <surname>Passant</surname>
          </string-name>
          , Uldis Bojars, John G. Breslin, Tuukka Hastrup, Milan Stankovic, and
          <string-name>
            <given-names>Philippe</given-names>
            <surname>Laublet</surname>
          </string-name>
          .
          <article-title>An Overview of SMOB 2: Open, Semantic and Distributed Microblogging</article-title>
          .
          <source>In 4th International Conference on Weblogs and Social Media</source>
          ,
          <string-name>
            <surname>ICWSM</surname>
          </string-name>
          <year>2010</year>
          . AAAI,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Peter</given-names>
            <surname>Saint-Andre</surname>
          </string-name>
          .
          <article-title>Extensible Messaging and Presence Protocol (XMPP): Core</article-title>
          . Request for comments:
          <volume>3920</volume>
          ,
          <string-name>
            <surname>Internet Engineering</surname>
          </string-name>
          Task Force,
          <year>2004</year>
          . http://www. ietf.org/rfc/rfc3920.txt.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Takeshi</surname>
            <given-names>Sakaki</given-names>
          </string-name>
          , Makoto Okazaki, and
          <string-name>
            <given-names>Yutaka</given-names>
            <surname>Matsuo</surname>
          </string-name>
          .
          <article-title>Earthquake Shakes Twitter Users: Real-time Event Detection by Social Sensors</article-title>
          .
          <source>In Proceedings of the Nineteenth International WWW Conference (WWW2010)</source>
          . ACM,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>Joshua</given-names>
            <surname>Shinavier</surname>
          </string-name>
          .
          <article-title>Real-time SemanticWeb in &lt;= 140 chars</article-title>
          .
          <source>In Proceedings of the Third Workshop on Linked Data on the Web (LDOW2010) at WWW2010</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Jürgen</surname>
            <given-names>Umbrich</given-names>
          </string-name>
          , Michael Hausenblas, Aidan Hogan, Axel Polleres, and
          <string-name>
            <given-names>Stefan</given-names>
            <surname>Decker</surname>
          </string-name>
          .
          <article-title>Towards Dataset Dynamics: Change Frequency of Linked Open Data Sources</article-title>
          .
          <source>In Proceedings of the Third Workshop on Linked Data on the Web (LDOW2010) at WWW2010</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Julius</surname>
            <given-names>Volz</given-names>
          </string-name>
          , Christian Bizer,
          <string-name>
            <given-names>Martin</given-names>
            <surname>Gaedke</surname>
          </string-name>
          , and
          <string-name>
            <given-names>Georgi</given-names>
            <surname>Kobilarov</surname>
          </string-name>
          .
          <article-title>Discovering and maintaining links on the web of data</article-title>
          .
          <source>In International Semantic Web Conference</source>
          , volume
          <volume>5823</volume>
          of Lecture Notes in Computer Science, pages
          <fpage>650</fpage>
          -
          <lpage>665</lpage>
          . Springer,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>