<!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 Semantic Event Notification Service for Knowledge- Driven Coordination</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Martin Murth</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>eva Kühn</string-name>
          <email>eva@complang.tuwien.ac.at</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Vienna University of Technology, Institute of Computer Languages Space Based Computing Group Argentinierstraße 8</institution>
          ,
          <addr-line>1040 Vienna</addr-line>
          ,
          <country country="AT">Austria</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The need for cooperation between an ever increasing number of distributed information clients has led to the development of a broad number of tools and theories in the field of the semantic web. As a consequence, also several middleware systems have been extended to support these semantic data formats and knowledge integration techniques. However, all these middleware systems implement semantic extensions of their original communication model, but they do not employ the concept of knowledge as an integral part of the interaction metaphor. This often necessitates writing unnatural programme code, results in redundantly transferred data and leads to inconsistent interpretation of knowledge. In this paper, we present a semantic event notification service that addresses this problem by defining an event as the change of knowledge. We describe the communication mechanisms of the system and show how they are employed for implementing knowledge-driven coordination tasks. We also provide an architecture overview of our implementation and present first performance and scalability results.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Knowledge-driven coordination</kwd>
        <kwd>collaboration system</kwd>
        <kwd>event processing</kwd>
        <kwd>semantic data processing</kwd>
        <kwd>middleware</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. INTRODUCTION</title>
      <p>Providing a mechanism for sharing knowledge between
information clients is a core requirement on modern middleware
systems. Data that is distributed over many information clients
and the conclusions that can be drawn from this data are essential
for realising many important tasks:
</p>
      <sec id="sec-1-1">
        <title>Knowledge-based coordination: workflows need to be</title>
        <p>controlled (i.e. started, interrupted, postponed, aborted,
etc.) depending on knowledge about the workflow context
and changes/extension of this knowledge</p>
      </sec>
      <sec id="sec-1-2">
        <title>Knowledge-based decision making: decisions have to be</title>
        <p>made based on existing knowledge about the decision
domain; domain knowledge may be available explicitly
(as pure data) or implicitly (inferable by algorithms, rule
engines, etc.)
Processing of semantic data streams: data and event
streams have to be analysed for patterns that are
representing particular knowledge; clients need to be
notified about the (un)availability of knowledge
 Semantic queries, knowledge extraction: parts of the
stored knowledge need to be extracted for further
processing or presentation to the end user
 Semantic correlation: events need to be correlated via
semantic dependencies, i.e. dependencies that are not
explicitly visible but can be inferred from a knowledge
base
 Metadata management: context information and data
about data semantics needs to be stored and made
accessible to applications and users
For consolidation, storage, and processing of knowledge from
different data sources, a number of tools and concepts have been
developed in the field of the semantic web. Over the last years,
existing middleware systems have been extended with support for
these developments, e.g. data stores provide support for semantic
data types, coordination spaces have been complemented with
matchmakers for semantic data, and messaging systems allow for
annotating event channels with metadata (see Section 5
Discussion and Comparison with Related Work). However, all
these approaches are only semantic extensions of the original
interaction model, but none of them truly integrates the concept of
knowledge with its own interaction metaphor. This often results in
redundantly stored data and leads to reduced data quality and
inconsistent interpretations of the same knowledge fragments.
In this paper, we present conceptual model and implementation of
Semantic Event Notification Service (SENS), an event processing
system that avoids redundant processing by introducing the
concept of knowledge events, i.e. events that indicate the change
of knowledge rather than the change of state or the transfer of
data.</p>
        <p>The paper is structured as follows: In Section 2 we introduce the
conceptual model of the semantic event notification service
SENS. Section 3 describes how SENS‟ interaction mechanisms
can be employed for implementing knowledge-driven
coordination. Section 4 presents architecture and implementation
results of the SENS prototype and discusses first performance and
scalability observations. In Section 5 we compare our approach to
related work. Conclusions and future work are presented in
Section 6.</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. SENS – SEMANTIC EVENT</title>
    </sec>
    <sec id="sec-3">
      <title>NOTIFICATION SERVICE</title>
      <p>
        Semantic Event Notification Service (SENS) is realised as a
publish/subscribe middleware and shall ease the development of
semantically enabled applications following the event driven
architectural style (EDA) [
        <xref ref-type="bibr" rid="ref24">25</xref>
        ]. Generally, all interactions with the
system are modelled as events. However, the essential difference
to ordinary event processing systems is that SENS works with
knowledge events, i.e. events that contain knowledge (fragments)
about a certain domain. Clients can subscribe for changes or
extensions of domain knowledge by registering a description of
this knowledge at SENS. When a knowledge event is sent to
SENS, the event‟s content is added to the internal knowledge
base. Then SENS tries to infer additional knowledge by reasoning
about the available data and adds the new data to the knowledge
base. If the new knowledge is relevant for any of the registered
subscribers, these are notified and provided with the new parts of
the affected knowledge. This is at the same time the most
important advantage of SENS over other approaches, as the
middleware itself decides whether newly inserted data is relevant
for the subscriber. The subscriber only tells the middleware in
which kind of information it is interested in.
      </p>
      <p>Example: The SENS knowledge base states that “Randy is 8.”
and “Tim is a parent of Randy.”. Client A wants to get notified
about persons with siblings and registers the according
subscription at SENS. If client B sends a knowledge event stating
that “Mark is child of Tim.”, this would cause SENS to generate a
new knowledge event containing knowledge about Randy and
Mark1.</p>
      <p>Note that sending the same knowledge event twice would not
result in another notification, since SENS detects that the
subscribers have already received this knowledge. The same is
true for sending knowledge that was already inferred from the
knowledge base before. This means that the subscribers are really
notified about new knowledge and not about the availability of
particular data structures.</p>
    </sec>
    <sec id="sec-4">
      <title>2.1 SENS API</title>
      <p>
        In SENS, knowledge is represented in RDF. RDF [
        <xref ref-type="bibr" rid="ref26">27</xref>
        ] describes
