SlideShare a Scribd company logo
Stream Processing
Stream Processing
Chukri Soueidi
Yliès Falcone
Université Grenoble-Alpes
France
Monitoring
Multiple Executions
Process
with
across
Business
Compliance
Monitoring
Multiple Executions
Process
with
across
Business
Compliance
Université du Québec à Chicoutimi
Canada
Sylvain Hallé
C. Soueidi, Y. Falcone, S. Hallé
A school admission process
a. Assign
Officer
b. Review
Application
c. Request
Documents
d. Schedule
Interview
f. Evaluate
Interview
e. Conduct
Interview
g. Accep-
tance Letter
h. Rejection
Letter
Admission
Process Ends
Application
Submitted
C. Soueidi, Y. Falcone, S. Hallé
A school admission process
a
b
c
d
f g
e h
C. Soueidi, Y. Falcone, S. Hallé
A school admission process
a
b
c
d
f g
e h
Executions of this process are called cases
or instances
C. Soueidi, Y. Falcone, S. Hallé
A school admission process
a
b
c
d
f g
e h
Executions of this process are called cases
or instances
a
b d
f g
e
c
h
C. Soueidi, Y. Falcone, S. Hallé
A school admission process
a
b
c
d
f g
e h
Executions of this process are called cases
or instances
,
C. Soueidi, Y. Falcone, S. Hallé
A school admission process
a
b
c
d
f g
e h
Executions of this process are called cases
or instances
, , , ...
,
C. Soueidi, Y. Falcone, S. Hallé
Process log
These executions can be recorded in the form of
a log
C. Soueidi, Y. Falcone, S. Hallé
Process log
These executions can be recorded in the form of
a log
a g
f
b d e
C. Soueidi, Y. Falcone, S. Hallé
Process log
These executions can be recorded in the form of
a log
a g
f
b d e
a f
b d e
c h
C. Soueidi, Y. Falcone, S. Hallé
Process log
These executions can be recorded in the form of
a log
a g
f
b d e
a f
b d e
c h
a g
f
b d e
c
C. Soueidi, Y. Falcone, S. Hallé
Process log
These executions can be recorded in the form of
a log
a g
f
b d e
a f
b d e
c h
a g
f
b d e
c
a g
f
b d e
C. Soueidi, Y. Falcone, S. Hallé
Process log
Formally, let...
C. Soueidi, Y. Falcone, S. Hallé
Process log
Formally, let...
Σ = {σ1, ..., σn} set of events
σ ∈ Σ* is a trace
a f b e
( (
d
C. Soueidi, Y. Falcone, S. Hallé
Process log
Formally, let...
Σ = {σ1, ..., σn} set of events
σ ∈ Σ* is a trace
a f b e
( (
d
C = {c1, ..., cm} set of case
identifiers ( (
C. Soueidi, Y. Falcone, S. Hallé
Process log
Formally, let...
Σ = {σ1, ..., σn} set of events
σ ∈ Σ* is a trace
a f b e
( (
d
C = {c1, ..., cm} set of case
identifiers ( (
A log is a function λ : C → Σ*, mapping a trace to
each case identifier.
a g
f
b d e
a f
b d e
c h
↦
↦
a g
f
b d e
c
a g
f
b d e
↦
↦
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
Many questions can be asked about this log:
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
Many questions can be asked about this log:
Does the process
start with ?
a
Does come
after ?
a
b
Does the case end
after fewer than n
events?
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
Many questions can be asked about this log:
Does the process
start with ?
a
Does come
after ?
a
b
Does the case end
after fewer than n
events?
What is the number
of events in a trace?
What are the events
in the trace?
What is the average
delay between two
events?
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
Many questions can be asked about this log:
Does the process
start with ?
a
Does come
after ?
a
b
Does the case end
after fewer than n
events?
What is the number
of events in a trace?
What are the events
in the trace?
What is the average
delay between two
events?
"Constraints"
answer by yes or no
"Queries"
answer by something else
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
Given a trace σ ∈ Σ*, a query is a function
q : Σ* → D
for some arbitrary image D. A constraint is the
particular case where D = {⊤,⊥}.
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
Given a trace σ ∈ Σ*, a query is a function
q : Σ* → D
for some arbitrary image D. A constraint is the
particular case where D = {⊤,⊥}.
A trace σ is compliant with respect to
a constraint q iff q(σ) = ⊤.
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
Given a trace σ ∈ Σ*, a query is a function
q : Σ* → D
for some arbitrary image D. A constraint is the
particular case where D = {⊤,⊥}.
A log λ is compliant with respect to a constraint
q iff q(λ(c)) = ⊤ for every case identifier c ∈ C.
A trace σ is compliant with respect to
a constraint q iff q(σ) = ⊤.
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
A query (and compliance) is concerned with each
execution taken in isolation. Generalize queries to
calculations involving multiple executions:
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
A query (and compliance) is concerned with each
execution taken in isolation. Generalize queries to
calculations involving multiple executions:
Are there at least
50% of cases
ending in ?
g
Is the average case
duration below k?
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
A query (and compliance) is concerned with each
execution taken in isolation. Generalize queries to
calculations involving multiple executions:
Are there at least
50% of cases
ending in ?
g
Is the average case
duration below k?
What is the maximum
number of concurrent
active cases?
What event occurs in
the fewest cases?
C. Soueidi, Y. Falcone, S. Hallé
Querying the log
A query (and compliance) is concerned with each
execution taken in isolation. Generalize queries to
calculations involving multiple executions:
Are there at least
50% of cases
ending in ?
g
Is the average case
duration below k?
What is the maximum
number of concurrent
active cases?
What event occurs in
the fewest cases?
"Hyper-Constraints"
answer by yes or no
"Hyper-Queries"
answer by something else
C. Soueidi, Y. Falcone, S. Hallé
Hyper-querying the log
Given a log λ ∈ L, a hyper-query is a function
q : L → D
for some arbitrary image D. A hyper-constraint is
the particular case where D = {⊤,⊥}.
C. Soueidi, Y. Falcone, S. Hallé
Evaluating hyper-queries
Two goals:
C. Soueidi, Y. Falcone, S. Hallé
Evaluating hyper-queries
Two goals:
A
provide formal means of defining
expressive (hyper) queries
stateful, aggregations, unconventional types
C. Soueidi, Y. Falcone, S. Hallé
Evaluating hyper-queries
Two goals:
A
provide formal means of defining
expressive (hyper) queries
stateful, aggregations, unconventional types
evaluate these queries incrementally
as the log is produced
P
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 1
The complete log is available at once; the
hyperquery is evaluated on the log
a g
f
b d e
a f
b d e
c h
a g
f
b d e
c
a g
f
b d e
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 2
One complete case is processed at a time
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 2
One complete case is processed at a time
a g
f
b d e
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 2
One complete case is processed at a time
a g
f
b d e
a f
b d e
c h
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 2
One complete case is processed at a time
a g
f
b d e
a f
b d e
c h
a g
f
b d e
c
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 2
One complete case is processed at a time
a g
f
b d e
a f
b d e
c h
a g
f
b d e
c
a g
f
b d e
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 3
One event from each case is processed at a time
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 3
One event from each case is processed at a time
a
a
a
a
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 3
One event from each case is processed at a time
a
a
a
a
b
b
b
b
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 3
One event from each case is processed at a time
a
a
a
a
b
b
b
b
d
c
c
d
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 3
One event from each case is processed at a time
a
a
a
a
b
b
b
b
d
c
c
d
. . .
. . .
. . .
. . .
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 4
Events from each case are arbitrarily
interleaved
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 4
Events from each case are arbitrarily
interleaved
a
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 4
Events from each case are arbitrarily
interleaved
a
a
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 4
Events from each case are arbitrarily
interleaved
a
a
b
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 4
Events from each case are arbitrarily
interleaved
a
a
b
a
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 4
Events from each case are arbitrarily
interleaved
a
a
b
a
d
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 4
Events from each case are arbitrarily
interleaved
a
a
b
a
d
a
C. Soueidi, Y. Falcone, S. Hallé
Incremental evaluation
Case 4
Events from each case are arbitrarily
interleaved
a
a
b
a
d
a
b
C. Soueidi, Y. Falcone, S. Hallé
State of the art
C. Soueidi, Y. Falcone, S. Hallé
State of the art
Constraints Queries
Classical
Hyper
C. Soueidi, Y. Falcone, S. Hallé
State of the art
Constraints Queries
Classical
Hyper
Temporal Logic(s)
Petri nets
Finite-state machines
A
P
✓
✓
✓
C. Soueidi, Y. Falcone, S. Hallé
State of the art
Constraints Queries
Classical
Hyper
Temporal Logic(s)
Petri nets
Finite-state machines
A
P
✓
✓
✓
Stream equations
Stream pipelines
A
P
✓
✓
C. Soueidi, Y. Falcone, S. Hallé
State of the art
Constraints Queries
Classical
Hyper
Temporal Logic(s)
Petri nets
Finite-state machines
A
P
✓
✓
✓
Stream equations
Stream pipelines
A
P
✓
✓
Hyper-LTL
HyperLDLf
Event calculus
A
P
±
?
✓
C. Soueidi, Y. Falcone, S. Hallé
State of the art
Constraints Queries
Classical
Hyper
Temporal Logic(s)
Petri nets
Finite-state machines
A
P
✓
✓
✓
Stream equations
Stream pipelines
A
P
✓
✓
Hyper-LTL
HyperLDLf
Event calculus
A
P
±
?
✓
SQL (incremental)
APQL
A
P
✓
?
C. Soueidi, Y. Falcone, S. Hallé
Log updates
C. Soueidi, Y. Falcone, S. Hallé
Log updates
Log update: a special type of log λ with a single
event for a single case
L ⊆ L is the set of updates
^
{ }
a
↦
^
C. Soueidi, Y. Falcone, S. Hallé
Log updates
Log update: a special type of log λ with a single
event for a single case
L ⊆ L is the set of updates
^
{ }
a
↦
^
Update
operation:
an operator ∘ : L × L → L that appends
an event to an existing log
^
C. Soueidi, Y. Falcone, S. Hallé
C. Soueidi, Y. Falcone, S. Hallé
C. Soueidi, Y. Falcone, S. Hallé
Log updates
Log updates
Log updates
Log update: a special type of log λ with a single
event for a single case
L ⊆ L is the set of updates
^
{ }
a
↦
^
Log update: a special type of log λ with a single
event for a single case
L ⊆ L is the set of updates
^
{ }
a
↦
^
Log update: a special type of log λ with a single
event for a single case
L ⊆ L is the set of updates
^
{ }
a
↦
^
Update
operation:
an operator ∘ : L × L → L that appends
an event to an existing log
^
Update
operation:
an operator ∘ : L × L → L that appends
an event to an existing log
^
Update
operation:
an operator ∘ : L × L → L that appends
an event to an existing log
^
{ a
↦
a b
↦ }
∘ { }
b
↦ = { a
↦
a b
↦ }
b
λ ∘ λ
^
=
C. Soueidi, Y. Falcone, S. Hallé
Log updates
A log is progressvely built through a sequence
(i.e. a stream) of log updates from an empty log
C. Soueidi, Y. Falcone, S. Hallé
Log updates
A log is progressvely built through a sequence
(i.e. a stream) of log updates from an empty log
∅
C. Soueidi, Y. Falcone, S. Hallé
Log updates
A log is progressvely built through a sequence
(i.e. a stream) of log updates from an empty log
∅ { }
a
↦
∘
C. Soueidi, Y. Falcone, S. Hallé
Log updates
A log is progressvely built through a sequence
(i.e. a stream) of log updates from an empty log
∅ { }
a
↦
∘ ∘ { }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Log updates
A log is progressvely built through a sequence
(i.e. a stream) of log updates from an empty log
∅ { }
a
↦
∘ ∘ { }
a
↦ ∘ { }
b
↦ ∘ ...
C. Soueidi, Y. Falcone, S. Hallé
Problem
Problem Given a hyperquery q : L → D, define a
processor πq : L* → D* such that
πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn)
Hyper-processors
πq
C. Soueidi, Y. Falcone, S. Hallé
Problem
Problem Given a hyperquery q : L → D, define a
processor πq : L* → D* such that
πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn)
Hyper-processors
q( )
{ }
a
↦ { }
a
↦
πq
C. Soueidi, Y. Falcone, S. Hallé
Problem
Problem Given a hyperquery q : L → D, define a
processor πq : L* → D* such that
πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn)
Hyper-processors
πq
C. Soueidi, Y. Falcone, S. Hallé
Problem
Problem Given a hyperquery q : L → D, define a
processor πq : L* → D* such that
πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn)
Hyper-processors
πq
πq
{ }
a
↦
}
a
↦
{ a
↦
q(
C. Soueidi, Y. Falcone, S. Hallé
Problem
Problem Given a hyperquery q : L → D, define a
processor πq : L* → D* such that
πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn)
Hyper-processors
πq
C. Soueidi, Y. Falcone, S. Hallé
Problem
Problem Given a hyperquery q : L → D, define a
processor πq : L* → D* such that
πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn)
Hyper-processors
πq
πq
}
a
↦
{ a
↦
q(
)
{ }
b
↦ b
C. Soueidi, Y. Falcone, S. Hallé
Problem
Problem Given a hyperquery q : L → D, define a
processor πq : L* → D* such that
πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn)
Hyper-processors
πq
πq
}
a
↦
{ a
↦
q(
)
{ }
b
↦ b
In other words, πq incrementally evaluates q on
each update
Avoid re-evaluating q from scratch every time!
C. Soueidi, Y. Falcone, S. Hallé
Solution
Solution Follow a compositional approach
Hyper-processors
C. Soueidi, Y. Falcone, S. Hallé
Solution
Solution Follow a compositional approach
Hyper-processors
elementary (incremental)
hyperquery processors
C. Soueidi, Y. Falcone, S. Hallé
Solution
Solution Follow a compositional approach
Hyper-processors
elementary (incremental)
hyperquery processors
allow composition to express
complex hyperqueries
C. Soueidi, Y. Falcone, S. Hallé
Solution
Solution Follow a compositional approach
Hyper-processors
elementary (incremental)
hyperquery processors
allow composition to express
complex hyperqueries
C. Soueidi, Y. Falcone, S. Hallé
Solution
Solution Follow a compositional approach
Hyper-processors
elementary (incremental)
hyperquery processors
allow composition to express
complex hyperqueries
C. Soueidi, Y. Falcone, S. Hallé
Solution
Solution Follow a compositional approach
Hyper-processors
Solution
Solution Follow a compositional approach
Operators on log updates
Log combinations
Qualified conditions
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
XES Source
Reads a log file in XES format, and outputs it as an
interleaved stream of log updates.
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
XES Source
Reads a log file in XES format, and outputs it as an
interleaved stream of log updates.
a g
f
b d e
a f
b d e
c h
↦
↦
a g
f
b d e
c
a g
f
b d e
↦
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
XES Source
Reads a log file in XES format, and outputs it as an
interleaved stream of log updates.
1
2
3
4
5
a g
f
b d e
a f
b d e
c h
↦
↦
a g
f
b d e
c
a g
f
b d e
↦
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
XES Source
Reads a log file in XES format, and outputs it as an
interleaved stream of log updates.
1
2
3
4
5
a g
f
b d e
a f
b d e
c h
↦
↦
a g
f
b d e
c
a g
f
b d e
↦
↦
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
XES Source
Reads a log file in XES format, and outputs it as an
interleaved stream of log updates.
1
2
3
4
5
a g
f
b d e
a f
b d e
c h
↦
↦
a g
f
b d e
c
a g
f
b d e
↦
↦
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
XES Source
Reads a log file in XES format, and outputs it as an
interleaved stream of log updates.
1
2
3
4
5
a g
f
b d e
a f
b d e
c h
↦
↦
a g
f
b d e
c
a g
f
b d e
↦
↦
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
XES Source
Reads a log file in XES format, and outputs it as an
interleaved stream of log updates.
1
2
3
4
5
a g
f
b d e
a f
b d e
c h
↦
↦
a g
f
b d e
c
a g
f
b d e
↦
↦
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
f
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
{ }
a
↦ { }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
{ }
b
↦ { }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
C. Soueidi, Y. Falcone, S. Hallé
Operators on log updates
Sample
Evaluate condition f on first event σ of each case;
retain case in log if f(σ) = ⊤.
=?
a
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
P
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
there are more
than 2 events
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
{ }
b
↦ { }
a
↦ b
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
{ }
b
↦ { }
a
↦ b
{ }
a
↦ b
when the condition becomes ⊤,
all the updates from the start of
the case are output
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
{ }
c
↦
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
{ }
c
↦ { }
c
↦
C. Soueidi, Y. Falcone, S. Hallé
Filter
Run processor P on each case; only output updates
for cases where P returns ⊤.
Operators on log updates
1
Σ
0
+
f
≥
2
{ }
c
↦ { }
c
↦
subsequent updates are let
through
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
P
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
put two successive
events in a tuple
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
b
↦
a b
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
a b
{ }
↦
{ }
b
↦
a b
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
a b
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
a
↦
a b
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
a
↦
a b ba
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
ba
↦
{ }
a
↦
a b ba
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
a b ba
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
c
↦
a b ba
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
c
↦
a b
bc ba
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
bc
↦
{ }
c
↦
a b
bc ba
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
bc ba
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
b
↦
bc ba
C. Soueidi, Y. Falcone, S. Hallé
Slice
Run an instance of processor P on each case; output
resulting log as a new stream of updates.
Operators on log updates
1
f
{ }
b
↦
bc ba
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀ ∃
...
P
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=? for every case,
there exists another
one that starts with
the same event
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
{ }
a
↦ ⊥
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
⊥
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
⊥
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Quantification
Given quantifiers Q1σ1, ..., Qnσn on cases,
evaluate quantified expression P(σ1, ..., σn) for a
processor P.
Log combinations
Q
∀
∃
↑
↑ f
=?
⊤
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
P P'
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
P P'
aggregate output
run on each case
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
count distinct events running average
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
{ }
a
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
{ }
a
↦
1
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
{ }
a
↦ 1
1
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1
1 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1 1
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1
2 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1.5
1
2 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
2 1
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
2 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
2 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
2 1 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Aggregation
Run processor P on each case and aggregate their
last output with function processor P'.
Log combinations
σ Σ
}
{
| |
f
f
Σ
0
+
Σ
0
+
÷
1
1.3
2 1 1
{ }
b
↦
C. Soueidi, Y. Falcone, S. Hallé
Weakening
Consider the verdict of a hyper-constraint ψ only
for logs that satisfy another hyper-constraint φ.
Qualified conditions
φ ψ
P P'
↑
C. Soueidi, Y. Falcone, S. Hallé
Weakening
Consider the verdict of a hyper-constraint ψ only
for logs that satisfy another hyper-constraint φ.
Qualified conditions
φ ψ
↑
f
Σ
0
+
Σ
0
+
÷
1
↑
1
σ Σ
f
k
≤
1
σ Σ
Σ
0
+
f
5
≤
↑
C. Soueidi, Y. Falcone, S. Hallé
Weakening
Consider the verdict of a hyper-constraint ψ only
for logs that satisfy another hyper-constraint φ.
Qualified conditions
φ ψ
↑
f
Σ
0
+
Σ
0
+
÷
1
↑
1
σ Σ
f
k
≤
1
σ Σ
Σ
0
+
f
5
≤
↑
the average case
length does not
exceed k
C. Soueidi, Y. Falcone, S. Hallé
Weakening
Consider the verdict of a hyper-constraint ψ only
for logs that satisfy another hyper-constraint φ.
Qualified conditions
φ ψ
↑
f
Σ
0
+
Σ
0
+
÷
1
↑
1
σ Σ
f
k
≤
1
σ Σ
Σ
0
+
f
5
≤
↑
on logs having
at least 5 cases
C. Soueidi, Y. Falcone, S. Hallé
Is it "just" a logical implication?
Qualified conditions
↑
φ ψ
C. Soueidi, Y. Falcone, S. Hallé
Is it "just" a logical implication?
Qualified conditions
↑
φ ψ
1. Separates the policy (ψ) from the
condition under which it applies (φ)
C. Soueidi, Y. Falcone, S. Hallé
Is it "just" a logical implication?
Qualified conditions
↑
φ ψ
1. Separates the policy (ψ) from the
condition under which it applies (φ)
2. Three-valued implication: distinguishes
between a non-violation caused by
satisfaction (φ = ⊤, ψ = ⊤)
exemption (φ = ?, ψ = *)
⊤
?
⊤
↑
⊤
?
⊤
?
⊤
⊤ ⊤ ⊤
⊤
⊤
? ?
⊤
C. Soueidi, Y. Falcone, S. Hallé
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
n
m
C. Soueidi, Y. Falcone, S. Hallé
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
n
m
temporary violations in a case (e.g. at most m
out of n successive events)
C. Soueidi, Y. Falcone, S. Hallé
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
n
m
temporary violations in a case (e.g. at most m
out of n successive events)
⊤ ⊤
⊤ ⊤
⊤
⊤
⊤ ⊤ ⊤ ⊤
⊤
⊤ ⊤
C. Soueidi, Y. Falcone, S. Hallé
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
n
m
temporary violations in a case (e.g. at most m
out of n successive events)
⊤ ⊤
⊤ ⊤
⊤
⊤
⊤ ⊤ ⊤ ⊤
⊤
⊤ ⊤
m=3, n=4
C. Soueidi, Y. Falcone, S. Hallé
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
n
m
temporary violations in a case (e.g. at most m
out of n successive events)
⊤ ⊤
⊤ ⊤
⊤
⊤
⊤ ⊤ ⊤ ⊤
⊤
⊤ ⊤
m=3, n=4
C. Soueidi, Y. Falcone, S. Hallé
violations of a fraction of all cases (e.g. at
most m
/n of all cases)
n
m
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
C. Soueidi, Y. Falcone, S. Hallé
violations of a fraction of all cases (e.g. at
most m
/n of all cases)
n
m
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
C. Soueidi, Y. Falcone, S. Hallé
violations of a fraction of all cases (e.g. at
most m
/n of all cases)
n
m
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
m=3, n=4
C. Soueidi, Y. Falcone, S. Hallé
violations of a fraction of all cases (e.g. at
most m
/n of all cases)
n
m
Dampening
Tolerate violations of a hyper-constraint; either...
Qualified conditions
m=3, n=4
↦
↦
↦
↦
⊤
⊤
⊤
⊤
⊤
C. Soueidi, Y. Falcone, S. Hallé
These "building blocks" have been implemented
as an extension of the event stream
processing library
Implementation
https://github.com/liflab/hypercompliance
They can be freely mixed with other processors
from the library to form complex hyper-queries
C. Soueidi, Y. Falcone, S. Hallé
Example
"All cases that contain an a must end in the
same state" (consistency)
f
F
=?
↑
1 a
σ Σ
}
{
f
#
1 f
≤
C. Soueidi, Y. Falcone, S. Hallé
Example
"The number of tasks of an employee may not
exceed the global average by a factor k."
f
emp
f
*
#
*
}
{
}
{
f
Σ
max
f
Σ
0
+
Σ
0
+
÷
1
≤
×
2 k
1
C. Soueidi, Y. Falcone, S. Hallé
Experimental results
Scenario Events Cases Hyperquery Throughput (Hz) Max memory (B)
Hospital 151434 1143
Concurrent instances 901392 Hz 8059
Directly follows 277351 Hz 3660379
Mean time interval 1130104 Hz 5615
Average length 369351 Hz 522071
Same next 304084 Hz 5401821
CAP 275287 13087
Concurrent instances 920692 Hz 12863
Directly follows 79700 Hz 39075895
Mean time interval 1228959 Hz 5615
Average length 7995 Hz 5991691
Same next 87698 Hz 38400801
WABO 39881 937
Concurrent instances 1375206 Hz 8055
Directly follows 419800 Hz 1873161
Mean time interval 1172970 Hz 5615
Average length 162117 Hz 278085
Same next 302128 Hz 2669627
Throughput and memory consumption for a sample
of properties evaluated on real-life logs
(details in the paper)
C. Soueidi, Y. Falcone, S. Hallé
Conclusion
Hyper-contraints and hyper-queries are calculated
on a set of process executions called a log
Elementary computing units (processors) can
incrementally evaluate hyper-queries in an
incremental (i.e. "real-time") fashion
Expressive hyper-queries can be obtained by
composing these units
These concepts have been...
1. formally defined
2. concretely implemented in a stream
processing library
C. Soueidi, Y. Falcone, S. Hallé
What's next ?
Journal paper in preparation, considering a
generalization of a hyperquery:
q : L → D q : L* → D
vs.
^
i.e. q depends on the log and the precise
interleavings of its updates.
^
^
C. Soueidi, Y. Falcone, S. Hallé
What's next ?
Journal paper in preparation, considering a
generalization of a hyperquery:
q : L → D q : L* → D
vs.
^
i.e. q depends on the log and the precise
interleavings of its updates.
^
^
Thank you!

More Related Content

More from Sylvain Hallé

Detecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative SpecificationsDetecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative Specifications
Sylvain Hallé
 
Streamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research PapersStreamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research Papers
Sylvain Hallé
 
Writing Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeepWriting Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeep
Sylvain Hallé
 
Real-Time Data Mining for Event Streams
Real-Time Data Mining for Event StreamsReal-Time Data Mining for Event Streams
Real-Time Data Mining for Event Streams
Sylvain Hallé
 
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Sylvain Hallé
 
Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3
Sylvain Hallé
 
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
Sylvain Hallé
 
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
Sylvain Hallé
 
Event Stream Processing with Multiple Threads
Event Stream Processing with Multiple ThreadsEvent Stream Processing with Multiple Threads
Event Stream Processing with Multiple Threads
Sylvain Hallé
 
A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)
Sylvain Hallé
 
Solving Equations on Words with Morphisms and Antimorphisms
Solving Equations on Words with Morphisms and AntimorphismsSolving Equations on Words with Morphisms and Antimorphisms
Solving Equations on Words with Morphisms and Antimorphisms
Sylvain Hallé
 
Runtime monitoring de propriétés temporelles par (streaming) XML
Runtime monitoring de propriétés temporelles par (streaming) XMLRuntime monitoring de propriétés temporelles par (streaming) XML
Runtime monitoring de propriétés temporelles par (streaming) XML
Sylvain Hallé
 
La quantification du premier ordre en logique temporelle
La quantification du premier ordre en logique temporelleLa quantification du premier ordre en logique temporelle
La quantification du premier ordre en logique temporelle
Sylvain Hallé
 
When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)
Sylvain Hallé
 
Decentralized Enforcement of Artifact Lifecycles
Decentralized Enforcement of Artifact LifecyclesDecentralized Enforcement of Artifact Lifecycles
Decentralized Enforcement of Artifact Lifecycles
Sylvain Hallé
 
Chasing Bugs with the BeepBeep Event Stream Processor
Chasing Bugs with the BeepBeep Event Stream ProcessorChasing Bugs with the BeepBeep Event Stream Processor
Chasing Bugs with the BeepBeep Event Stream Processor
Sylvain Hallé
 
Activity Recognition Through Complex Event Processing: First Findings
Activity Recognition Through Complex Event Processing: First Findings Activity Recognition Through Complex Event Processing: First Findings
Activity Recognition Through Complex Event Processing: First Findings
Sylvain Hallé
 
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
BeepBeep 3: A declarative event stream query engine (EDOC 2015)BeepBeep 3: A declarative event stream query engine (EDOC 2015)
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
Sylvain Hallé
 
Graph Methods for Generating Test Cases with Universal and Existential Constr...
Graph Methods for Generating Test Cases with Universal and Existential Constr...Graph Methods for Generating Test Cases with Universal and Existential Constr...
Graph Methods for Generating Test Cases with Universal and Existential Constr...
Sylvain Hallé
 
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Sylvain Hallé
 

More from Sylvain Hallé (20)

Detecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative SpecificationsDetecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative Specifications
 
Streamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research PapersStreamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research Papers
 
Writing Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeepWriting Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeep
 
Real-Time Data Mining for Event Streams
Real-Time Data Mining for Event StreamsReal-Time Data Mining for Event Streams
Real-Time Data Mining for Event Streams
 
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
 
Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3
 
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
 
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
 
Event Stream Processing with Multiple Threads
Event Stream Processing with Multiple ThreadsEvent Stream Processing with Multiple Threads
Event Stream Processing with Multiple Threads
 
A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)
 
Solving Equations on Words with Morphisms and Antimorphisms
Solving Equations on Words with Morphisms and AntimorphismsSolving Equations on Words with Morphisms and Antimorphisms
Solving Equations on Words with Morphisms and Antimorphisms
 
Runtime monitoring de propriétés temporelles par (streaming) XML
Runtime monitoring de propriétés temporelles par (streaming) XMLRuntime monitoring de propriétés temporelles par (streaming) XML
Runtime monitoring de propriétés temporelles par (streaming) XML
 
La quantification du premier ordre en logique temporelle
La quantification du premier ordre en logique temporelleLa quantification du premier ordre en logique temporelle
La quantification du premier ordre en logique temporelle
 
When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)
 
