Code Examples
A repository of 155 code examples for BeepBeep
package-info.java
1 /*
2  BeepBeep, an event stream processor
3  Copyright (C) 2008-2018 Sylvain Hallé
4 
5  This program is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published
7  by the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  This program is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with this program. If not, see <http://www.gnu.org/licenses/>.
17  */
18 
19 /**
20  * Examples related to a stream of events for a pressure sensor. This stream of
21  * events is made of raw pressure readings made by the sensor, and is separated
22  * into various parts using special events that act as markers.
23  * <em>Episodes</em> are sub-sequences of successive pressure readings, and
24  * <em>days</em> are sequences of episodes.
25  * <p>
26  * Formally, a {@link PressureEvent} can be either:
27  * <ul>
28  * <li>A pressure reading</li>
29  * <li>A marker indicating the end of a day, represented by the symbol ✸</li>
30  * <li>A marker indicating the start of an <em>episode</em>, represented by the
31  * symbol ↑</li>
32  * <li>A marker indicating the end of an <em>episode</em>, represented by the
33  * symbol ↓</li>
34  * </ul>
35  * For example, given this stream of pressure events:
36  * <blockquote>
37  * ✸ ↑ 151 142 ↓ ↑ 148 149 144 ↓ ✸ ↑ 150 142 ↓ ✸
38  * </blockquote>
39  * one can identify two days; Day 1 is composed of two episodes (one of two
40  * readings and one of three readings), and Day 2 is composed of one episode of
41  * two readings.
42  * <p>
43  * The examples in this section illustrate the possibility of computing
44  * "hierarchical" summaries on parts of the input stream; two examples are
45  * included:
46  * <ul>
47  * <li>{@link MaxEpisode}: compute the maximum value inside each episode</li>
48  * <li>{@link AverageEpisodes}: compute the average of each episode, and
49  * group these averages into days</li>
50  * </ul>
51  * <p>
52  * In BeepBeep, such hierarchies can be obtained by nesting {@link Slice} or
53  * {@link ResetLast} processors.
54  * The notion of hierarchical summary has been discussed, among others, in
55  * the following publication:
56  * <blockquote>
57  * K. Mamouras, M. Raghothaman, R. Alur, Z.G. Ives, S. Khanna. (2017).
58  * StreamQRE: modular specification and efficient evaluation of quantitative
59  * queries over streaming data. <i>Proc. PLDI 2017</i>, ACM.
60  * DOI: <tt>10.1145/3062341.3062369</tt>.
61  * </blockquote>
62  */
63 package episodes;