both data and metadata as directed graphs which are created by
making statements about resources in the form of 〈subject,
predicate, object〉 triples (corresponding to a directed, named edge
predicate from node subject to node object).
      </p>
      <p>
        When a SENS client wants to subscribe for changes of
knowledge, it needs to define the parts of the knowledge it is
interested in using a SPARQL CONSTRUCT statement. The
SPARQL CONSTRUCT [
        <xref ref-type="bibr" rid="ref34">35</xref>
        ] query form is defined to identify a
single RDF graph that matches a given graph template. The result
graph is formed by substituting variables of the graph template by
the query solutions found.
      </p>
      <p>The SENS API is shown in Listing 1. Knowledge can be added to
SENS in form of a single RDF triple or as a graph data structure
defined by a set of triples (publish).</p>
      <p>The subscription mechanism of SENS (subscribe, unsubscribe)
allows a client to be notified about changes or extensions of
certain parts of the stored knowledge. Whenever data is added,
SENS checks whether a re-evaluation of the SPARQL statement
would return additional triples (i.e. new knowledge) and transfers
new results to the subscriber using a callback interface.
1 We assume that the reasoning engine is aware of the required
relations.</p>
      <p>Listing 1. SENS API (Java)
public interface SENS {
// adds a triple to the knowledge base
void publish(Triple triple);
// adds a set of triples to the knowledge base
void publish(TripleSet tripleSet);
// subscribes for all knowledge events that match the provided
// knowledge description
SubscriptionID subscribe(Subscriber s, String sparqlDescr);
// removes the subscription
void unsubscribe(Subscriber s, SubscriptionID id);
// receives the desired knowledge; blocks if no result is found
TripleSet receive(String sparqlDescr);
// like receive but returns null if no result is found
TripleSet tryReceive(String sparqlDescr);
// registers a continuous insertion
InsertionID registerInsertion(String sparqlDescr);
// unregisters a continuous insertion
void unregisterInsertion(InsertionID id);
// removes the result graph from the knowledge base; blocks if
// no result is found
TripleSet remove(String sparqlDescr);
// like remove but returns null if no result is found</p>
      <p>TripleSet tryRemove(String sparqlDescr);
}
Example: The registration of a subscription with the following
SPARQL description would notify the subscriber every time new
knowledge about persons with at least one child is available.
Notice that the construct part of the query defines the operation‟s
result, which is then compared to previous results of the query.
CONSTRUCT {
?s :name ?n;</p>
      <p>?p ?o.
}
WHERE {</p>
      <p>?s
}
:name ?n;
?p ?o;
a :Person;
:hasChild ?c.</p>
      <p>// CONSTRUCT part defines
// the result graph
// WHERE part describes
// the knowledge of
// interest by means of
// a graph pattern
The subscriber receives the new triples together with a triple
containing the name of the concerned person. Implementing this
example with a traditional event processing system would require
to (1) define an extra event channel for modifications of data of
persons with children, (2) register for events on this channel, (3)
determine the concerned person, when an event is received, and
(4) query a database for the required context information. With
SENS, this can be implemented within one single subscription.
A client can also wait for the availability of certain knowledge
(receive). If the requested knowledge is not available, the request
is blocked until it can be answered. If the client only wants to test
for the existence of certain knowledge, SENS offers a
nonblocking variant of this API primitive (tryReceive).</p>
      <p>
        Another mechanism frequently employed in event processing is
continuous insertion (cf. [
        <xref ref-type="bibr" rid="ref7">8</xref>
        ]) (registerInsertion,
unregisterInsertion). Continuous insertions are descriptions of
event patterns that are evaluated each time an event occurs. If the
given pattern is found, a new event is generated. This mechanism
is usually applied to generate high-level events from a number of
low-level events. In SENS, an insertion is also described by a
SPARQL CONSTRUCT statement. When the described
knowledge is available in SENS, the triples of the constructed
result graph are added to the knowledge base.
      </p>
      <p>Finally, we also added two primitives for the removal of semantic
data (remove, tryRemove). These primitives have been introduced
as it turned out that in some cases it is necessary to make SENS
“forget” particular parts of its knowledge. This is especially useful
for controlling memory and storage requirements of SENS and it
simplifies the implementation of certain knowledge-centric
coordination patterns (e.g. request/response, produce/consume).</p>
    </sec>
    <sec id="sec-5">
      <title>3. KNOWLEDGE-DRIVEN</title>
    </sec>
    <sec id="sec-6">
      <title>COORDINATION</title>
      <p>
        Malone et al. [
        <xref ref-type="bibr" rid="ref25">26</xref>
        ] define coordination as “managing
dependencies between certain activities”. Accordingly, we define
knowledge-driven coordination as coordination that is driven by
knowledge about the coordination scenario, e.g. knowledge about
the involved entities, dependencies between entities,
consequences of coordination activities, and the current state of an
interaction. SENS implements several typical interaction
primitives that can be employed for the coordination of multiple
clients (subscriptions, blocking receive, blocking consume).
While the use of such primitives has already been studied
extensively in other work (e.g. [
        <xref ref-type="bibr" rid="ref12">13</xref>
        ][
        <xref ref-type="bibr" rid="ref14">15</xref>
        ][
        <xref ref-type="bibr" rid="ref15">16</xref>
        ][
        <xref ref-type="bibr" rid="ref23">24</xref>
        ][
        <xref ref-type="bibr" rid="ref39">40</xref>
        ][
        <xref ref-type="bibr" rid="ref43">44</xref>
        ]), this
section describes how ontologies and continuous insertions are
employed for implementing knowledge-driven coordination with
SENS.
      </p>
    </sec>
    <sec id="sec-7">
      <title>3.1 A Use Case Scenario</title>
      <p>A governmental health organisation wants to develop a system
