Stream Reasoning in DyKnow: A Knowledge Processing Middleware System ?

advertisement
Stream Reasoning in DyKnow: A Knowledge Processing
Middleware System?
Fredrik Heintz, Jonas Kvarnström, and Patrick Doherty
{frehe, jonkv, patdo}@ida.liu.se
Dept. of Computer and Information Science
Linköping University, 581 83 Linköping, Sweden
Abstract. The information available to modern autonomous systems is often in
the form of streams. As the number of sensors and other stream sources increases
there is a growing need for incremental reasoning about the incomplete content
of sets of streams in order to draw relevant conclusions and react to new situations as quickly as possible. To act rationally, autonomous agents often depend
on high level reasoning components that require crisp, symbolic knowledge about
the environment. Extensive processing at many levels of abstraction is required
to generate such knowledge from noisy, incomplete and quantitative sensor data.
We define knowledge processing middleware as a systematic approach to integrating and organizing such processing, and argue that connecting processing
components with streams provides essential support for steady and timely flows
of information. DyKnow is a concrete and implemented instantiation of such
middleware, providing support for stream reasoning at several levels. First, the
formal KPL language allows the specification of streams connecting knowledge
processes and the required properties of such streams. Second, chronicle recognition incrementally detects complex events from streams of more primitive events.
Third, complex metric temporal formulas can be incrementally evaluated over
streams of states. DyKnow and the stream reasoning techniques are described
and motivated in the context of a UAV traffic monitoring application.
1
Introduction
Modern autonomous systems usually have many sensors producing continuous streams
of data. As the systems become more advanced the number of sensors grow, as exemplified by the humanoid robot CB2 which has 2 cameras, 2 microphones, and 197 tactile
sensors [1]. Further communication streams are produced when such systems interact.
Some systems may also be connected to the Internet and have the opportunity to access
streams of online information such as weather reports, news about the area, and so on.
The fact that much of this information is available in the form of streams highlights
the growing need for advanced stream processing capabilities in autonomous systems,
where one can incrementally reason about the incomplete content of a set of streams
in order to draw new conclusions as quickly as possible. This is in contrast to many of
?
This work is partially supported by grants from the Swedish Foundation for Strategic Research
(SSF) Strategic Research Center MOVIII, the Swedish Research Council (VR) Linnaeus Center CADICS, and the Center for Industrial Information Technology CENIIT (06.09).
the current techniques used in formal knowledge representation and reasoning, which
assume a more or less static knowledge base of facts to be reasoned about.
Additionally, much of the required knowledge must ultimately originate in physical sensors, but whereas deliberative functionalities tend to assume symbolic and crisp
knowledge about the current state of the world, the information extracted from sensors
often consists of noisy and incomplete quantitative data on a much lower level of abstraction. Thus, there is a wide gap between the information about the world normally
acquired through sensing and the information that deliberative functionalities assume
to be available for reasoning.
Bridging this gap is a challenging problem. It requires constructing suitable representations of the information that can be extracted from the environment using sensors and other available sources, processing the information to generate information at
higher levels of abstraction, and continuously maintaining a correlation between generated representations and the environment itself. We use the term knowledge processing
middleware for a principled and systematic software framework for bridging the gap
between sensing and reasoning in a physical agent.
We believe that a stream-based approach to knowledge processing middleware is
appropriate. To demonstrate the feasibility we have developed DyKnow, a fully implemented stream-based framework providing both conceptual and practical support for
structuring a knowledge processing system as a set of streams and computations on
streams [2]. The properties of each stream is specified by a declarative policy. Streams
represent aspects of the past, current, and future state of a system and its environment.
Input can be provided by a wide range of distributed information sources on many
levels of abstraction, while output consists of streams representing objects, attributes,
relations, and events. DyKnow also explicitly supports two techniques for incremental
reasoning with streams: Chronicle recognition for detecting complex events and progression of metric temporal logic to incrementally evaluate temporal logical formulas.
DyKnow and the stream reasoning techniques are described and motivated in the
context of a UAV traffic monitoring application.
2
A Traffic Monitoring Scenario
Traffic monitoring is an important application domain for autonomous unmanned aerial
vehicles (UAVs), providing a plethora of cases demonstrating the need for stream reasoning and knowledge processing middleware. It includes surveillance tasks such as
detecting accidents and traffic violations, finding accessible routes for emergency vehicles, and collecting traffic pattern statistics.
Suppose a human operator is trying to maintain situational awareness about traffic
in an area using static and mobile sensors such as surveillance cameras together with an
unmanned helicopter. Reducing the amount of information sent to the operator also reduces her cognitive load, helping her to focus her attention on salient events. Therefore,
each sensor platform should monitor traffic situations and only report back relevant
high-level events, such as reckless overtakes and probable drunk driving.
Traffic violations, or other events to be detected, should be represented formally and
declaratively. This can be done using chronicle recognition [3], where each chronicle
defines a parameterized class of complex events as a simple temporal network [4] whose
Chronicle
Recognition
Qualitative spatial relations
Qualitative Spatial
Reasoning
Car objects
Geographic
Information
System
GIS replies
Formula states
Anchoring
Formula events
GIS queries
Temporal Logic
Progression
Vision percepts
Color camera
Image Processing
Thermal camera
Camera state
Helicopter State
Estimation
Helicopter state
Camera State
Estimation
Legend
Sensor
Process
IMU
GPS
Pan-tilt unit
Stream
Fig. 1. An overview of how the processing required for traffic surveillance could be organized.
nodes correspond to occurrences of high-level qualitative events and edges correspond
to metric temporal constraints. For example, events representing changes in qualitative
spatial relations such as beside(car1 , car2 ), close(car1 , car2 ), and on(car1 , road7 ) might
be used to detect a reckless overtake. Creating these high-level representations from
low-level sensor data, such as video streams from color and thermal cameras, involves
extensive information and knowledge processing within each sensor platform.
Fig. 1 provides an overview of how part of the incremental processing required for
the traffic surveillance task could be organized as a set of distinct DyKnow knowledge
processes. At the lowest level, a helicopter state estimation component uses data from
an inertial measurement unit (IMU) and a global positioning system (GPS) to generate a stream of position and attitude estimates. A camera state estimation component
uses this information, together with a stream of states from the pan-tilt unit on which the
cameras are mounted, to generate a stream of current camera states. The image processing component uses the camera state stream to determine where the camera is currently
pointing. Video streams from the color and thermal cameras can then be analyzed in
order to generate a stream of vision percepts representing hypotheses about moving and
stationary physical entities, including their approximate positions and velocities.
Symbolic formalisms such as chronicle recognition require a consistent assignment
of symbols, or identities, to the physical objects being reasoned about and the sensor
data received about those objects. This is a process known as anchoring [5]. Image
analysis may provide a partial solution, with vision percepts having symbolic identities
that persist over short intervals of time. However, changing visual conditions or objects
temporarily being out of view lead to problems that image analysis cannot (and should
not) handle. This is the task of the anchoring component, which uses progression over
a stream of states to evaluate potential hypotheses expressed as formulas in a metric
temporal logic. The anchoring system also assists in object classification and in the extraction of higher level attributes of an object. For example, a geographic information
system can be used to determine whether an object is currently on a road or in a crossing. Such attributes can in turn be used to derive streams of relations between objects,
including qualitative spatial relations such as beside(car1 , car2 ) and close(car1 , car2 ).
Streams of concrete events corresponding to changes in these predicates and attributes
finally provide sufficient information for the chronicle recognition system to determine
when higher-level events such as reckless overtakes occur.
3
Stream-Based Knowledge Processing Middleware
Knowledge processing for a physical agent is fundamentally incremental in nature.
Each part and functionality in the system, from sensing up to deliberation, needs to
receive relevant information about the environment with minimal delay and send processed information to interested parties as quickly as possible. Rather than using polling,
explicit requests, or similar techniques, we have therefore chosen to model and implement the required flow of data, information, and knowledge in terms of streams, while
computations are modeled as active and sustained knowledge processes ranging in complexity from simple adaptation of raw sensor data to complex reactive and deliberative
processes. This forms the basis for stream-based knowledge processing middleware,
which we believe will be useful in a broad range of applications. A concrete implemented instantiation, DyKnow, will be discussed later.
Streams lend themselves easily to a publish/subscribe architecture. Information
generated by a knowledge process is published using one or more stream generators,
each of which has a (possibly structured) label serving as a global identifier within
a knowledge processing application. Knowledge processes interested in a particular
stream of information can subscribe using the label of the associated stream generator,
which creates a new stream without the need for explicit knowledge of which process hosts the generator. Information produced by a process is immediately provided
to the stream generator, which asynchronously delivers it to all subscribers, leaving the
knowledge process free to continue its work.
In general, streams tend to be asynchronous in nature. This can often be the case
even when information is sampled and sent at regular intervals, due to irregular and
unpredictable transmission delays in a distributed system. In order to minimize delays
and avoid the need for frequent polling, stream implementations should be push-based
and notify receiving processes as soon as new information arrives.
Using an asynchronous publish / subscribe pattern of communication decouples
knowledge processes in time, space, and synchronization [6], providing a solid foundation for distributed knowledge processing applications.
For processes that do not require constant updates, such as an automated task planner that needs an initial state snapshot, stream generators also provide a query interface
to retrieve current and historic information generated by a process. Integrating such
queries into the same framework allows them to benefit from decoupling and asynchronicity and permits lower level processing to build on a continuous stream of input
before a snapshot is generated.
3.1
Streams
Intuitively, a stream serves as a communication channel between two knowledge processes, where elements are incrementally added by a source process and eventually
arrive at a destination process. Verifying whether the contents such a stream satisfies a
specific policy requires a formal model. For simplicity, we define a stream as a snapshot containing its own history up to a certain point in time, allowing us to determine
exactly which elements had arrive at any preceding time. This is essential for the ability
to validate an execution trace relative to a formal system description.
Definition 1 (Stream). A stream is a set of stream elements, where each stream element
is a tuple hta , . . .i whose first value, ta , is a time-point representing the time when the
element is available in the stream. This time-point is called the available time of a
stream element and has to be unique within a stream.
Given a stream structure, the information that has arrived at its receiving process at
a particular time-point t consists of those elements having an available time ta ≤ t.
3.2
Policies
Each stream is associated with a policy specifying a set of requirements on its contents.
Such requirements may include the fact that each value must constitute a significant
change relative to the previous value, that updates should be sent with a specific sample
frequency, or that there is a maximum permitted delay. A policy can also give advice
on how to ensure that these requirements are satisfied, for example by indicating how
to handle missing or excessively delayed values. For introspection purposes, policies
should be declaratively specified. Concrete examples are given in Section 4.
Each subscription to a stream generator includes a specific policy to be used for
the generated stream. The stream generator can use this policy to filter the output of a
knowledge process or forward it to the process itself to control its internal setup. Those
parts of the policy that are affected by transmission through a distributed system, such
as constraints on delays, can also be used by a stream proxy at the receiving process.
This separates the generation of stream content from its adaptation.
Definition 2 (Policy). A policy is a declarative specification of the desired properties
of a stream, which may include advice on how to generate the stream.
3.3
Knowledge Processes
A knowledge process operates on streams. Some processes take streams as input, some
produce streams as output, and some do both. A process that generates stream output
does so through one or more stream generators to which an arbitrary number of processes may subscribe using different policies. An abstract view of a knowledge process
is shown in Fig. 2.
Definition 3 (Knowledge process). A knowledge process is an active and sustained
process whose inputs and outputs are in the form of streams.
Four distinct process types are identified for the purpose of modeling: Primitive
processes, refinement processes, configuration processes, and mediation processes.
Knowledge Process
streams
Stream
Generator
policy
policy
stream
stream
Fig. 2. A prototypical knowledge process
Primitive Processes Primitive processes serve as interfaces to the outside world, connecting to sensors, databases, or other information sources and providing their output in
the form of streams. Such processes have no stream inputs but provide a non-empty set
of stream generators. Their complexity may range from simple adaptation of external
data into a stream-based framework to more complex tasks such as image processing.
Definition 4 (Primitive process). A primitive process is a knowledge process without
input streams that provides output through one or more stream generators.
Refinement Processes The main functionality of stream-based knowledge processing
middleware is to process streams to create more refined data, information, and knowledge. This type of processing is done by a refinement process which takes a set of
streams as input and provides one or more stream generators providing stream outputs.
For example, a refinement process could do image processing, fuse sensor data using
Kalman filters estimating positions from GPS and IMU data, or reason about qualitative
spatial relations between objects.
Definition 5 (Refinement process). A refinement process is a knowledge process that
takes one or more streams as input and provides output through one or more stream
generators.
When a refinement process is created it subscribes to its input streams. For example,
a position estimation process computing the position of a robot at 10 Hz could either
subscribe to its inputs with the same frequency or use a higher frequency in order to
filter out noise. If a middleware implementation allows a process to change the policies of its inputs during run-time, the process can dynamically tailor its subscriptions
depending on the streams it is supposed to create.
In certain cases, a process must first collect information over time before it is able
to compute an output. For example, a filter might require a number of measurements
before it is properly initialized. This introduces a processing delay that can be remedied
if the process is able to request 30 seconds of historic data, which is supported by the
DyKnow implementation.
Configuration Processes Traffic monitoring requires position and velocity estimates
for all currently monitored cars, a set that changes dynamically over time as new cars
enter an area and as cars that have not been observed for some time are discarded.
This is an instance of a recurring pattern where the same type of information must be
produced for a dynamically changing set of objects.
This could be achieved with a static process network, where a single refinement
process estimates positions for all currently visible cars. However, processes and stream
policies would have to be quite complex to support more frequent updates for a specific
car which is the current focus of attention.
As an alternative, one can use a dynamic network of processes, where each refinement process estimates positions for a single car. A configuration process provides a
fine-grained form of dynamic reconfiguration by instantiating and removing knowledge
processes and streams as indicated by its input.
Definition 6 (Configuration process). A configuration process is a knowledge process
that takes streams as inputs, has no stream generators, and creates and removes knowledge processes and streams.
For traffic monitoring, the input to the configuration process would be a single
stream where each element contains the set of currently monitored cars. Whenever a
new car is detected, the new (complete) set of cars is sent to the configuration process,
which may create new processes. Similarly, when a car is removed, associated knowledge processes may be removed.
Mediation Processes Finally, a mediation process allows a different type of dynamic
reconfiguration by aggregating or selecting information from a static or dynamic set of
existing streams.
Aggregation is particularly useful in the fine-grained processing networks described
above: If there is one position estimation process for each car, a mediation process
can aggregate the outputs of these processes into a single stream to be used by those
processes that do want information about all cars at once. In contrast to refinement
processes, a mediation process can change its inputs over time to track the currently
monitored set of cars as indicated by a stream of labels or label sets.
Selection forwards information from a particular stream in a set of potential input
streams. For example, a mediation process can provide position information about the
car that is the current focus of attention, automatically switching between position input
streams as the focus of attention changes. Other processes interested in the current focus
can then subscribe to a single semantically meaningful stream.
Definition 7 (Mediation process). A mediation process is a knowledge process that
changes its input streams dynamically and mediates the content on the varying input
streams to a fixed number of stream generators.
Stream Generators A knowledge process can have multiple outputs. For example, a
single process may generate separate position and velocity estimates for a particular
car. Each raw output is sent to a single stream generator, which can create an arbitrary
number of output streams adapted to specific policies. For example, one process may
wish to receive position estimates every 100 ms, while another may require updates
only when the estimate has changed by at least 10 meters.
Definition 8 (Stream generator). A stream generator is a part of a knowledge process
that generates streams according to policies from output generated by the knowledge
process.
Using stream generators separates the generic task of adapting streams to policies
from the specific tasks performed by each knowledge process. Should the generic policies supported by a particular middleware implementation be insufficient, a refinement
process can still subscribe to the unmodified output of a process and provide arbitrarily
complex processing of this stream.
Note that a stream generator is not necessarily a passive filter. For example, the
generator may provide information about its current output policies to the knowledge
process, allowing the process to reconfigure itself depending on parameters such as the
current sample rates for all output streams.
4
DyKnow
DyKnow is a concrete instantiation of the generic stream-based middleware framework
defined in the previous section. DyKnow provides both a conceptual framework for
modeling knowledge processing and an implementation infrastructure for knowledge
processing applications. The formal framework can be seen as a specification of what is
expected of the implementation infrastructure. It can also be used by an agent to reason
about its own processing. A detailed formal description of DyKnow is available in [2].
DyKnow views the world as consisting of objects and features, where features may
for example represent attributes of objects. The general stream concept is specialized to
define fluent streams representing an approximation of the value of a feature over time.
Two concrete classes of knowledge processes are introduced: Sources, corresponding to
primitive processes, and computational units, corresponding to refinement processes. A
computational unit is parameterized with one or more fluent streams. Each source and
computational unit provides a fluent stream generator creating fluent streams from the
output of the corresponding knowledge process according to fluent stream policies. The
declarative language KPL is used for specifying knowledge processing applications.
DyKnow is implemented as a CORBA middleware service. It uses the CORBA
event notification service [7] to implement streams and to decouple knowledge processes from clients subscribing to their output. See [2] for the details.
A knowledge processing domain defines the objects, values, and time-points used in a
knowledge processing application. From them the possible fluent streams, sources, and
computational units are defined. The semantics of a knowledge processing specification
is defined on an interpretation of its symbols to a knowledge processing domain.
Definition 9 (Knowledge processing domain). A knowledge processing domain is a
tuple hO, T, Vi, where O is a set of objects, T is a set of time-points, and V is a set of
values.
4.1
Fluent Streams
Due to inherent limitations in sensing and processing, an agent cannot always expect
access to the actual value of a feature over time but will have to use approximations.
Such approximations are represented as fluent streams, a specialization of the previously introduced stream structure where elements are samples. Each sample represents
an observation or estimation of the value of a feature at a specific point in time called
the valid time. Like any stream element, a sample is also tagged with its available time,
the time when it is ready to be processed by the receiving process after having been
transmitted through a potentially distributed system.
The available time is essential when determining whether a system behaves according to specification, which depends on the information actually available as opposed to
information that may have been generated but has not yet arrived. Having a specific representation of the available time also allows a process to send multiple estimates for a
single valid time, for example by quickly providing a rough estimate and then running a
more time-consuming algorithm to provide a higher quality estimate. Finally, it allows
us to formally model delays in the availability of a value and permits an application
to use this information introspectively to determine whether to reconfigure the current
processing network to achieve better performance.
Definition 10 (Sample). A sample in a domain D = hO, T, Vi is either the constant
no sample or a stream element hta , tv , vi, where ta ∈ T is its available time, tv ∈ T is
its valid time, and v ∈ V is its value. The set of all possible samples in a domain D is
denoted by S D .
Example 1. Assume a picture p is taken by a camera source at time-point 471, and that
the picture is sent through a fluent stream to an image processing process where it is
received at time 474. This is represented as the sample h474, 471, pi.
Assume image processing extracts a set b of blobs that may correspond to vehicles.
Processing finishes at time 479 and the set of blobs is sent to two distinct recipients, one
receiving it at time 482 and one receiving it at time 499. This information still pertains
to the state of the environment at time 471, and therefore the valid time remains the
same. This is represented as the two samples h482, 471, bi and h499, 471, bi belonging
to distinct fluent streams.
The constant no sample will be used to indicate that a fluent stream contains no
information at a particular point in time, and can never be part of a fluent stream.
Definition 11 (Fluent stream). A fluent stream in a domain D is a stream where each
stream element is a sample from S D \ {no sample}.
4.2
Sources
Primitive processes can be used to provide interfaces to external data producers or sensors, such as the GPS, IMU, and cameras on a UAV. A primitive process is formally
modeled as a source, a function from time-points to samples representing the output
of the primitive process at any point in time. If the function returns no sample, the
primitive process does not produce a sample at the given time.
Definition 12 (Source). Let D = hO, T, Vi be a domain. A source is a function T 7→ S D
mapping time-points to samples.
4.3
Computational Units
Refinement processes are used to perform computations on streams, ranging from simple addition of integer values to Kalman filters, image processing systems, and even
more complex functions. In a wide variety of cases, only a single output stream is required (though this stream may consist of complex values). It is also usually sufficient
to have access to the current internal state of the process together with the most recent
sample of each input stream to generate a new output sample. A process of this type
can be modeled as a computational unit.
Definition 13 (Computational unit). Let D = hO, T, Vi be a domain. A computational
unit with arity n > 0, taking n inputs, is associated with a partial function T ×S nD ×V 7→
S D × V of arity n + 2 mapping a time-point, n input samples, and a value representing
the previous internal state to an output sample and a new internal state.
The input streams to a computational unit do not necessarily contain values with
synchronized valid times or available times. For example, two streams could be sampled
with periods of 100 ms and 60 ms while a third could send samples asynchronously. In
order to give the computational unit the maximum amount of information, we choose
to apply its associated function whenever a new sample becomes available in any of its
input streams, and to use the most recent sample in each stream. Should the unit prefer
to wait for additional information, it can store samples in its internal state and return
no sample to indicate that no new output sample should be produced at this stage.
4.4
Fluent Stream Policies
A policy specifies the desired properties of a fluent stream and is defined as a set of
constraints on the fluent stream. There are five types of constraints: Approximation,
change, delay, duration, and order constraints.
A change constraint specifies what must change between two consecutive samples.
Given two consecutive samples, any update indicates that some part of the new sample
must be different, while any change indicates that the value or valid time must be
different, and sample every t indicates that the difference in valid time must equal the
sample period t.
A delay constraint specifies a maximum acceptable delay, defined as the difference
between the valid time and the available time of a sample. Note that delays may be intentionally introduced in order to satisfy other constraints such as ordering constraints.
A duration constraint restricts the allowed valid times of samples in a fluent stream.
An order constraint restricts the relation between the valid times of two consecutive
samples. The constraint any order does not constrain valid times, while monotone
order ensures valid times are non-decreasing and strict order ensures valid times are
strictly increasing. A sample change constraint implies a strict order constraint.
An approximation constraint restricts how a fluent stream may be extended with
new samples in order to satisfy its policy. If the output of a knowledge process does
not contain the appropriate samples to satisfy a policy, a fluent stream generator could
approximate missing samples based on available samples. The constraint no approximation permits no approximated samples to be added, while use most recent permits
the addition of samples having the most recently available value.
For the stream generator to be able to determine at what valid time a sample must
be produced, the use most recent constraint can only be used in conjunction with a
complete duration constraint from t f to tt and a change constraint sample every t s . For
the stream generator to determine at what available time it should stop waiting for a
sample and produce an approximation, this constraint must be used in conjunction with
a delay constraint max delay td .
4.5
KPL
DyKnow uses the knowledge processing language KPL to declaratively specify knowledge processing applications, static networks of primitive processes (sources) and refinement processes (computational units) connected by streams. Mediation and configuration processes modify the setup of a knowledge processing application over time and
are left for future work. For details of KPL including the formal semantics see [2].
Definition 14 (KPL Grammar).
KPL SPEC F ( SOURCE DECL | COMP UNIT DECL
| FSTREAM GEN DECL | FSTREAM DECL )+
SOURCE DECL F source SORT SYM SOURCE SYM
COMP UNIT DECL F compunit SORT SYM
COMP UNIT SYM 0 (0 SORT SYM ( 0 ,0 SORT SYM )∗ 0 )0
FSTREAM GEN DECL F strmgen LABEL 0 =0
( SOURCE SYM
| COMP UNIT SYM 0 (0 FSTREAM TERM ( 0 ,0 FSTREAM TERM )∗ 0 )0 )
FSTREAM DECL F stream STREAM SYM 0 =0 FSTREAM TERM
LABEL F FEATURE SYM ( 0 [0 OBJECT SYM ( 0 ,0 OBJECT SYM )∗ 0 ]0 )?
FSTREAM TERM F LABEL ( with FSTREAM POLICY )?
FSTREAM POLICY F STREAM CONSTR ( 0 ,0 STREAM CONSTR )∗
STREAM CONSTR F APPRX CONSTR | CHANGE CONSTR | DELAY CONSTR
| DURATION CONSTR | ORDER CONSTR
APPRX CONSTR F no approximation | use most recent
CHANGE CONSTR F any update | any change | sample every TIME SYM
DELAY CONSTR F max delay ( TIME SYM | oo )
DURATION CONSTR F from TIME SYM | ( from TIME SYM )? to ( TIME SYM | oo )
ORDER CONSTR F any order | monotone order | strict order
5
Chronicle Recognition
Many applications of autonomous vehicles involve surveillance and monitoring where it
is crucial to recognize events related to objects in the environment. For example, a UAV
monitoring traffic must be able to recognize events such as a car overtaking another, a
car stopping at an intersection, and a car parking next to a certain building.
We can classify events as being either primitive or complex. A primitive event is
either directly observed or grounded in changes in feature values, while a complex
event is defined as a spatio-temporal pattern of other events. The purpose of an event
recognition system is to detect complex events from a set of observed or previously
detected events. In the traffic monitoring domain, for example, the complex event of car
A overtaking car B can be defined in terms of a chain of events where a car A is first
behind, then left of, and finally in front of car B together with temporal constraints on
the events such as the total overtake should take less than 120 seconds.
One formalism for expressing complex events is the chronicle formalism which
represents and detects complex events described in terms of temporally constrained
events [3]. The chronicle recognition algorithm takes a stream of time-stamped event
occurrences and finds all matching chronicle instances as soon as possible. This makes
it a good example of a stream reasoning technique. To do this, the algorithm keeps
track of all possible developments in an efficient manner by compiling chronicles into
simple temporal constraint networks [4]. To detect chronicle instances, the algorithm
keeps track of all partially instantiated chronicle models. To begin with each chronicle
model is associated with a completely uninstantiated instance. Each time a new event
is received it is checked against all the partial instances to see if it matches any previously unmatched event. If that is the case, then a copy of the instance is created and
the new event is integrated into the temporal constraint network by instantiating the appropriate variables and propagating all constraints [3]. This propagation can be done in
polynomial time since the temporal constraint network is simple. It is necessary to keep
the original partial chronicle instance to match a chronicle model against all subsets of
event occurrences. If all the events have been matched then a complete instance has been
found. Recognized instances of a chronicle can be used as events in another chronicle.
The chronicle recognition algorithm is complete as long as the observed event stream
is complete, i.e. any change of a value of an attribute is captured by an event.
Time is considered a linearly ordered discrete set of instants, whose resolution is
sufficient to represent the changes in the environment. Time is represented by timepoints and all the interval constraints permitted by the restricted interval algebra [8] are
allowed. This means that it is possible to represent relations such as before, after, equal,
and metric distances between time-points but not their disjunctions.
We have used chronicle recognition in the traffic monitoring application to detect
traffic patterns [9].
6
Progression of Metric Temporal Logic
First order logic is a powerful technique for expressing complex relationships between
objects. Metric temporal logics extends first order logics with temporal operators that
allows metric temporal relationships to be expressed. For example, our temporal logic,
which is a fragment of the Temporal Action Logic (TAL) [10], supports expressions
which state that a formula F should hold within 30 seconds and that a formula F 0 should
hold in every state between 10 and 20 seconds from now. This fragment is similar to
the well known Metric Temporal Logic [11]. Informally, ^[τ1 ,τ2 ] φ (“eventually”) holds
at τ iff φ holds at some τ0 ∈ [τ + τ1 , τ + τ2 ], while [τ1 ,τ2 ] φ (“always”) holds at τ iff φ
holds at all τ0 ∈ [τ + τ1 , τ + τ2 ]. Finally, φ U[τ1 ,τ2 ] ψ (“until”) holds at τ iff ψ holds at
some τ0 ∈ [τ + τ1 , τ + τ2 ] such that φ holds in all states in (τ, τ0 ).
The semantics of these formulas are defined over infinite state sequences. To make
metric temporal logic suitable for stream reasoning, the formulas are incrementally
average time to progress a state
140
apeai p true
apeai p (false*1,true*40)
apeai p (false*1,true*10)
apeai p (false*10,true*10)
120
time (milli seconds)
100
80
60
40
20
0
0
500
1000
1500
2000
2500
3000
3500
formulas
Fig. 3. Testing: Always Not p Implies Eventually Always p (average progression time).
evaluated by DyKnow using progression over a timed state stream. The result of progressing a formula through the first state in a stream is a new formula that holds in the
remainder of the state stream iff the original formula holds in the complete state stream.
If progression returns true (false), the entire formula must be true (false), regardless of
future states. See Heintz [2] for formal details.
DyKnow also provides support for generating streams of states synchronizing distributed streams. Using their associated policies it is possible to determine when the
best possible state at each time-point can be extracted.
Even though the size of a progressed formula may grow exponentially in the worst
case, many common formulas do not. One example is the formula ¬p → ^[0,1000] [0,999] p,
corresponding to the fact that if p is false, then within 1000 ms, there must begin a period lasting at least 1000 ms where p is true. To estimate the cost of evaluating this
formula, it was progressed through several different state streams corresponding to the
best case, the worst case, and two intermediate cases. A new state in the stream was
generated every 100 ms, which means that all formulas must be progressed within this
time limit or the progression will fall behind. The results in Fig. 3 shows that 100 ms
is sufficient for the progression of between 1500 and 3000 formulas of this form on the
computer on-board our UAV, depending on the state stream.
We have used this expressive metric temporal logic to monitor the execution of
complex plans in a logistics domain [12] and to express conditions for when to hypothesize the existence and classification of observed objects in an anchoring module [2]. For example in execution monitoring, suppose that a UAV supports a maximum continuous power usage of M, but can exceed this by a factor of f for up to
τ units of time, if this is followed by normal power usage for a period of length at
least τ0 . The following formula can be used to detect violations of this specification:
∀uav.(power(uav) > M → power < f · M U[0,τ] [0,τ0 ] power(uav) ≤ M)
7
Related Work
The conceptual stream reasoning architecture proposed by Della Valle et al [13] consists of four stages: Select, Abstract, Reason, and Decide. The Select component uses
filtering and sampling to select a subset of the available streams. These streams are then
processed by the Abstract component to turn data into richer information by converting the content to RDF streams. The Reason component takes these RDF streams and
reasons about their content. Finally, the Decide component evaluates the output and
determines if the result is good enough or if some of the previous stages have to be
adapted and further data processed.
Compared to this framework, DyKnow provides support for all four stages to a varying degree without restricting itself to serial processing of the four steps. The policies
and the computational units provide tools for selection and abstraction, with particular
support from the anchoring module to associated symbols to sensor data. The chronicle
recognition component and the formula progression engine are two particular stream
reasoning techniques that can be applied to streams.
In general, stream reasoning is related to many areas, since the use of streams is
common and have many different uses. Some of the most closely related areas are
data stream management systems [14–16], publish/subscribe middleware [6, 17], eventbased systems [18–21], complex event processing [22, 23], and event stream processing
[24]. Even though most of these systems provide some contributions to stream reasoning few of them provide explicit support for lifting the abstraction level and doing general reasoning on the streams. The approaches that come the closest are complex event
processing, but they are limited to events and do not reason about objects or situations.
8
Conclusions
We have presented DyKnow, a stream-based knowledge processing middleware framework, and shown how it can be used for stream reasoning. Knowledge processing middleware is a principled and systematic software framework for bridging the gap between
sensing and reasoning in a physical agent. Since knowledge processing is fundamentally incremental in nature it is modeled as a set of active and sustained knowledge
processes connected by streams where each stream is specified by a declarative policy.
DyKnow is a concrete and implemented instantiation of such middleware, providing
support for stream reasoning at several levels. First, the formal KPL language allows the
specification of streams connecting knowledge processes and the required properties
of such streams. Second, chronicle recognition incrementally detects complex events
from streams of more primitive events. Third, complex metric temporal formulas can
be incrementally evaluated over streams of states using progression.
Since DyKnow is a general framework providing both conceptual and implementation support for stream processing it is easy to add new functionality and further
improve its already extensive support for stream reasoning.
References
1. Minato, T., Yoshikawa, Y., Noda, T., Ikemoto, S., Ishiguro, H., Asada, M.: Cb2: A child robot
with biomimetic body for cognitive developmental robotics. In: Proceedings of IEEE/RAS
International Conference on Humanoid Robotics. (2007)
2. Heintz, F.: DyKnow: A Stream-Based Knowledge Processing Middleware Framework. PhD
thesis, Linköpings universitet (2009)
3. Ghallab, M.: On chronicles: Representation, on-line recognition and learning. In: Proceedings of KR. (1996) 597–607
4. Dechter, R., Meiri, I., Pearl, J.: Temporal constraint networks. AIJ 49 (1991)
5. Coradeschi, S., Saffiotti, A.: An introduction to the anchoring problem. Robotics and Autonomous Systems 43(2-3) (2003) 85–96
6. Eugster, P.T., Felber, P.A., Guerraoui, R., Kermarrec, A.M.: The many faces of publish/subscribe. ACM Comput. Surv. 35(2) (2003) 114–131
7. Gore, P., Schmidt, D.C., Gill, C., Pyarali, I.: The design and performance of a real-time
notification service. In: Proc. of Real-time Technology and Application Symposium. (2004)
8. Nebel, B., Burckert, H.J.: Reasoning about temporal relations: A maximumal tractable subclass of allen’s interval algebra. Journal of ACM 42(1) (1995) 43–66
9. Heintz, F., Rudol, P., Doherty, P.: From images to traffic behavior – a UAV tracking and
monitoring application. In: Proceedings of Fusion’07. (2007)
10. Doherty, P., Kvarnström, J.: Temporal action logics. In Lifschitz, V., van Harmelen, F.,
Porter, F., eds.: The Handbook of Knowledge Representation. Elsevier (2007)
11. Koymans, R.: Specifying real-time properties with metric temporal logic. Real-Time Systems 2(4) (1990) 255–299
12. Doherty, P., Kvarnström, J., Heintz, F.: A temporal logic-based planning and execution monitoring framework for unmanned aircraft systems. Journal of Autonomous Agents and MultiAgent Systems (2009)
13. Valle, E.D., Ceri, S., Barbieri, D., Braga, D., Campi, A.: A First step towards Stream Reasoning. In: Proceedings of the Future Internet Symposium. (2008)
14. Abadi, D., Carney, D., Cetintemel, U., Cherniack, M., Convey, C., Lee, S., Stonebraker, M.,
Tatbul, N., Zdonik, S.: Aurora: A new model and architecture for data stream management.
VLDB Journal (August 2003)
15. Babcock, B., Babu, S., Datar, M., Motwani, R., Widom, J.: Models and issues in data stream
systems. In: Proceedings of PODS’02. (2002)
16. Motwani, R., Widom, J., Arasu, A., Babcock, B., Babu, S., Datar, M., Manku, G., Olston,
C., Rosenstein, J., Varma, R.: Query processing, resource management, and approximation
in a data stream management system. In: Proceedings of CIDR’03. (2003)
17. OMG: The data-distribution service specification v 1.2 (jan 2007)
18. Carzaniga, A., Rosenblum, D.R., Wolf, A.L.: Challenges for distributed event services: Scalability vs. expressiveness. In: Engineering Distributed Objects. (1999)
19. Pietzuch, P.: Hermes: A Scalable Event-Based Middleware. PhD thesis, University of Cambridge (2004)
20. Carzaniga, A., Rosenblum, D.S., Wolf, A.L.: Design and evaluation of a wide-area event
notification service. ACM Transactions on Computer Systems 19(3) (2001) 332–383
21. Cugola, G., Nitto, E.D., Fuggetta, A.: The jedi event-based infrastructure and its application
to the development of the opss wfms. IEEE Trans. Softw. Eng. 27(9) (2001) 827–850
22. Luckham, D.C.: The Power of Events: An Introduction to Complex Event Processing in
Distributed Enterprise Systems. Addison-Wesley, Boston, MA, USA (2002)
23. Gyllstrom, D., Wu, E., Chae, H.J., Diao, Y., Stahlberg, P., Anderson, G.: Sase: Complex
event processing over streams. In: Proceedings of CIDR’07. (2007)
24. Demers, A., Gehrke, J., Biswanath, P., Riedewald, M., Sharma, V., White, W.: Cayuga: A
general purpose event monitoring system. In: Proceedings of CIDR’07. (2007)
Download