<!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>Blending Complex Event Processing with the RETE Algorithm</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Kay-Uwe Schmidt</string-name>
          <email>kay-uwe.schmidt@sap.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Roland Stuhmer</string-name>
          <email>roland.stuehmer@sap.com</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ljiljana Stojanovic</string-name>
          <email>ljiljana.stojanovic@fzi.de</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>FZI Forschungszentrum Informatik Haid-und-Neu-Stra e 10-14</institution>
          ,
          <addr-line>76131 Karlsruhe</addr-line>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>SAP Research, CEC Karlsruhe Vincenz-Prie nitz-Stra e 1</institution>
          ,
          <addr-line>76131 Karlsruhe</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>Modern event-driven applications implement sophisticated and highly specialized algorithms for detecting and correlating events from event streams or clouds. The correlation logic and resulting actions are declaratively de ned as EA (event action) rules. An EA language allows the de nition of complex correlation rules with the help of logical, temporal, content-based and other operators. On the other hand, production rule systems provide a declarative means to express and compute CA (condition action) rules. CA rules de ne constraints. The most prominent scienti c and commercial production rule systems rely on the RETE algorithm in order to e ciently compute CA rules. As the industry is on the way towards a loosely coupled service-oriented and eventdriven architecture, there is a high demand for an integrated solution of computing ECA (event condition action) rules. In this paper we give a survey of already nished as well as ongoing research in the eld of combining event processing algorithms with the RETE algorithm. We compare the di erent approaches and present our approach of combining SnoopIB, a specialized event detection algorithm, with the RETE algorithm.</p>
      </abstract>
      <kwd-group>
        <kwd>RETE Algorithm</kwd>
        <kwd>CEP</kwd>
        <kwd>Event</kwd>
        <kwd>ECA</kwd>
        <kwd>Rules</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        In a production rule system the RETE algorithm [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ] or derivatives thereof like