that allows for quickly finding blood donors for people with very
special forms of blood incompatibleness. The system should
therefore collect knowledge about patients of general practitioners
and hospitals and analyse specific relations between the blood
types and other blood properties. Multiple information systems
provide the required data which is then used to coordinate a
number of clients. Currently, a commercial enterprise service bus
is used to connect all involved information systems following the
SOA approach. The new system has to be integrated with the
existing infrastructure and shall use the existing communication
mechanisms for interacting with the employed business process
execution engine. Figure 1 shows an overview of the system
infrastructure and presents a small example fragment of the
patient data that will be managed by SENS.</p>
      <p>In the example, only the most important properties (age, blood
type) and known relationships (isParentOf, isChildOf) between
the blood donors are shown (a textual description of the RDF
graph can be found in Appendix A).
In the following, we briefly summarize four use cases of this
scenario:</p>
      <p>UC1 – Data Import: After the deployment of the new
system as well as each time a new information system of
a hospital or a general practitioner is integrated with the
system, patient data of existing databases, knowledge
management systems, or experts systems has to be
imported into the SENS knowledge base.</p>
      <p>UC2 – Data Analysis: For finding appropriate blood
donors, the knowledge base has to be analysed with
respect to the given blood properties, health situation,
relational dependencies, etc. of the donors. In
emergency situations, this process must not exceed a
critical time limit.</p>
      <p>UC3 – Knowledge-driven Coordination: While some
clients will act as pure data providers, others need to be
notified about suitable blood donors. SENS has to
correlate semantic data published by different clients
and notify the corresponding subscribers so that they
can continue their current work unit. The notification
mechanism has to be implemented using the existing IT
infrastructure.</p>
      <sec id="sec-7-1">
        <title>UC4 – Knowledge Extraction: For the purpose of</title>
        <p>statistical analyses in medical research, the system must
allow for the extraction of particular parts of the stored
knowledge. Appropriate query mechanisms have to be
provided.</p>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>3.2 Ontologies</title>
      <p>
        The use of ontologies for driving a coordination process is the
most distinguishing feature of SENS compared to existing event
processing and space-based middleware. An ontology is a model
that describes a set of concepts within a domain and the relations
between them. It can be used to reason about data and information
within that domain. SENS supports ontologies for RDF based
knowledge descriptions. Whenever new data is added, the internal
reasoning engine infers new knowledge and adds it to the
knowledge base in the form of additional (virtual) RDF triples.
Example: SENS supports ontologies defined in OWL [
        <xref ref-type="bibr" rid="ref28">29</xref>
        ], a
formal language for the specification of relations between certain
classes and properties of resources. The following OWL ontology
describes certain relationships between the data objects stored in
SENS (OWL can be represented as RDF triples itself).
:Person a
      </p>
      <p>owl:Class .
:Man
a owl:Class ;
rdfs:subClassOf :Person .
:Woman a</p>
      <p>owl:Class ;
rdfs:subClassOf :Person .
:isAncestorOf</p>
      <p>a owl:TransitiveProperty ,
owl:ObjectProperty .
:isParentOf
a owl:ObjectProperty ;
rdfs:domain :Person ;
rdfs:range :Person ;
rdfs:subPropertyOf :isAncestorOf ;
owl:inverseOf :isChildOf .
:isChildOf
a owl:ObjectProperty ;
rdfs:domain :Person ;
rdfs:range :Person ;
owl:inverseOf :isParentOf .
…
The ontology specifies three classes (Person, Man, Woman), the
latter two being sub-classes of the former, and three properties.
The property isAncestorOf is defined to be transitive; its
subproperties isParentOf and isChildOf are defined as relationships
between two persons and to be the inverse of each other.
We now assume that a young person (Randy) has been injured
during a car accident and requires a blood transfusion. Due to
special blood incompatibleness, the person can receive blood
from a blood-relative (ancestor) only. While it is not possible to
express recursions with SPARQL descriptions, the OWL ontology
allows for modelling such relations using a transitive property
(isAncestorOf). After registration of the above ontology at SENS,
we can use a subscription with the following simple SPARQL
description to get notified each time a potential blood donor is
found.</p>
      <p>CONSTRUCT {</p>
      <p>:Randy :canReceiveBloodFrom ?p.
}
WHERE {
?p :isAncestorOf :Randy.</p>
      <p>?p :hasBloodType :O.
}
Addition of the triple &lt;:Randy, :isChildOf, :Tim&gt; (cf. Figure 1) to
the SENS knowledge base would trigger the reasoning engine
inferring the following knowledge:



〈:Tim, :isParentOf, :Randy〉, as isParentOf is the inverse
property of isChildOf
〈:Tim, :isAncestorOf, :Randy〉, as isAncestorOf is a
super-property of isParentOf
〈:Lucille, :isAncestorOf, :Randy〉, as isAncestorOf is a
transitive property
Consequently, the subscriber is notified about the existence of the
triple 〈:Randy, :canReceiveBloodFrom, :Lucille〉. In this case, not
the addition of the triple but the reasoning process has
triggered the event. The defined relations have directly triggered
a coordination step.</p>
      <p>The use of formal, logic-based ontology languages like OWL
allows for solving highly complex coordination problems for
which obvious algorithmic solutions are hard to find. Ontologies
should be used for modelling generally valid or at least in the
context of the application permanently applicable relations and
taxonomies. These are read frequently and hardly change over
time. For the definition of temporary relations, SENS provides the
mechanism of continuous insertion.</p>
    </sec>
    <sec id="sec-9">
      <title>3.3 Continuous Insertion</title>
      <p>The term continuous insertion originates from the field of event