Decentralized Enforcement of Artifact Lifecycles
Decentralized Enforcement of Artifact LifecyclesDecentralized Enforcement of Artifact Lifecycles
Decentralized Enforcement of Artifact Lifecycles
 
Chasing Bugs with the BeepBeep Event Stream Processor
Chasing Bugs with the BeepBeep Event Stream ProcessorChasing Bugs with the BeepBeep Event Stream Processor
Chasing Bugs with the BeepBeep Event Stream Processor
 
Activity Recognition Through Complex Event Processing: First Findings
Activity Recognition Through Complex Event Processing: First Findings Activity Recognition Through Complex Event Processing: First Findings
Activity Recognition Through Complex Event Processing: First Findings
 
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
BeepBeep 3: A declarative event stream query engine (EDOC 2015)BeepBeep 3: A declarative event stream query engine (EDOC 2015)
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
 
Graph Methods for Generating Test Cases with Universal and Existential Constr...
Graph Methods for Generating Test Cases with Universal and Existential Constr...Graph Methods for Generating Test Cases with Universal and Existential Constr...
Graph Methods for Generating Test Cases with Universal and Existential Constr...
 
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
 

Recently uploaded

Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 

Recently uploaded (20)

Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 

Monitoring Business Process Compliance Across Multiple Executions with Stream Processing

  • 1. Stream Processing Stream Processing Chukri Soueidi Yliès Falcone Université Grenoble-Alpes France Monitoring Multiple Executions Process with across Business Compliance Monitoring Multiple Executions Process with across Business Compliance Université du Québec à Chicoutimi Canada Sylvain Hallé
  • 2. C. Soueidi, Y. Falcone, S. Hallé A school admission process a. Assign Officer b. Review Application c. Request Documents d. Schedule Interview f. Evaluate Interview e. Conduct Interview g. Accep- tance Letter h. Rejection Letter Admission Process Ends Application Submitted
  • 3. C. Soueidi, Y. Falcone, S. Hallé A school admission process a b c d f g e h
  • 4. C. Soueidi, Y. Falcone, S. Hallé A school admission process a b c d f g e h Executions of this process are called cases or instances
  • 5. C. Soueidi, Y. Falcone, S. Hallé A school admission process a b c d f g e h Executions of this process are called cases or instances a b d f g e c h
  • 6. C. Soueidi, Y. Falcone, S. Hallé A school admission process a b c d f g e h Executions of this process are called cases or instances ,
  • 7. C. Soueidi, Y. Falcone, S. Hallé A school admission process a b c d f g e h Executions of this process are called cases or instances , , , ... ,
  • 8. C. Soueidi, Y. Falcone, S. Hallé Process log These executions can be recorded in the form of a log
  • 9. C. Soueidi, Y. Falcone, S. Hallé Process log These executions can be recorded in the form of a log a g f b d e
  • 10. C. Soueidi, Y. Falcone, S. Hallé Process log These executions can be recorded in the form of a log a g f b d e a f b d e c h
  • 11. C. Soueidi, Y. Falcone, S. Hallé Process log These executions can be recorded in the form of a log a g f b d e a f b d e c h a g f b d e c
  • 12. C. Soueidi, Y. Falcone, S. Hallé Process log These executions can be recorded in the form of a log a g f b d e a f b d e c h a g f b d e c a g f b d e
  • 13. C. Soueidi, Y. Falcone, S. Hallé Process log Formally, let...
  • 14. C. Soueidi, Y. Falcone, S. Hallé Process log Formally, let... Σ = {σ1, ..., σn} set of events σ ∈ Σ* is a trace a f b e ( ( d
  • 15. C. Soueidi, Y. Falcone, S. Hallé Process log Formally, let... Σ = {σ1, ..., σn} set of events σ ∈ Σ* is a trace a f b e ( ( d C = {c1, ..., cm} set of case identifiers ( (
  • 16. C. Soueidi, Y. Falcone, S. Hallé Process log Formally, let... Σ = {σ1, ..., σn} set of events σ ∈ Σ* is a trace a f b e ( ( d C = {c1, ..., cm} set of case identifiers ( ( A log is a function λ : C → Σ*, mapping a trace to each case identifier. a g f b d e a f b d e c h ↦ ↦ a g f b d e c a g f b d e ↦ ↦
  • 17. C. Soueidi, Y. Falcone, S. Hallé Querying the log Many questions can be asked about this log:
  • 18. C. Soueidi, Y. Falcone, S. Hallé Querying the log Many questions can be asked about this log: Does the process start with ? a Does come after ? a b Does the case end after fewer than n events?
  • 19. C. Soueidi, Y. Falcone, S. Hallé Querying the log Many questions can be asked about this log: Does the process start with ? a Does come after ? a b Does the case end after fewer than n events? What is the number of events in a trace? What are the events in the trace? What is the average delay between two events?
  • 20. C. Soueidi, Y. Falcone, S. Hallé Querying the log Many questions can be asked about this log: Does the process start with ? a Does come after ? a b Does the case end after fewer than n events? What is the number of events in a trace? What are the events in the trace? What is the average delay between two events? "Constraints" answer by yes or no "Queries" answer by something else
  • 21. C. Soueidi, Y. Falcone, S. Hallé Querying the log Given a trace σ ∈ Σ*, a query is a function q : Σ* → D for some arbitrary image D. A constraint is the particular case where D = {⊤,⊥}.
  • 22. C. Soueidi, Y. Falcone, S. Hallé Querying the log Given a trace σ ∈ Σ*, a query is a function q : Σ* → D for some arbitrary image D. A constraint is the particular case where D = {⊤,⊥}. A trace σ is compliant with respect to a constraint q iff q(σ) = ⊤.
  • 23. C. Soueidi, Y. Falcone, S. Hallé Querying the log Given a trace σ ∈ Σ*, a query is a function q : Σ* → D for some arbitrary image D. A constraint is the particular case where D = {⊤,⊥}. A log λ is compliant with respect to a constraint q iff q(λ(c)) = ⊤ for every case identifier c ∈ C. A trace σ is compliant with respect to a constraint q iff q(σ) = ⊤.
  • 24. C. Soueidi, Y. Falcone, S. Hallé Querying the log A query (and compliance) is concerned with each execution taken in isolation. Generalize queries to calculations involving multiple executions:
  • 25. C. Soueidi, Y. Falcone, S. Hallé Querying the log A query (and compliance) is concerned with each execution taken in isolation. Generalize queries to calculations involving multiple executions: Are there at least 50% of cases ending in ? g Is the average case duration below k?
  • 26. C. Soueidi, Y. Falcone, S. Hallé Querying the log A query (and compliance) is concerned with each execution taken in isolation. Generalize queries to calculations involving multiple executions: Are there at least 50% of cases ending in ? g Is the average case duration below k? What is the maximum number of concurrent active cases? What event occurs in the fewest cases?
  • 27. C. Soueidi, Y. Falcone, S. Hallé Querying the log A query (and compliance) is concerned with each execution taken in isolation. Generalize queries to calculations involving multiple executions: Are there at least 50% of cases ending in ? g Is the average case duration below k? What is the maximum number of concurrent active cases? What event occurs in the fewest cases? "Hyper-Constraints" answer by yes or no "Hyper-Queries" answer by something else
  • 28. C. Soueidi, Y. Falcone, S. Hallé Hyper-querying the log Given a log λ ∈ L, a hyper-query is a function q : L → D for some arbitrary image D. A hyper-constraint is the particular case where D = {⊤,⊥}.
  • 29. C. Soueidi, Y. Falcone, S. Hallé Evaluating hyper-queries Two goals:
  • 30. C. Soueidi, Y. Falcone, S. Hallé Evaluating hyper-queries Two goals: A provide formal means of defining expressive (hyper) queries stateful, aggregations, unconventional types
  • 31. C. Soueidi, Y. Falcone, S. Hallé Evaluating hyper-queries Two goals: A provide formal means of defining expressive (hyper) queries stateful, aggregations, unconventional types evaluate these queries incrementally as the log is produced P
  • 32. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 1 The complete log is available at once; the hyperquery is evaluated on the log a g f b d e a f b d e c h a g f b d e c a g f b d e
  • 33. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 2 One complete case is processed at a time
  • 34. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 2 One complete case is processed at a time a g f b d e
  • 35. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 2 One complete case is processed at a time a g f b d e a f b d e c h
  • 36. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 2 One complete case is processed at a time a g f b d e a f b d e c h a g f b d e c
  • 37. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 2 One complete case is processed at a time a g f b d e a f b d e c h a g f b d e c a g f b d e
  • 38. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 3 One event from each case is processed at a time
  • 39. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 3 One event from each case is processed at a time a a a a
  • 40. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 3 One event from each case is processed at a time a a a a b b b b
  • 41. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 3 One event from each case is processed at a time a a a a b b b b d c c d
  • 42. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 3 One event from each case is processed at a time a a a a b b b b d c c d . . . . . . . . . . . .
  • 43. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 4 Events from each case are arbitrarily interleaved
  • 44. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 4 Events from each case are arbitrarily interleaved a
  • 45. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 4 Events from each case are arbitrarily interleaved a a
  • 46. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 4 Events from each case are arbitrarily interleaved a a b
  • 47. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 4 Events from each case are arbitrarily interleaved a a b a
  • 48. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 4 Events from each case are arbitrarily interleaved a a b a d
  • 49. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 4 Events from each case are arbitrarily interleaved a a b a d a
  • 50. C. Soueidi, Y. Falcone, S. Hallé Incremental evaluation Case 4 Events from each case are arbitrarily interleaved a a b a d a b
  • 51. C. Soueidi, Y. Falcone, S. Hallé State of the art
  • 52. C. Soueidi, Y. Falcone, S. Hallé State of the art Constraints Queries Classical Hyper
  • 53. C. Soueidi, Y. Falcone, S. Hallé State of the art Constraints Queries Classical Hyper Temporal Logic(s) Petri nets Finite-state machines A P ✓ ✓ ✓
  • 54. C. Soueidi, Y. Falcone, S. Hallé State of the art Constraints Queries Classical Hyper Temporal Logic(s) Petri nets Finite-state machines A P ✓ ✓ ✓ Stream equations Stream pipelines A P ✓ ✓
  • 55. C. Soueidi, Y. Falcone, S. Hallé State of the art Constraints Queries Classical Hyper Temporal Logic(s) Petri nets Finite-state machines A P ✓ ✓ ✓ Stream equations Stream pipelines A P ✓ ✓ Hyper-LTL HyperLDLf Event calculus A P ± ? ✓
  • 56. C. Soueidi, Y. Falcone, S. Hallé State of the art Constraints Queries Classical Hyper Temporal Logic(s) Petri nets Finite-state machines A P ✓ ✓ ✓ Stream equations Stream pipelines A P ✓ ✓ Hyper-LTL HyperLDLf Event calculus A P ± ? ✓ SQL (incremental) APQL A P ✓ ?
  • 57. C. Soueidi, Y. Falcone, S. Hallé Log updates
  • 58. C. Soueidi, Y. Falcone, S. Hallé Log updates Log update: a special type of log λ with a single event for a single case L ⊆ L is the set of updates ^ { } a ↦ ^
  • 59. C. Soueidi, Y. Falcone, S. Hallé Log updates Log update: a special type of log λ with a single event for a single case L ⊆ L is the set of updates ^ { } a ↦ ^ Update operation: an operator ∘ : L × L → L that appends an event to an existing log ^
  • 60. C. Soueidi, Y. Falcone, S. Hallé C. Soueidi, Y. Falcone, S. Hallé C. Soueidi, Y. Falcone, S. Hallé Log updates Log updates Log updates Log update: a special type of log λ with a single event for a single case L ⊆ L is the set of updates ^ { } a ↦ ^ Log update: a special type of log λ with a single event for a single case L ⊆ L is the set of updates ^ { } a ↦ ^ Log update: a special type of log λ with a single event for a single case L ⊆ L is the set of updates ^ { } a ↦ ^ Update operation: an operator ∘ : L × L → L that appends an event to an existing log ^ Update operation: an operator ∘ : L × L → L that appends an event to an existing log ^ Update operation: an operator ∘ : L × L → L that appends an event to an existing log ^ { a ↦ a b ↦ } ∘ { } b ↦ = { a ↦ a b ↦ } b λ ∘ λ ^ =
  • 61. C. Soueidi, Y. Falcone, S. Hallé Log updates A log is progressvely built through a sequence (i.e. a stream) of log updates from an empty log
  • 62. C. Soueidi, Y. Falcone, S. Hallé Log updates A log is progressvely built through a sequence (i.e. a stream) of log updates from an empty log ∅
  • 63. C. Soueidi, Y. Falcone, S. Hallé Log updates A log is progressvely built through a sequence (i.e. a stream) of log updates from an empty log ∅ { } a ↦ ∘
  • 64. C. Soueidi, Y. Falcone, S. Hallé Log updates A log is progressvely built through a sequence (i.e. a stream) of log updates from an empty log ∅ { } a ↦ ∘ ∘ { } a ↦
  • 65. C. Soueidi, Y. Falcone, S. Hallé Log updates A log is progressvely built through a sequence (i.e. a stream) of log updates from an empty log ∅ { } a ↦ ∘ ∘ { } a ↦ ∘ { } b ↦ ∘ ...
  • 66. C. Soueidi, Y. Falcone, S. Hallé Problem Problem Given a hyperquery q : L → D, define a processor πq : L* → D* such that πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn) Hyper-processors πq
  • 67. C. Soueidi, Y. Falcone, S. Hallé Problem Problem Given a hyperquery q : L → D, define a processor πq : L* → D* such that πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn) Hyper-processors q( ) { } a ↦ { } a ↦ πq
  • 68. C. Soueidi, Y. Falcone, S. Hallé Problem Problem Given a hyperquery q : L → D, define a processor πq : L* → D* such that πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn) Hyper-processors πq
  • 69. C. Soueidi, Y. Falcone, S. Hallé Problem Problem Given a hyperquery q : L → D, define a processor πq : L* → D* such that πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn) Hyper-processors πq πq { } a ↦ } a ↦ { a ↦ q(
  • 70. C. Soueidi, Y. Falcone, S. Hallé Problem Problem Given a hyperquery q : L → D, define a processor πq : L* → D* such that πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn) Hyper-processors πq
  • 71. C. Soueidi, Y. Falcone, S. Hallé Problem Problem Given a hyperquery q : L → D, define a processor πq : L* → D* such that πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn) Hyper-processors πq πq } a ↦ { a ↦ q( ) { } b ↦ b
  • 72. C. Soueidi, Y. Falcone, S. Hallé Problem Problem Given a hyperquery q : L → D, define a processor πq : L* → D* such that πq(λ1 ⋅ ... ⋅ λn)[n] = q(λ1 ∘ ... ∘ λn) Hyper-processors πq πq } a ↦ { a ↦ q( ) { } b ↦ b In other words, πq incrementally evaluates q on each update Avoid re-evaluating q from scratch every time!
  • 73. C. Soueidi, Y. Falcone, S. Hallé Solution Solution Follow a compositional approach Hyper-processors
  • 74. C. Soueidi, Y. Falcone, S. Hallé Solution Solution Follow a compositional approach Hyper-processors elementary (incremental) hyperquery processors
  • 75. C. Soueidi, Y. Falcone, S. Hallé Solution Solution Follow a compositional approach Hyper-processors elementary (incremental) hyperquery processors allow composition to express complex hyperqueries
  • 76. C. Soueidi, Y. Falcone, S. Hallé Solution Solution Follow a compositional approach Hyper-processors elementary (incremental) hyperquery processors allow composition to express complex hyperqueries
  • 77. C. Soueidi, Y. Falcone, S. Hallé Solution Solution Follow a compositional approach Hyper-processors elementary (incremental) hyperquery processors allow composition to express complex hyperqueries
  • 78. C. Soueidi, Y. Falcone, S. Hallé Solution Solution Follow a compositional approach Hyper-processors Solution Solution Follow a compositional approach Operators on log updates Log combinations Qualified conditions
  • 79. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates XES Source Reads a log file in XES format, and outputs it as an interleaved stream of log updates.
  • 80. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates XES Source Reads a log file in XES format, and outputs it as an interleaved stream of log updates. a g f b d e a f b d e c h ↦ ↦ a g f b d e c a g f b d e ↦ ↦
  • 81. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates XES Source Reads a log file in XES format, and outputs it as an interleaved stream of log updates. 1 2 3 4 5 a g f b d e a f b d e c h ↦ ↦ a g f b d e c a g f b d e ↦ ↦
  • 82. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates XES Source Reads a log file in XES format, and outputs it as an interleaved stream of log updates. 1 2 3 4 5 a g f b d e a f b d e c h ↦ ↦ a g f b d e c a g f b d e ↦ ↦ { } a ↦
  • 83. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates XES Source Reads a log file in XES format, and outputs it as an interleaved stream of log updates. 1 2 3 4 5 a g f b d e a f b d e c h ↦ ↦ a g f b d e c a g f b d e ↦ ↦ { } a ↦
  • 84. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates XES Source Reads a log file in XES format, and outputs it as an interleaved stream of log updates. 1 2 3 4 5 a g f b d e a f b d e c h ↦ ↦ a g f b d e c a g f b d e ↦ ↦ { } a ↦
  • 85. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates XES Source Reads a log file in XES format, and outputs it as an interleaved stream of log updates. 1 2 3 4 5 a g f b d e a f b d e c h ↦ ↦ a g f b d e c a g f b d e ↦ ↦ { } b ↦
  • 86. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. f
  • 87. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a
  • 88. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a { } a ↦
  • 89. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a { } a ↦ { } a ↦
  • 90. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a
  • 91. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a { } b ↦
  • 92. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a
  • 93. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a { } b ↦
  • 94. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a { } b ↦ { } b ↦
  • 95. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a
  • 96. C. Soueidi, Y. Falcone, S. Hallé Operators on log updates Sample Evaluate condition f on first event σ of each case; retain case in log if f(σ) = ⊤. =? a { } a ↦
  • 97. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates P
  • 98. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 there are more than 2 events
  • 99. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 { } a ↦
  • 100. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2
  • 101. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 { } b ↦
  • 102. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2
  • 103. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 { } b ↦
  • 104. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 { } b ↦ { } a ↦ b
  • 105. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 { } b ↦ { } a ↦ b { } a ↦ b when the condition becomes ⊤, all the updates from the start of the case are output
  • 106. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2
  • 107. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 { } c ↦
  • 108. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 { } c ↦ { } c ↦
  • 109. C. Soueidi, Y. Falcone, S. Hallé Filter Run processor P on each case; only output updates for cases where P returns ⊤. Operators on log updates 1 Σ 0 + f ≥ 2 { } c ↦ { } c ↦ subsequent updates are let through
  • 110. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates P
  • 111. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f
  • 112. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f put two successive events in a tuple
  • 113. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f
  • 114. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } a ↦
  • 115. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } a ↦
  • 116. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f
  • 117. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } b ↦
  • 118. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } b ↦
  • 119. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f
  • 120. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } b ↦
  • 121. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } b ↦ a b
  • 122. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f a b { } ↦ { } b ↦ a b
  • 123. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f a b
  • 124. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } a ↦ a b
  • 125. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } a ↦ a b ba
  • 126. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } ba ↦ { } a ↦ a b ba
  • 127. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f a b ba
  • 128. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } c ↦ a b ba
  • 129. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } c ↦ a b bc ba
  • 130. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } bc ↦ { } c ↦ a b bc ba
  • 131. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f bc ba
  • 132. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } b ↦ bc ba
  • 133. C. Soueidi, Y. Falcone, S. Hallé Slice Run an instance of processor P on each case; output resulting log as a new stream of updates. Operators on log updates 1 f { } b ↦ bc ba
  • 134. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ... P
  • 135. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =?
  • 136. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? for every case, there exists another one that starts with the same event
  • 137. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =?
  • 138. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? { } a ↦
  • 139. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? { } a ↦ ⊥
  • 140. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =?
  • 141. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? { } b ↦
  • 142. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? ⊥ { } b ↦
  • 143. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =?
  • 144. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? { } b ↦
  • 145. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? ⊥ { } b ↦
  • 146. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =?
  • 147. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? { } a ↦
  • 148. C. Soueidi, Y. Falcone, S. Hallé Quantification Given quantifiers Q1σ1, ..., Qnσn on cases, evaluate quantified expression P(σ1, ..., σn) for a processor P. Log combinations Q ∀ ∃ ↑ ↑ f =? ⊤ { } a ↦
  • 149. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ P P'
  • 150. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ P P' aggregate output run on each case
  • 151. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1
  • 152. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 count distinct events running average
  • 153. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1
  • 154. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 { } a ↦
  • 155. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 { } a ↦
  • 156. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 { } a ↦ 1
  • 157. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 { } a ↦ 1 1
  • 158. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1
  • 159. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1 { } b ↦
  • 160. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1 { } b ↦
  • 161. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1 1 { } b ↦
  • 162. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1 1 1 { } b ↦
  • 163. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1 1
  • 164. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1 1 { } b ↦
  • 165. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1 2 1 { } b ↦
  • 166. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1.5 1 2 1 { } b ↦
  • 167. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 2 1
  • 168. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 2 1 { } b ↦
  • 169. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 2 1 { } b ↦
  • 170. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 2 1 1 { } b ↦
  • 171. C. Soueidi, Y. Falcone, S. Hallé Aggregation Run processor P on each case and aggregate their last output with function processor P'. Log combinations σ Σ } { | | f f Σ 0 + Σ 0 + ÷ 1 1.3 2 1 1 { } b ↦
  • 172. C. Soueidi, Y. Falcone, S. Hallé Weakening Consider the verdict of a hyper-constraint ψ only for logs that satisfy another hyper-constraint φ. Qualified conditions φ ψ P P' ↑
  • 173. C. Soueidi, Y. Falcone, S. Hallé Weakening Consider the verdict of a hyper-constraint ψ only for logs that satisfy another hyper-constraint φ. Qualified conditions φ ψ ↑ f Σ 0 + Σ 0 + ÷ 1 ↑ 1 σ Σ f k ≤ 1 σ Σ Σ 0 + f 5 ≤ ↑
  • 174. C. Soueidi, Y. Falcone, S. Hallé Weakening Consider the verdict of a hyper-constraint ψ only for logs that satisfy another hyper-constraint φ. Qualified conditions φ ψ ↑ f Σ 0 + Σ 0 + ÷ 1 ↑ 1 σ Σ f k ≤ 1 σ Σ Σ 0 + f 5 ≤ ↑ the average case length does not exceed k
  • 175. C. Soueidi, Y. Falcone, S. Hallé Weakening Consider the verdict of a hyper-constraint ψ only for logs that satisfy another hyper-constraint φ. Qualified conditions φ ψ ↑ f Σ 0 + Σ 0 + ÷ 1 ↑ 1 σ Σ f k ≤ 1 σ Σ Σ 0 + f 5 ≤ ↑ on logs having at least 5 cases
  • 176. C. Soueidi, Y. Falcone, S. Hallé Is it "just" a logical implication? Qualified conditions ↑ φ ψ
  • 177. C. Soueidi, Y. Falcone, S. Hallé Is it "just" a logical implication? Qualified conditions ↑ φ ψ 1. Separates the policy (ψ) from the condition under which it applies (φ)
  • 178. C. Soueidi, Y. Falcone, S. Hallé Is it "just" a logical implication? Qualified conditions ↑ φ ψ 1. Separates the policy (ψ) from the condition under which it applies (φ) 2. Three-valued implication: distinguishes between a non-violation caused by satisfaction (φ = ⊤, ψ = ⊤) exemption (φ = ?, ψ = *) ⊤ ? ⊤ ↑ ⊤ ? ⊤ ? ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ? ? ⊤
  • 179. C. Soueidi, Y. Falcone, S. Hallé Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions n m
  • 180. C. Soueidi, Y. Falcone, S. Hallé Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions n m temporary violations in a case (e.g. at most m out of n successive events)
  • 181. C. Soueidi, Y. Falcone, S. Hallé Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions n m temporary violations in a case (e.g. at most m out of n successive events) ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤
  • 182. C. Soueidi, Y. Falcone, S. Hallé Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions n m temporary violations in a case (e.g. at most m out of n successive events) ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ m=3, n=4
  • 183. C. Soueidi, Y. Falcone, S. Hallé Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions n m temporary violations in a case (e.g. at most m out of n successive events) ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ ⊤ m=3, n=4
  • 184. C. Soueidi, Y. Falcone, S. Hallé violations of a fraction of all cases (e.g. at most m /n of all cases) n m Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions
  • 185. C. Soueidi, Y. Falcone, S. Hallé violations of a fraction of all cases (e.g. at most m /n of all cases) n m Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions
  • 186. C. Soueidi, Y. Falcone, S. Hallé violations of a fraction of all cases (e.g. at most m /n of all cases) n m Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions m=3, n=4
  • 187. C. Soueidi, Y. Falcone, S. Hallé violations of a fraction of all cases (e.g. at most m /n of all cases) n m Dampening Tolerate violations of a hyper-constraint; either... Qualified conditions m=3, n=4 ↦ ↦ ↦ ↦ ⊤ ⊤ ⊤ ⊤ ⊤
  • 188. C. Soueidi, Y. Falcone, S. Hallé These "building blocks" have been implemented as an extension of the event stream processing library Implementation https://github.com/liflab/hypercompliance They can be freely mixed with other processors from the library to form complex hyper-queries
  • 189. C. Soueidi, Y. Falcone, S. Hallé Example "All cases that contain an a must end in the same state" (consistency) f F =? ↑ 1 a σ Σ } { f # 1 f ≤
  • 190. C. Soueidi, Y. Falcone, S. Hallé Example "The number of tasks of an employee may not exceed the global average by a factor k." f emp f * # * } { } { f Σ max f Σ 0 + Σ 0 + ÷ 1 ≤ × 2 k 1
  • 191. C. Soueidi, Y. Falcone, S. Hallé Experimental results Scenario Events Cases Hyperquery Throughput (Hz) Max memory (B) Hospital 151434 1143 Concurrent instances 901392 Hz 8059 Directly follows 277351 Hz 3660379 Mean time interval 1130104 Hz 5615 Average length 369351 Hz 522071 Same next 304084 Hz 5401821 CAP 275287 13087 Concurrent instances 920692 Hz 12863 Directly follows 79700 Hz 39075895 Mean time interval 1228959 Hz 5615 Average length 7995 Hz 5991691 Same next 87698 Hz 38400801 WABO 39881 937 Concurrent instances 1375206 Hz 8055 Directly follows 419800 Hz 1873161 Mean time interval 1172970 Hz 5615 Average length 162117 Hz 278085 Same next 302128 Hz 2669627 Throughput and memory consumption for a sample of properties evaluated on real-life logs (details in the paper)
  • 192. C. Soueidi, Y. Falcone, S. Hallé Conclusion Hyper-contraints and hyper-queries are calculated on a set of process executions called a log Elementary computing units (processors) can incrementally evaluate hyper-queries in an incremental (i.e. "real-time") fashion Expressive hyper-queries can be obtained by composing these units These concepts have been... 1. formally defined 2. concretely implemented in a stream processing library
  • 193. C. Soueidi, Y. Falcone, S. Hallé What's next ? Journal paper in preparation, considering a generalization of a hyperquery: q : L → D q : L* → D vs. ^ i.e. q depends on the log and the precise interleavings of its updates. ^ ^
  • 194. C. Soueidi, Y. Falcone, S. Hallé What's next ? Journal paper in preparation, considering a generalization of a hyperquery: q : L → D q : L* → D vs. ^ i.e. q depends on the log and the precise interleavings of its updates. ^ ^ Thank you!