TREAT [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], LEAPS [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] or GATOR [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] are used to establish which rules must be
red. The RETE algorithm is the execution kernel of the rule-based language,
OPS5 [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. OPS5 is a condition action (CA) production rule language. The RETE
algorithm is concerned with the condition parts of rules. When matching rules
are found, their action parts are executed. An extension to CA rules are event
condition action (ECA) rules, comprised of an additional event part. This kind
of rules specify an action which is executed upon the detection of an event
but only if the condition is ful lled at the same time. Both the event part and
the condition part of a rule may consist of complex patterns which must be
ful lled for the rule to re. The event pattern must be detected from one or
more streams of events and the condition pattern must be matched from among
business objects (facts) pertaining to the application state.
      </p>
      <p>
        The open research question remains of how both matching operations can be
integrated in an e cient manner. There are many approaches of either adding
event processing to production rule systems or integrating scalable condition
pattern matching algorithms into event processing engines. In this paper we describe
the di erent approaches and present their Pros and Cons. We present a novel
approach of combining the two rule execution paradigms: Data-driven and
eventdriven execution. Our algorithm is an excerpt of our ongoing research of adding
complex event processing (CEP) to RETE. It is a middle course which refrains
from merging the two algorithms but still exposes synergistic e ects. However,
the question is not whether the event and condition speci cations should be
consolidated. Conceptually, events and conditions are concerned with di erent
information with di erent semantics. Therefore, it makes sense to distinguish
events from non-temporal facts in an ECA rule speci cation. Considering an
application as a state machine, events represent transitions, cf. [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. When an
event is detected, the appropriate transition is taken. The event may then be
discarded. Facts, on the other hand, represent state. A rule condition determines
a state to be held before a transition may be taken. Facts remain valid and must
be retained until they are explicitly removed in a state change. The analogy of
a state machine provides a usable guide to distinguish between events and facts.
For the implementation of an ECA rule engine, on the other hand, there is no
obligation to keep events and facts separated. However, as events are transient,
they must e ciently be discarded after they cannot be used any further.
      </p>
      <p>
        Table 1 outlines some notable di erences in semantics and behavior of events
and non-temporal facts. Events are transient and are consumed after they are
delivered to all consumers. Facts, on the other hand, are persistent and must
explicitly be deleted. Events are usually immutable, whereas facts may be changed.
Analogies may be drawn to transitions and state, respectively. Another analogy
from [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] compares facts to (computer-)written text. Text may be altered or
deleted. Also it does not expire by itself. It is available for anyone to retrieve it
(i.e. pull). Events, on the other hand, are like the spoken word. It is available
only to the people who listen at the right time (i.e. pushed to subscribers). Also
the spoken word is immutable.
      </p>
      <p>The paper is structured as follows: Section 2 surveys the di erent approaches
of adding event processing capabilities to the RETE algorithm. In Section 3 the
several approaches introduced in Section 2 are accessed and the pros and cons are
outlined. We give an elaborated insight into our algorithm that combines CEP
with RETE in Section 4. We conclude the paper in Section 5 with a discussion
and outlook.</p>
    </sec>
    <sec id="sec-2">
      <title>A Survey of Approaches Adding Event Processing</title>
    </sec>
    <sec id="sec-3">
      <title>Capabilities to the RETE Algorithm</title>
      <p>
        Maloof et al. [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] extend RETE to allow reasoning about relative time
representations. This is done by introducing temporal operators before, during and after
which may be used to compare temporal facts from the working memory. Events
are seen as having a duration, therefore an interval-based semantics is assumed.
However it is not clearly pointed out how exactly the operators are evaluated
and how the interval start or end are used.
      </p>
      <p>
        Berstel [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] also proposes an extension to the RETE algorithm to enable
the relative operators before and after. Only time-point semantics is used for
events. This exposes unwanted e ects for the correct detection of sequences
when handling non-instantaneous events. Two extensive intervals, which mostly
overlap, will be detected as occurring one after the other, because only their end
points are considered for comparison. Nesting of sequence operators provides
even more unexpected results when transitivity is concerned.
      </p>
      <p>Berstel also devised a garbage-collection mechanism to expunge unneeded
events when they are no longer needed. Events are special facts which are
asserted through a special API. Only these facts are considered for
garbagecollection. When a join node encounters a new event in one of its input
memories, the lifetime of the event is calculated from the time stamp of the event
and the join conditions of the node which must at least be ful lled. A callback
service is used by the join node to raise a timeout when the lifetime is passed.
The node then issues its parent memory to delete its local reference to the event.
Global retraction of events is not discussed.</p>
      <p>
        Walzer [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ] extended the RETE algorithm with the 13 temporal relations
from Allen [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. They cover all relationships intervals can have. Accordingly,
Walzer uses interval-based semantics for events. Temporal operators for each of
the 13 relations are introduced, e.g. equal, before, after, during, overlaps, etc.
The operators can be quanti ed, e.g. specifying how much two intervals overlap
in the beginning and in the end. Ranges for these quanti ers are also allowed.
      </p>
      <p>Walzer implemented a garbage-collection mechanism, taking into account the
constraints in join nodes, time-based windows in join nodes, the time stamps of
events and maximum lifetimes of events. When a new token or a new working
memory element (WME) reaches a RETE memory, their lifetimes are calculated
if they contain events. The working memory is noti ed to increase the reference
counts on these objects. Using the calculated lifetimes the working memory
starts the creation of timers in the garbage-collector. When a timer runs out,
the garbage-collector removes the referenced token or WME from its memory.
The reference count in the working memory is then decreased, and if it reaches
zero, the event is completely retracted from the working memory.
3</p>
    </sec>
    <sec id="sec-4">
      <title>Comparing the Di erent Approaches</title>
      <p>There are several features concerning CEP in which the mentioned approaches
di er and there are some which they have in common due to the RETE
algorithm.</p>
      <p>
        An important distinctive feature is the treatment of events as time intervals
instead of time points. For the eld of CEP this has been discussed for quite some
time, e.g. in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. To receive expected results from temporal operators, events
must be represented as intervals if they are detected over a period of time.
      </p>
      <p>The next distinctive feature is garbage-collection. Events arrive in streams.
They may then be processed and must be discarded in order not to use inde nite
amounts of space. Events are transient representations of incidents which
happened. These events may be used on a subscriber-basis by di erent consumers,
i.e. rules in the RETE context. When no further consumer is interested in an
event, it can be discarded. Thus, there is a fundamental di erence between facts
and events. Facts have a potentially inde nite lifetime. They are only removed
if they are explicitly retracted. Events, on the other hand, have individual
lifetimes which may be calculated from constraints imposed by their consumers.
After these lifetimes have expired, the event can be completely removed.</p>
      <p>Another distinctive feature is the operators introduced by the di erent
approaches. Berstel proposes the operators before and after for time-points. As
there are no intervals, Berstel's approach does not contain an during -operator.
Maloof adds the during -operator. Walzer nally adds all operators representing
the 13 interval relations. This is the richest set of operators one of the approaches
o ers.</p>
      <p>All approaches share the notion of a working memory. All events go into the
working memory and stay there as long as they are not garbage-collected.
However, providing a global pool of events is not appropriate for a publish/subscribe
environment. For example an event should be only visible to rules which
subscribe to it and there should be no reason to expose the event further. The
working memory, however, retains the event as long as it might still match one
of the current rules. Only then is the event discarded. When a new rule is
introduced it should not match events from the past; Ideally all events will be deleted.
However, a new rule might still see an older event if is still in the working
memory, retained by some existing rule / consumer. Therefore the matches for the
new rule depend on the existence of other rules. This is a very much undesired
e ect for a rule system.</p>
      <p>
        The semantics of an event being visible in the working memory is therefore
unspeci c, meaning only that the event has not been consumed by all subscribers.
Other features of the working memory are also not applicable for events. This
questions the purpose of adding events to a working memory in the rst place.
For example as events should be immutable (cf. spoken word analogy mentioned
in Section 1) the modify-operation of the working memory is not applicable. In
fact, Walzer marks events as immutable facts (cf. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]) in her implementation
for the rule engine Drools3 [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ]. On top of that, retract-functionality seems
unreasonable for events, as well. An event either happened or it did not happen.
All subscribers should consistently receive it.
      </p>
      <p>
        None of the RETE-based approaches have a notion of event selection and
consumption. Selection and consumption are described e.g. in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] as so-called
contexts. For each event operator they de ne which events from each input should
be used for correlation, if there are more than one, and whether a used event
can be part of further matches or is consumed.
      </p>
      <p>In all of the approaches mentioned above a given join node correlates the
available events from both inputs. This results in a cross product of all events
which have a suitable lifetime and therefore are not garbage-collected yet.
However, there is no way to specify e.g. that successive events should supersede
their predecessors as in the so-called Recent context. Also, there is no way to
consume events in the process of correlation. Rather, events will take part in
further correlations as long as only its temporal constraints are ful lled.
4</p>
    </sec>
    <sec id="sec-5">
      <title>Enhancing RETE with SnoopIB</title>
      <p>Instead of incorporating the event detection in the RETE network, we decided
to process events in a disjoint set of nodes and only merge the two graphs at the
nal nodes. Figure 1 shows an example graph.</p>
      <p>
        This allows us to retain an event graph which is not subject to assumptions
from the RETE algorithm. We use an event detection graph as proposed with the
event pattern language Snoop [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], extended with interval-based semantics for
events [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Such an event detection graph is a DAG, constructed as follows: All
simple events are at the bottom. There is one simple event node per simple event
type. Complex event expressions are at the top of the graph. Sub-expressions
form the inner nodes, down to the indivisible, i.e. simple, nodes at the bottom.
Common sub-expressions shared by more than one rule result in node sharing.
      </p>
      <p>Simple events coming from the event sources are fed into the graph at the
bottom. According to the connected nodes, the events are either discarded, queued
or propagated further if they match an event expression.
3 http://www.jboss.org/drools</p>
      <p>ECA
rule</p>
      <p>ECA
rule</p>
      <p>CA
rule</p>
      <p>The RETE network and the described event detection graph have several
things in common. They are both DAGs used for incremental pattern matching,
in a data-driven, bottom-up fashion. Both employ state saving by not
recalculating previous matches. Both reuse partial matches shared by more than one
rule. However, especially for the application of CEP, the event graph has some
advantages.</p>
      <p>
        { The event graph can have nodes with more than two input edges. This more
closely resembles higher-level event operators from Snoop which we are using.
{ Also garbage-collection comes more naturally. Events are stored and
discarded in the queues of event nodes where they are still needed. There is
no global repository for unused or partially unused events like the working
memory from RETE.
{ Consumption modes are selectable (on a per-node basis, if necessary). This
allows for the controlled selection of events from a stream, if more than one
events have arrived and might be tting for a match. For example in selected
applications only the newest event of its kind might be of interest. This
behavior is called Recent context. There are several contexts as described in
[
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>On top of the event graph and RETE a new layer of nodes is introduced,
cf. Figure 1 at bottom right. It represents the rules. For a CA rule, the
production node from RETE is connected solely to the rule node. For an ECA rule,
additionally an event node is connected to the rule node. The rule node res its
associated rule actions according to the ECA semantics. For an ECA rule action
to re, an event must be detected, and for its complete interval, the condition
must be ful lled.</p>
      <p>Vice versa this means that no events need to be correlated as long as RETE
supplies no matched tokens. Using this realization, computation time (and space)
can be saved in the event detection graph, when unneeded event nodes are
disabled during the time the rule condition has no matches. We are disabling
nodes recursively down from the top event node (which is to-be-disabled) down
to all of its contributing children nodes. Care must be taken when encountering
a shared node which has further consumers. Such a node is only disabled when
all its consumers are disabled.</p>
      <p>The achieved savings from this procedure varies depending on several
factors. If no event nodes are reused, the saved computations are a function of the
event frequencies and the probability of the rule condition being unmatched.
To calculate the necessary event operations of one rule, one must consider the
added frequencies of all participating events, simple and complex, including all
intermediate stages.</p>
      <p>However, determining the average frequency of events might not always be
practicable or accurate, e.g. if a source emits events aperiodically. Also, if nodes
are shared by several consumers, assessing the amount of saved computations
becomes more di cult. Event operations can only be cut down if all consumers
are disabled. The event-frequency of each participating node must then be
multiplied by the probability of all other consumers being disabled as well.
5</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusions and Outlook</title>
      <p>
        In this paper we compared di erent approaches of incorporating CEP in a RETE
network. As RETE is designed to reason over persistent and mutable facts, it
is not a natural t for doing event processing. Many changes towards temporal
capabilities as well as event expiry must be added. And because the RETE
network relies on a working memory where events reside, such an approach does
not resemble an event processing network as described in [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]. In such a network
events are propagated forward4 and are only visible to nodes which subscribe to
the events and have not yet consumed them.
      </p>
      <p>We presented our approach of blending CEP with RETE as a solution to
avoid the indicated mismatch of requirements. Our approach works by
combining dedicated event processing nodes with RETE nodes. In our opinion it
is a promising way of coupling event and condition processing, creating
synergistic e ects without constricting the features of CEP. Features of CEP which
are not available in current RETE adaptation are mentioned in this paper. The
features include selectable detection contexts to determine the precise
candidates of events for correlation. Also the features include local visibility of events
and garbage collection which guarantees the isolation of di erent rules. These
requirements for CEP have not been addressed by the current RETE-based
adaptations.</p>
      <p>As an outlook for our approach we are going to evaluate our implementation,
in order to produce numbers for the savings in event processing time mentioned
in Section 4. Benchmarking ECA rule performance depends on many factors
and we are looking for a suitable ratio of event frequency, number of rules,
and changes to the working memory. For that purpose we are going to evaluate
existing metrics on scoring of event-driven and rule-based systems.</p>
      <p>
        In the future we are also looking into further improvements for our approach.
The four detection contexts from Snoop can possibly be generalized by an algebra
for event selection and consumption as proposed in [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] or [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. Using these
event algebras, one is independent of prede ned detection contexts. Also we
are exploring the use of advanced RETE derivatives like TREAT, LEAPS or
GATOR as the preferred discrimination network to satisfy rule conditions and
to combine it with CEP.
4 About propagation and visibility: Strictly speaking, according to the Event
Processing Glossary [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ], an event processing network may have feedback arcs, i.e. cycles.
However, events are still con ned in their visibility to only those nodes which can
still use them.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Charles</surname>
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Forgy</surname>
          </string-name>
          .
          <article-title>On the e cient implementation of production systems</article-title>
          .
          <source>PhD thesis</source>
          , Carnegie Mellon University, Pittsburgh, PA, USA,
          <year>1979</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Charles</surname>
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Forgy</surname>
          </string-name>
          .
          <article-title>Rete: a fast algorithm for the many pattern/many object pattern match problem</article-title>
          .
          <source>Arti cial Intelligence</source>
          ,
          <volume>19</volume>
          :
          <fpage>17</fpage>
          {
          <fpage>37</fpage>
          ,
          <year>1982</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Daniel</surname>
            <given-names>P.</given-names>
          </string-name>
          <string-name>
            <surname>Miranker. Treat</surname>
          </string-name>
          :
          <article-title>A better match algorithm for ai production system matching</article-title>
          .
          <source>In AAAI</source>
          , pages
          <volume>42</volume>
          {
          <fpage>47</fpage>
          ,
          <year>1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Don</given-names>
            <surname>Batory</surname>
          </string-name>
          .
          <article-title>The leaps algorithms</article-title>
          .
          <source>Technical report</source>
          , University of Texas at Austin, Austin, TX, USA,
          <year>1994</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>E. N.</given-names>
            <surname>Hanson</surname>
          </string-name>
          and
          <string-name>
            <given-names>M. S.</given-names>
            <surname>Hasan</surname>
          </string-name>
          . Gator:
          <article-title>An optimized discrimination network for active database rule condition testing</article-title>
          ,
          <source>technical report tr-93-036. Technical report</source>
          , CIS Department, University of Florida,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Charles</surname>
            <given-names>L.</given-names>
          </string-name>
          <string-name>
            <surname>Forgy</surname>
          </string-name>
          .
          <article-title>The ops5 user's manual</article-title>
          .
          <source>technical report cmu-cs-81-135</source>
          ,
          <year>1981</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>Opher</given-names>
            <surname>Etzion</surname>
          </string-name>
          .
          <article-title>On events and data</article-title>
          .
          <source>Online Article</source>
          . http://epthinking.blogspot. com/
          <year>2008</year>
          /07/on-events-and
          <article-title>-data</article-title>
          .html,
          <year>July 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <given-names>Francois</given-names>
            <surname>Bry</surname>
          </string-name>
          and
          <string-name>
            <given-names>Michael</given-names>
            <surname>Eckert</surname>
          </string-name>
          .
          <article-title>Twelve theses on reactive rules for the web</article-title>
          . In Torsten Grust, Hagen Hopfner, Arantza Illarramendi, Stefan Jablonski, Marco Mesiti, Sascha Muller,
          <string-name>
            <surname>Paula-Lavinia</surname>
            <given-names>Patranjan</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kai-Uwe</surname>
            <given-names>Sattler</given-names>
          </string-name>
          , Myra Spiliopoulou, and Jef Wijsen, editors,
          <source>EDBT Workshops</source>
          , volume
          <volume>4254</volume>
          of Lecture Notes in Computer Science, pages
          <volume>842</volume>
          {
          <fpage>854</fpage>
          . Springer,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>M.A.</given-names>
            <surname>Maloof</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.J.</given-names>
            <surname>Kochut</surname>
          </string-name>
          .
          <article-title>Modifying rete to reason temporally</article-title>
          .
          <source>Tools with Arti cial Intelligence</source>
          ,
          <year>1993</year>
          . TAI '
          <fpage>93</fpage>
          .
          <string-name>
            <surname>Proceedings</surname>
          </string-name>
          ., Fifth International Conference on, pages
          <volume>472</volume>
          {
          <fpage>473</fpage>
          ,
          <string-name>
            <surname>Nov</surname>
          </string-name>
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>Bruno</given-names>
            <surname>Berstel</surname>
          </string-name>
          .
          <article-title>Extending the rete algorithm for event management</article-title>
          .
          <source>In Proc. Ninth International Symposium on Temporal Representation and Reasoning TIME 2002</source>
          , pages
          <fpage>49</fpage>
          {
          <fpage>51</fpage>
          , Washington, DC, USA,
          <volume>7</volume>
          {
          <issue>9</issue>
          <year>July 2002</year>
          . IEEE Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Karen</surname>
            <given-names>Walzer</given-names>
          </string-name>
          , Alexander Schill, and
          <article-title>Alexander Loser. Temporal constraints for rule-based event processing</article-title>
          .
          <source>In Aparna S. Varde and Jian Pei</source>
          , editors,
          <source>PIKM</source>
          , pages
          <volume>93</volume>
          {
          <fpage>100</fpage>
          . ACM,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Karen</surname>
            <given-names>Walzer</given-names>
          </string-name>
          , Tino Breddin, and
          <string-name>
            <given-names>Matthias</given-names>
            <surname>Groch</surname>
          </string-name>
          .
          <article-title>Relative temporal constraints in the rete algorithm for complex event detection</article-title>
          .
          <source>In DEBS '08: Proceedings of the second international conference on Distributed event-based systems</source>
          , pages
          <volume>147</volume>
          {
          <fpage>155</fpage>
          , New York, NY, USA,
          <year>2008</year>
          . ACM.
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>James</surname>
            <given-names>F.</given-names>
          </string-name>
          <string-name>
            <surname>Allen</surname>
          </string-name>
          .
          <article-title>Maintaining knowledge about temporal intervals</article-title>
          .
          <source>Commun. ACM</source>
          ,
          <volume>26</volume>
          (
          <issue>11</issue>
          ):
          <volume>832</volume>
          {
          <fpage>843</fpage>
          ,
          <year>1983</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <article-title>Antony Galton and Juan Carlos Augusto</article-title>
          . Two approaches to event de nition.
          <source>In DEXA '02: Proceedings of the 13th International Conference on Database and Expert Systems Applications</source>
          , pages
          <volume>547</volume>
          {
          <fpage>556</fpage>
          , London, UK,
          <year>2002</year>
          . Springer-Verlag.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>Michael</given-names>
            <surname>Neale</surname>
          </string-name>
          .
          <article-title>Drools 5.0 m1 - new and noteworthy</article-title>
          . Online Article. http://blog. athico.com/
          <year>2008</year>
          /07/drools-50
          <string-name>
            <surname>-</surname>
          </string-name>
          m1
          <article-title>-new-and-noteworthy</article-title>
          .html,
          <year>July 2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>Mark</given-names>
            <surname>Proctor</surname>
          </string-name>
          .
          <article-title>Relational declarative programming with jboss drools</article-title>
          .
          <source>In SYNASC '07: Proceedings of the Ninth International Symposium on Symbolic and Numeric Algorithms for Scienti c Computing, page 5</source>
          , Washington, DC, USA,
          <year>2007</year>
          . IEEE Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>Mark</given-names>
            <surname>Proctor</surname>
          </string-name>
          , Michael Neale,
          <string-name>
            <surname>Bob</surname>
            <given-names>McWhirter</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>Kris</given-names>
            <surname>Verlaenen</surname>
          </string-name>
          , Edson Tirelli, Alexander Bagerman, Michael Frandsen, Fernando Meyer, Geo rey De Smet, Toni Rikkola,
          <string-name>
            <given-names>Steven</given-names>
            <surname>Williams</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and Ben</given-names>
            <surname>Truit</surname>
          </string-name>
          . Drools,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <given-names>Sharma</given-names>
            <surname>Chakravarthy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Krishnaprasad</surname>
          </string-name>
          , Eman Anwar, and
          <string-name>
            <given-names>S. K.</given-names>
            <surname>Kim</surname>
          </string-name>
          .
          <article-title>Composite events for active databases: Semantics, contexts and detection</article-title>
          . In Jorge B.
          <string-name>
            <surname>Bocca</surname>
          </string-name>
          , Matthias Jarke, and Carlo Zaniolo, editors,
          <source>20th International Conference on Very Large Data Bases, September</source>
          <volume>12</volume>
          {
          <fpage>15</fpage>
          ,
          <year>1994</year>
          , Santiago, Chile proceedings, pages
          <volume>606</volume>
          {
          <fpage>617</fpage>
          , Los Altos, CA 94022, USA,
          <year>1994</year>
          . Morgan Kaufmann Publishers.
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <given-names>Raman</given-names>
            <surname>Adaikkalavan</surname>
          </string-name>
          and
          <string-name>
            <given-names>Sharma</given-names>
            <surname>Chakravarthy</surname>
          </string-name>
          . Snoopib:
          <article-title>Interval-based event speci cation and detection for active databases</article-title>
          .
          <source>Data Knowl. Eng.</source>
          ,
          <volume>59</volume>
          (
          <issue>1</issue>
          ):
          <volume>139</volume>
          {
          <fpage>165</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>David</surname>
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Luckham</surname>
          </string-name>
          .
          <article-title>The Power of Events: An Introduction to Complex Event Processing in Distributed Enterprise Systems</article-title>
          . Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>David</surname>
            <given-names>C.</given-names>
          </string-name>
          <string-name>
            <surname>Luckham</surname>
            and
            <given-names>Roy</given-names>
          </string-name>
          <string-name>
            <surname>Schulte</surname>
          </string-name>
          .
          <source>Event processing glossary 2008</source>
          .
          <article-title>Online Resource</article-title>
          . http://complexevents.com/?p=
          <fpage>362</fpage>
          , May
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <given-names>D.</given-names>
            <surname>Zimmer</surname>
          </string-name>
          and
          <string-name>
            <given-names>R.</given-names>
            <surname>Unland</surname>
          </string-name>
          .
          <article-title>On the semantics of complex events in active database management systems</article-title>
          .
          <source>In ICDE '99: Proceedings of the 15th International Conference on Data Engineering</source>
          , pages
          <volume>392</volume>
          {
          <fpage>399</fpage>
          , Washington, DC, USA,
          <year>Mar 1999</year>
          . IEEE Computer Society.
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <given-names>A.</given-names>
            <surname>Hinze</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Voisard</surname>
          </string-name>
          .
          <article-title>A parameterized algebra for event noti cation services</article-title>
          .
          <source>Ninth International Symposium on Temporal Representation and Reasoning</source>
          ,
          <year>2002</year>
          .
          <source>TIME</source>
          <year>2002</year>
          , pages
          <fpage>61</fpage>
          {
          <fpage>63</fpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>