processing, where it is evaluated after each event, whether a
certain (potentially complex) event pattern can be detected and
whether a new high-level event indicating the occurrence of this
pattern shall be generated. In SENS, we adopted this concept for
the notion of knowledge. A continuous insertion describes a graph
pattern to search for and a graph data structure to be added to the
knowledge base, when the pattern is found or can be inferred. The
description is registered at SENS and is evaluated each time data
is added or removed.</p>
      <p>Example: This time we assume that the injured person can only
receive blood from a male adult also having blood type „0‟. The
following SPARQL description defines these requirements.
CONSTRUCT {</p>
      <p>:Randy :canReceiveBloodFrom ?p.
}
WHERE {
?p a :Man.
?p :hasBloodType :O.
?p :hasAge ?a.</p>
      <p>FILTER (?a &gt;= 18)
}
Registration of a continuous insertion with this SPARQL
description has the effect that SENS explicitly generates triples
for all persons who can be blood donors for Randy. Addition of
data about Al would cause the generation of the triple 〈:Randy,
:canReceiveBloodFrom, :Al〉. This may in turn allow for inferring
new knowledge which triggers the notification of subscribers or
unblocks pending receive requests.</p>
      <p>Consequently, also continuous insertions may directly trigger a
coordination step. They provide the client with a means to define
rules for special relations between the data objects using the
employed description language. Since continuous insertions can
be registered and unregistered dynamically, they allow a client to
define these rules temporarily, which can be advantageous in
many application scenarios. While this is not possible for
ontologies, they provide a more powerful means for defining
complex relations and concepts.</p>
    </sec>
    <sec id="sec-10">
      <title>4. ARCHITECTURE AND</title>
    </sec>
    <sec id="sec-11">
      <title>IMPLEMENTATION</title>
      <p>In this section we present architecture and implementation
of SENS and discuss first performance and scalability
results.</p>
    </sec>
    <sec id="sec-12">
      <title>4.1 SENS Architecture and Implementation</title>
      <p>
        SENS consists of two main components: a semantic storage and
inference layer for RDF data and an event processing layer that
implements the SENS API primitives (see Figure 2).
The Jena Semantic Web Framework (Java) [
        <xref ref-type="bibr" rid="ref19">20</xref>
        ] is employed for
storing and querying RDF data. When SENS is initialised, the
used ontology model is loaded into the Ontology Graph and the
Jena built-in reasoner creates an initial Inferred Graph. Both
insertion and removal of data are performed on the inferred graph.
Hence, the inferred graph contains explicitly inserted as wells as
implicitly available data, i.e. data inferred by applying the
provided ontology.
      </p>
      <p>
        If the inferred graph is changed, this may trigger further rule
firings of the reasoning engine. The RETE-based forward
reasoning engine [
        <xref ref-type="bibr" rid="ref10">11</xref>
        ] works incrementally and only the
consequences of the added or removed triples are explored. The
current version of SENS supports a subset of the ontology
languages supported by Jena, namely NONE, RDFS, and OWL.
The Jena framework offers two interfaces to access the inferred
graph. The Graph API provides access to the contained triples
through explicit references to resources and properties of the RDF
model. More complex queries can be formulated using the
SPARQL API.
      </p>
      <p>The main component of the event processing layer is the Event
Processor, which implements the SENS API. It synchronises
concurrent access and manages subscriptions, continuous
insertions, and pending receive/consume requests:
</p>
      <p>Subscriptions: Whenever new data is added, the event
processor checks whether the result graph of any
subscription‟s request has changed. If so, the according
subscriber is notified and provided with the newly
availably result triples.
 Continuous insertions: At each write operation, the
event processor checks whether the knowledge base
matches any of the registered SPARQL descriptions for
continuous insertions and adds the corresponding new
triples to the knowledge base.
 Pending receive and consume requests: If receive or
consume requests cannot be answered immediately, they
are stored and re-evaluated when new data is added to
the space. The result graph is provided to the client as
soon as it consists of at least one triple.</p>
      <p>
        The current version of SENS can be run in-memory or in
persistence mode with an HSQLDB 1.8 [
        <xref ref-type="bibr" rid="ref18">19</xref>
        ] or MySQL 5.0 [
        <xref ref-type="bibr" rid="ref30">31</xref>
        ]
database backend. Clients can instantiate SENS in-process or
access it via an extensible adapter mechanism. Currently, we
provide an RMI adapter for remote access to a SENS server
installation. This RMI adapter can also be used for connecting
SENS to an enterprise service bus.
      </p>
    </sec>
    <sec id="sec-13">
      <title>4.2 Performance and Scalability</title>
      <p>With the goal to get a first impression of performance and
scalability of SENS, we implemented two test scenarios for the
previously described use cases. All tests were run on a Pentium
IV HT 3,2GHz, 4GB RAM, Windows Vista PC.
For the evaluation of data load times (UC 1), we loaded chunks of
32 triples (one patient description) into SENS. While the
inmemory mode performed well (~2.5sec/10.000 triples), both
configurations with data persistence did not show satisfactory
results (see Figure 3). The high load times of up to 1.7sec for one
record can be ascribed to the high number of database connections
that are opened by the Jena framework. While this leaves much
room for optimizations, it makes it difficult to draw further
conclusions about the performance of the persistence mode of
SENS at the current stage of development. An interesting
observation is that with HSQLDB, the insertion times increased
with the size of the knowledge base. This may indicate bad
scalability and could cause severe performance problems with
bigger knowledge bases.</p>
      <p>
        In the described use case scenario, SENS is initialised with the
ontology presented in Section 3.2. Generally, we can say that the
reasoning engine did not cause any significant delay in any of the
performed tests (UC 2). Apart from the instantiation of the
reasoning engine and the initial reasoning process, the processing
overhead caused by the reasoning engine never exceeded 5% of
the total processing time. However, the time required for
reasoning strongly depends on the number of rule firings that are
triggered after adding a triple, which correlates with the size and
complexity of the employed ontology as well as the size and
internal structure of the stored knowledge. A more comprehensive
evaluation of the reasoning engine is beyond the scope of this
paper (the reader may refer to [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ]).
      </p>
      <p>For the evaluation of query processing (UC 3 &amp; UC 4), we
defined two SPARQL descriptions and registered them at SENS:
the first describes one specific property of a particular patient
description (1 triple); the second describes more complex
relations between three different patient types (~100 triples).
Again, the in-memory mode performed best (~1,1ms for 1 triple;
~3,5ms for 3 descr.), but for the simple query, HSQLDB exhibited
almost the same processing times as the in-memory configuration
(see Figure 4). In this test scenario, all queries showed constant
processing time. While HSQLDB being significantly faster than
MySQL, it is important to note that HSQLDB does not support
full ACID transactions.</p>
      <p>Fig. 4: Query times for read operations at different sizes of the</p>
      <p>
        SENS knowledge base (persistence mode)
The first tests demonstrated that SENS has the potential to
coordinate clients based on larger knowledge bases. However,
especially the data load mechanism still requires substantial
optimisation. As a next step, we are going to investigate a number
of possible performance improvements. Special indexing schemes
(e.g. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ][
        <xref ref-type="bibr" rid="ref17">18</xref>
        ][
        <xref ref-type="bibr" rid="ref27">28</xref>
        ][
        <xref ref-type="bibr" rid="ref38">39</xref>
        ]) could be employed for efficient storage and
retrieval of RDF triples. Furthermore, highly optimised algorithms
for scalable matching of graph based data structures have been
proposed for semantic publish/subscribe systems (e.g. [
        <xref ref-type="bibr" rid="ref33">34</xref>
        ][
        <xref ref-type="bibr" rid="ref42">43</xref>
        ]).
Although these algorithms were developed for the comparison of
rather small graphs, they could be adapted and employed for the
processing of subscriptions and receive operations for an entire
knowledge base. Further performance improvements could be
achieved by leveraging query engines capable of result set caching
and incremental query execution. Performance of write operations
may be further improved by employing reasoning engines
optimised for different requirements on data sizes,
responsiveness, platforms, and distribution topologies (e.g.
[
        <xref ref-type="bibr" rid="ref16">17</xref>
        ][
        <xref ref-type="bibr" rid="ref37">38</xref>
        ][
        <xref ref-type="bibr" rid="ref40">41</xref>
        ]; for a comparison see [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ]).
      </p>
      <p>More comprehensive measurements of performance and
scalability for an optimised implementation of SENS as well as a
comparison with alternative implementation approaches are
subject to future work.</p>
    </sec>
    <sec id="sec-14">
      <title>5. DISCUSSION AND COMPARISSON</title>
    </sec>
    <sec id="sec-15">
      <title>WITH RELATED WORK</title>
      <p>
        In the past few years, several databases and frameworks for the
management of semantic data have been developed (e.g. Redland
[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], Sesame [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], Yars [
        <xref ref-type="bibr" rid="ref17">18</xref>
        ], Jena [
        <xref ref-type="bibr" rid="ref19">20</xref>
        ], Oracle@Spatial RDF [
        <xref ref-type="bibr" rid="ref32">33</xref>
        ]).
While these systems are optimised for storing, querying, and
reasoning about large amounts of semantic data, they do not offer
a coordination mechanism for controlling interactions between
multiple clients.
      </p>
      <p>
        Traditional event processing systems [
        <xref ref-type="bibr" rid="ref24">25</xref>
        ] are a practical means
for implementing simple coordination scenarios. However, the
event models of these systems define an event as a simple data
object that can only be received via a certain event channel.
Consequently, the data structures of events and the hierarchy of
event channels need to be defined in advance. Knowledge, in
contrast, is inferred from arbitrarily structured and connected data.
Techniques of complex event processing (e.g. Coral8 [7], Esper
[
        <xref ref-type="bibr" rid="ref7">8</xref>
        ]) [
        <xref ref-type="bibr" rid="ref29">30</xref>
        ] allow for detecting multiple related events based on
relations that do not need to be known in advance, but they still
rely on the events‟ data structures.
      </p>
      <p>
        RDF based publish/subscribe systems (e.g. GToPSS [
        <xref ref-type="bibr" rid="ref33">34</xref>
        ], OPS
[
        <xref ref-type="bibr" rid="ref42">43</xref>
        ]) extend the event matching algorithm with semantic
matching capabilities. Every time a message is published, it is
verified whether the message meets certain semantically defined
matching criteria. If this is the case, the message is sent to the
subscriber in its original form. While this is a useful improvement
of content based subscription, it is still based on the exchange of
single messages. In contrast, our approach aims at collecting and
distributing knowledge, i.e. (fragments of) the consolidated
contents of all exchanged messages.
      </p>
      <p>
        Semantic coordination spaces take an approach that aims at
realising space-based coordination [
        <xref ref-type="bibr" rid="ref22">23</xref>
        ] with technologies from
the semantic web. Based on the Linda model [
        <xref ref-type="bibr" rid="ref12">13</xref>
        ], coordination is
implemented as reactions to insertion or removal of tuples that
contain semantic data. sTuples [
        <xref ref-type="bibr" rid="ref21">22</xref>
        ] and Semantic Web Spaces
[
        <xref ref-type="bibr" rid="ref31">32</xref>
        ], for example, allow for formulating more expressive
templates than the original Linda model, but they still limit
template matching to tuples. The TSC [
        <xref ref-type="bibr" rid="ref9">10</xref>
        ] prototype offers a
query primitive for extraction of arbitrary parts of the entire stored
knowledge. However, this primitive just passes the read request to
the underlying database, which makes it difficult to implement
more complex coordination patterns. TripCom [
        <xref ref-type="bibr" rid="ref36">37</xref>
        ][
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] also
provides access to the entire knowledge that is stored in the space.
The rd and in primitives of TripCom behave like the original
versions of Linda, which (in contrast to SENS) do not reliably
report all occurrences of events. TripCom‟s notification
mechanism also works differently as it only evaluates whether the
inserted tuples match a given template. TripCom follows this
approach, since the developed system is targeted at becoming a
web scale infrastructure for the storage and retrieval of RDF data.
Therefore, its interaction primitives are defined to allow for
maximal scalability. In SENS, triple patterns are matched against
the entire knowledge that can be inferred from the currently as
well as from previously inserted tuples. Although scalability is
also a key requirement for SENS, we introduced this more
processing intensive matching process in order to allow for a more
expressive subscription mechanism.
      </p>
      <p>Furthermore, the concept of continuous insertion for extending
the system with user-defined rules is not available in any
implementation of a semantic coordination space.</p>
      <p>
        For distribution of semantic data, there exists interesting work on
optimisation of storage and retrieval of RDF [
        <xref ref-type="bibr" rid="ref26">27</xref>
        ] data. PAGE
[
        <xref ref-type="bibr" rid="ref41">42</xref>
        ] and RDFCube [
        <xref ref-type="bibr" rid="ref35">36</xref>
        ] define indexing schemes that use
multidimensional hash indices to provide efficient query processing for
RDF triples. For the implementation of simple subscriptions,
peer-to-peer and distributed hash table based approaches such as
RDFPeers [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] and MDV [
        <xref ref-type="bibr" rid="ref20">21</xref>
        ] promise to offer query times that are
logarithmic to the number of participating network nodes.
      </p>
    </sec>
    <sec id="sec-16">
      <title>6. CONCLUSION</title>
      <p>In this paper we presented SENS, a semantic event notification
service for the implementation of knowledge-driven coordination.
By allowing a client to register for changes of knowledge, typical
knowledge integration problems such as redundant storage,
inconsistent interpretations, and repeated processing of the same
knowledge fragments are avoided.</p>
      <p>Using SENS, the stored knowledge can directly drive a
coordination process. The use of ontologies allows for describing
highly complex coordination problems which can be
automatically resolved and processed by SENS. Continuous
insertion provides a flexible means for generating new knowledge
when clients are interacting with SENS. This new knowledge can
then trigger subsequent steps of a coordination process. While
continuous insertions can be employed more dynamically,
ontologies provide a more powerful means for defining complex
relations and concepts within the knowledge domain. Both
coordination mechanisms can be combined to best meet the
requirements of a specific coordination problem.</p>
      <p>Finally, the implementation of a SENS use case scenario gave a
first insight into performance and scalability of the proposed
system. While the read operation is efficient enough for querying
large amounts of semantic data, the measurements showed that the
write operation still requires optimisation.</p>
      <p>Performance of data import is at the same time the first problem
that we are going to address in future work. Furthermore, we are
going to define a formal model of semantic event processing and
to employ this model in the specification of the SENS API
semantics.</p>
    </sec>
    <sec id="sec-17">
      <title>7. ACKNOWLEDGEMETNS</title>
      <p>This work was supported by the FP6 project TripCom
(IST-4027324-STP).
Appendix A. Content of SENS Knowledge
Base2
:Tim
:Al
:Jill
:Randy
a :Man ;
:hasAge "41"^^xsd:int ;
:hasBloodType :A .
a :Man ;
:hasAge "39"^^xsd:int ;
:hasBloodType :0 .
a :Woman ;
:hasAge "37"^^xsd:int ;
:hasBloodType :B ;
:isParentOf :Randy .
a :Man ;
:hasAge "11"^^xsd:int ;
:hasBloodType :O ;
:Lucille a :Woman ;
:hasAge "61"^^xsd:int ;
:hasBloodType :O ;
:isParentOf :Tim .
...</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Beckett</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Turtle - Terse RDF Triple Language</surname>
          </string-name>
          ,
          <year>2006</year>
          . Available at: http:// www.dajobe.org/
          <year>2004</year>
          /01/turtle/
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Beckett</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>The design and implementation of the Redland RDF application framework</article-title>
          .
          <source>Computer Networks</source>
          ,
          <volume>39</volume>
          (
          <issue>5</issue>
          ):
          <fpage>577</fpage>
          -
          <lpage>588</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Broekstra</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kampman</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          , and van Harmelen,
          <string-name>
            <surname>F.</surname>
          </string-name>
          <article-title>Sesame: A generic architecture for storing and querying RDF and RDF Schema</article-title>
          .
          <source>In Proceedings of the International Semantic Web Conference (ISWC)</source>
          , pp.
          <fpage>54</fpage>
          -
          <lpage>68</lpage>
          .
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Cai</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Frank</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>RDFPeers: A Scalable Distributed RDF Repository based on A Structured Peer-to-Peer network</article-title>
          .
          <source>In 13th International Conference on World Wide Web</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>D.</given-names>
            <surname>Cerzza</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. Della</given-names>
            <surname>Valle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Foxvog</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Krummenacher</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Murth</surname>
          </string-name>
          .
          <source>Towards European Patient Summaries based on Triple Space Computing, Proc. of 1st European Conf. on eHealth, Fribourg</source>
          , Switzerland,
          <fpage>12</fpage>
          -
          <lpage>13</lpage>
          October,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Christophides</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Plexousakis</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Scholl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Tourtounis</surname>
          </string-name>
          , S.:
          <article-title>On labeling schemes for the semantic web</article-title>
          .
          <source>In Proceedings of the twelfth international conference on World Wide Web</source>
          , ACM Press,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Esper</surname>
          </string-name>
          .
          <source>Esper Reference Documentation Version 1.8.0</source>
          . (
          <year>2007</year>
          ) Available at: http://esper.codehaus.
          <source>org/esper-1.8</source>
          .0/doc/ reference/en/pdf/esper_reference.pdf
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Fensel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Triple-space computing: Semantic Web Services based on persistent publication of information</article-title>
          ,
          <source>In Proc. of IFIP International Conf. on Intelligence in Communication Systems</source>
          , Bangkok, Thailand (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Fensel</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krummenacher</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shafiq</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kühn</surname>
          </string-name>
          , e.,
          <string-name>
            <surname>Riemer</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ding</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Draxler</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          <string-name>
            <surname>TSC - Triple Space</surname>
            <given-names>Computing</given-names>
          </string-name>
          , In Special issue on ICT research in Austria,
          <source>Journal of Electronics &amp; Information Technology (e&amp;i Elektrotechnik &amp; Informationstechnik)</source>
          ,
          <source>January-February</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Forgy</surname>
            ,
            <given-names>C.L.</given-names>
          </string-name>
          <article-title>RETE: A fast algorithm for the many pattern/many object pattern match problem</article-title>
          ,
          <source>Artificial Intelligence</source>
          ,
          <year>1982</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Gardiner</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tsarkov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          <article-title>Framework for an Automated Comparison of Description Logic Reasoners</article-title>
          .
          <source>In Proceedings of 5th International Semantic Web Conference</source>
          , Athens, GA, USA, November 5-
          <issue>9</issue>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Gelernter</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>Generative Communication in Linda</article-title>
          ,
          <source>In ACM Transactions in Programming Languages and Systems (TOPLAS)</source>
          ,
          <volume>7</volume>
          (
          <issue>1</issue>
          ), (
          <year>1985</year>
          ):
          <fpage>80</fpage>
          -
          <lpage>112</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Gelernter</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Carriero</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          <year>1992</year>
          .
          <article-title>Coordination languages and their significance</article-title>
          .
          <source>Commun. ACM 35</source>
          ,
          <issue>2</issue>
          ,
          <year>1992</year>
          ,
          <fpage>97</fpage>
          -
          <lpage>107</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Greifeneder</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>The Request/Answer Coordination Design Pattern</article-title>
          ,
          <source>Diploma Thesis</source>
          , Institute of Computer Languages, Vienna University of Technology (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Grossberger</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          <article-title>The Publish/Subscribe Coordination Design Pattern</article-title>
          ,
          <source>Diploma Thesis</source>
          , Institute of Computer Languages, Vienna University of Technology (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Haarslev</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Möller</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <article-title>RACER system description</article-title>
          .
          <source>In Proceedings of the Int. Joint Conf. on Automated Reasoning (IJCAR</source>
          <year>2001</year>
          ), pages
          <fpage>701</fpage>
          -
          <lpage>705</lpage>
          . Springer,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [18]
          <string-name>
            <surname>Harth</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Decker</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <article-title>Optimized index structures for querying rdf from the web</article-title>
          .
          <source>In Proceedings of the 3rd Latin American Web Congress</source>
          . IEEE Press,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <source>[19] HSQLDB. HSQLDB 1.8</source>
          .
          <fpage>0</fpage>
          -
          <lpage>100</lpage>
          % Java Database, http://hsqldb.org/
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Jena. Jena - A Semantic Web</surname>
          </string-name>
          <article-title>Framework for Java</article-title>
          . Available at: http://jena.sourceforge.net/, last accessed:
          <source>Sept</source>
          .
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [21]
          <string-name>
            <surname>Keidl</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kreutz</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kemper</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Kossmann</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>A publish and subscribe architecture for distributed metadata management</article-title>
          .
          <source>In Proceedings of 18th International Conference on Data Engineering</source>
          , San Jose, CA, USA,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [22]
          <string-name>
            <surname>Khushraj</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lassila</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Finin</surname>
          </string-name>
          , T.W. sTuples:
          <article-title>Semantic Tuple Spaces</article-title>
          .
          <source>In 1st Ann. Int'l Conf. on Mobile and Ubiquitous Systems</source>
          ,
          <year>August 2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [23]
          <string-name>
            <surname>Kühn</surname>
          </string-name>
          , e.
          <article-title>Fault-Tolerance for Communicating Multidatabase Transactions</article-title>
          .
          <source>In Proc. of the 27th Hawaii Int. Conf. on System Sciences (HICSS)</source>
          , ACM, IEEE,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [24]
          <string-name>
            <surname>Lederer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>The Database Replication Coordination Design Pattern</surname>
          </string-name>
          ,
          <source>Diploma Thesis</source>
          , Institute of Computer Languages, Vienna University of Technology. (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [25]
          <string-name>
            <surname>Luckham</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <article-title>The Power of Events: An Introduction to Complex Event Processing in Distributed Enterprise Systems</article-title>
          . Addison-Wesley,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [26]
          <string-name>
            <surname>Malone</surname>
            ,
            <given-names>T.W.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Crowston</surname>
          </string-name>
          ,
          <source>K. The Interdisciplinary Study of Coordination, ACM Computing Surveys 26</source>
          ,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [27]
          <string-name>
            <surname>Manola</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Miller</surname>
            ,
            <given-names>E. RDF Primer</given-names>
          </string-name>
          <string-name>
            <surname>W3C-Recommend</surname>
            <given-names>.</given-names>
          </string-name>
          ,
          <year>2004</year>
          . Available at: http://www.w3.org/TR/rdf-primer/
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [28]
          <string-name>
            <surname>Matono</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          <string-name>
            <surname>Amagasa</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Yoshikawa</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Uemura</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          <article-title>An Indexing Scheme for RDF and RDF Schema based on Suffix Arrays</article-title>
          .
          <source>Transactions of Information Processing Society of Japan</source>
          , Vol.
          <volume>45</volume>
          , No.
          <issue>4</issue>
          , pp.
          <fpage>50</fpage>
          -
          <lpage>62</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [29]
          <string-name>
            <surname>McGuinness</surname>
            ,
            <given-names>D.L</given-names>
          </string-name>
          . and
          <string-name>
            <surname>van Harmelen</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>OWL Web Ontology</surname>
            <given-names>Language</given-names>
          </string-name>
          ,
          <source>W3C Recommendation</source>
          ,
          <year>2004</year>
          . Available at: http://www.w3.org/TR/owl-features/
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [30]
          <string-name>
            <surname>Murth</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>and Kühn, e. Complex event processing with a semantic tuplespace approach</article-title>
          .
          <source>Technical report, E185/1</source>
          , Vienna University of Technology,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          <source>[31] MySQL. MySQL 5</source>
          .0. http://www.mysql.com
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [32]
          <string-name>
            <surname>Nixon</surname>
            ,
            <given-names>L.J.B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Paslaru Bontas Simperl</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antonenko</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Tolksdorf</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          <article-title>Towards Semantic Tuplespace Computing: The Semantic Web Spaces System</article-title>
          .
          <source>In 22nd Ann. ACM Symposium on Applied Computing</source>
          ,
          <year>March 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [33]
          <string-name>
            <surname>Oracle</surname>
          </string-name>
          ® Spatial.
          <source>Resource Description Framework (RDF) 10g Release</source>
          <volume>2</volume>
          (
          <issue>10</issue>
          .2). Available at: http://download.oracle.com/docs/cd/B19306_01/appdev.102/ b19307.pdf, last accessed:
          <source>Jan</source>
          . 2008
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [34]
          <string-name>
            <surname>Petrovic</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liu</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Jacobsen</surname>
          </string-name>
          , H. G-ToPSS:
          <article-title>fast filtering of graph-based metadata</article-title>
          .
          <source>In Proceedings of the 14th international conference on World Wide Web (WWW '05)</source>
          , ACM Press, New York, NY, USA,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [35]
          <string-name>
            <surname>Prud'hommeaux</surname>
          </string-name>
          , E., and
          <string-name>
            <surname>Seaborne</surname>
            ,
            <given-names>A. SPARQL</given-names>
          </string-name>
          <article-title>Query Language for RDF</article-title>
          .
          <source>W3C Working Draft</source>
          ,
          <year>2007</year>
          . Available at: http://www.w3.org/TR/rdf-sparql-query/
        </mixed-citation>
      </ref>
      <ref id="ref35">
        <mixed-citation>
          [36]
          <string-name>
            <surname>RDFCube</surname>
          </string-name>
          . Database grid grid - RDFCube. Available at: http://projects.gtrc.aist.go.jp/dbwiki/pukiwiki.php?RDFCub, last accessed:
          <source>Sept</source>
          .
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref36">
        <mixed-citation>
          [37]
          <string-name>
            <surname>Simperl</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Krummenacher</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Nixon</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          <article-title>A Coordination Model for Triplespace Computing</article-title>
          .
          <source>In Proc. of the: 9th Int'l Conf. on Coordination Models and Languages</source>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref37">
        <mixed-citation>
          [38]
          <string-name>
            <surname>Sirin</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Parsia</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cuenca Grau</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kalyanpur</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Katz</surname>
            ,
            <given-names>Y.</given-names>
          </string-name>
          <article-title>Pellet: A practical OWL-DL reasoner</article-title>
          .
          <source>In Proceedings of Web Semantics: Science, Services and Agents on the World Wide Web</source>
          , Vol.
          <volume>5</volume>
          ,
          <string-name>
            <surname>Issue</surname>
            <given-names>2</given-names>
          </string-name>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref38">
        <mixed-citation>
          [39]
          <string-name>
            <surname>Stuckenschmidt</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Vdovjak</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Houben</surname>
          </string-name>
          , G.-J., and
          <string-name>
            <surname>Broekstra</surname>
            ,
            <given-names>J. Index</given-names>
          </string-name>
          <string-name>
            <surname>Structures</surname>
          </string-name>
          and
          <article-title>Algorithms for Querying Distributed RDF Repositories</article-title>
          .
          <source>In Proceedings of 13th International World Wide Web Conference</source>
          , New York, pages
          <fpage>631</fpage>
          -
          <lpage>639</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref39">
        <mixed-citation>
          [40]
          <string-name>
            <surname>Tolksdorf</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          :
          <article-title>Coordination patterns of mobile information agents</article-title>
          .
          <source>In Cooperative Information Agents II, proceedings of the second international workshop CIA'98</source>
          , Paris, France (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref40">
        <mixed-citation>
          [41]
          <string-name>
            <surname>Tsarkov</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Horrocks</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          <article-title>FaCT++ description logic reasoner: System description</article-title>
          .
          <source>In Proceedings of the Int. Joint Conf. on Automated Reasoning (IJCAR</source>
          <year>2006</year>
          ), volume
          <volume>4130</volume>
          <source>of Lecture Notes in Artificial Intelligence</source>
          , pages
          <fpage>292</fpage>
          -
          <lpage>297</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref41">
        <mixed-citation>
          [42]
          <string-name>
            <given-names>Della</given-names>
            <surname>Valle</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Turati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            , and
            <surname>Ghioni</surname>
          </string-name>
          ,
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>PAGE: A distributed infrastructure for fostering RDF-based interoperability</article-title>
          .
          <source>In DAIS</source>
          , pages
          <fpage>347</fpage>
          -
          <lpage>353</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref42">
        <mixed-citation>
          [43]
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jin</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          <article-title>An Ontology-Based Publish/Subscribe System</article-title>
          .
          <source>In Proceedings of the 5th ACM/IFIP/USENIX international conference on Middleware, Canada</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref43">
        <mixed-citation>
          [44]
          <string-name>
            <surname>Wernhart</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          , Kühn, e.,
          <string-name>
            <surname>Trausmuth</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>The Replicator Coordination Design Pattern</article-title>
          ,
          <source>In Journal on Future Generation Computer Systems</source>
          , Elsevier. (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>