{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,11]],"date-time":"2026-05-11T17:30:37Z","timestamp":1778520637605,"version":"3.51.4"},"reference-count":89,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA","license":[{"start":{"date-parts":[[2020,11,13]],"date-time":"2020-11-13T00:00:00Z","timestamp":1605225600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"DOI":"10.13039\/100000001","name":"National Science Foundation","doi-asserted-by":"publisher","award":["2008096"],"award-info":[{"award-number":["2008096"]}],"id":[{"id":"10.13039\/100000001","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2020,11,13]]},"abstract":"<jats:p>Real-time data analysis applications increasingly rely on complex streaming computations over time-series data. We propose StreamQL, a language that facilitates the high-level specification of complex analyses over streaming time series. StreamQL is designed as an algebra of stream transformations and provides a collection of combinators for composing them. It integrates three language-based approaches for data stream processing: relational queries, dataflow composition, and temporal formalisms. The relational constructs are useful for specifying simple transformations, aggregations, and the partitioning of data into key-based groups or windows. The dataflow abstractions enable the modular description of a computation as a pipeline of stages or, more generally, as a directed graph of independent tasks. Finally, temporal constructs can be used to specify complex temporal patterns and time-varying computations. These constructs can be composed freely to describe complex streaming computations. We provide a formal denotational semantics for StreamQL using a class of monotone functions over streams. We have implemented StreamQL as a lightweight Java library, which we use to experimentally evaluate our approach. The experiments show that the throughput of our implementation is competitive compared to state-of-the-art streaming engines such as RxJava and Reactor.<\/jats:p>","DOI":"10.1145\/3428251","type":"journal-article","created":{"date-parts":[[2020,11,24]],"date-time":"2020-11-24T23:36:06Z","timestamp":1606260966000},"page":"1-32","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":7,"title":["StreamQL: a query language for processing streaming time series"],"prefix":"10.1145","volume":"4","author":[{"given":"Lingkun","family":"Kong","sequence":"first","affiliation":[{"name":"Rice University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Konstantinos","family":"Mamouras","sequence":"additional","affiliation":[{"name":"Rice University, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2020,11,13]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/872757.872855"},{"key":"e_1_2_2_2_1","volume-title":"Proceedings of the 2nd Biennial Conference on Innovative Data Systems Research (CIDR '05)","author":"Abadi Daniel J.","year":"2005"},{"key":"e_1_2_2_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/JPROC.2018.2853608"},{"key":"e_1_2_2_4_1","doi-asserted-by":"publisher","DOI":"10.1109\/TCBB.2018.2885274"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1376616.1376634"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/1807167.1807291"},{"key":"e_1_2_2_7_1","doi-asserted-by":"publisher","DOI":"10.14778\/2733004.2733016"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/1247480.1247620"},{"key":"e_1_2_2_9_1","first-page":"28","volume-title":"Apache Flink: Stream and Batch Processing in a Single Engine. Bulletin of the IEEE Computer Society Technical Committee on Data Engineering 36, 4 ( 2015 )","author":"Carbone Paris","year":"2015"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/41625.41641"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.14778\/2735496.2735503"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2018.00067"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.14778\/1920841.1920873"},{"key":"e_1_2_2_14_1","volume-title":"Proceedings of the First Biennial Conference on Innovative Data Systems Research (CIDR '03)","author":"Chandrasekaran Sirish","year":"2003"},{"key":"e_1_2_2_15_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-60508-7_21"},{"key":"e_1_2_2_16_1","volume-title":"MapReduce Online. In Proceedings of the 7th USENIX Conference on Networked Systems Design and Implementation","author":"Condie Tyson","year":"2010"},{"key":"e_1_2_2_17_1","volume-title":"Oracle Stream Analytics. https:\/\/www.oracle.com\/middleware\/technologies\/stream-processing. html. [Online","author":"Oracle Corporation","year":"2019"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45241-9_3"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/1291151.1291199"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/872757.872838"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/2491956.2462161"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/TIME.2005.26"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1137\/S0097539701398363"},{"key":"e_1_2_2_24_1","volume-title":"Proceedings of the 3rd Biennial Conference on Innovative Data Systems Research (CIDR '07)","author":"Demers Alan","year":"2007"},{"key":"e_1_2_2_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10703-017-0286-7"},{"key":"e_1_2_2_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/258948.258973"},{"key":"e_1_2_2_27_1","volume-title":"http:\/\/www.espertech.com\/esper\/. [Online","author":"EsperTech Inc","year":"2019"},{"key":"e_1_2_2_28_1","volume-title":"Query and code together with Flux. https:\/\/www.influxdata.com\/products\/flux\/. [Online","author":"Flux","year":"2020"},{"key":"e_1_2_2_29_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-27764-4_9"},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.1145\/165180.165214"},{"key":"e_1_2_2_31_1","volume-title":"Proceedings of the 3rd Biennial Conference on Innovative Data Systems Research (CIDR '07)","author":"Girod Lewis","year":"2007"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2008.4497527"},{"key":"e_1_2_2_33_1","volume-title":"Proceedings of the 3rd Biennial Conference on Innovative Data Systems Research (CIDR '07)","author":"Gyllstrom Daniel","year":"2007"},{"key":"e_1_2_2_34_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2004.1320080"},{"key":"e_1_2_2_35_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10009-003-0117-6"},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.1145\/2335484.2335506"},{"key":"e_1_2_2_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093742.3095107"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1046\/j.1440-1819.1999.00527.x"},{"key":"e_1_2_2_39_1","volume-title":"InfluxDB: Real-time visibility into stacks, sensors and systems. https:\/\/www.influxdata.com\/. [Online","author":"DB","year":"2020"},{"key":"e_1_2_2_40_1","first-page":"524","volume-title":"KSQL: Streaming SQL Engine for Apache Kafka.. In EDBT. www.OpenProceedings.org","author":"Jafarpour Hojjat","year":"2019"},{"key":"e_1_2_2_41_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-44806-3_4"},{"key":"e_1_2_2_42_1","unstructured":"Gilles Kahn. 1974. The Semantics of a Simple Language for Parallel Programming. Information Processing 74 ( 1974 ) 471-475.  Gilles Kahn. 1974. The Semantics of a Simple Language for Parallel Programming. Information Processing 74 ( 1974 ) 471-475."},{"key":"e_1_2_2_43_1","volume-title":"MacQueen","author":"Kahn Gilles","year":"1977"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093333.3009880"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723372.2742788"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.1987.5009446"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1109\/PROC.1987.13876"},{"key":"e_1_2_2_48_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jlap.2008.08.004"},{"key":"e_1_2_2_49_1","doi-asserted-by":"publisher","DOI":"10.1145\/1058150.1058158"},{"key":"e_1_2_2_50_1","volume-title":"https:\/\/akka.io\/. [Online","author":"Lightbend Inc","year":"2020"},{"key":"e_1_2_2_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/564691.564698"},{"key":"e_1_2_2_53_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-44914-8_15"},{"key":"e_1_2_2_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/3062341.3062369"},{"key":"e_1_2_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/3314221.3314580"},{"key":"e_1_2_2_56_1","doi-asserted-by":"publisher","DOI":"10.1109\/TCAD.2020.3013053"},{"key":"e_1_2_2_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/1559845.1559867"},{"key":"e_1_2_2_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/2160718.2160735"},{"key":"e_1_2_2_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/1640089.1640091"},{"key":"e_1_2_2_60_1","volume-title":"Single-channel QRS detector. https:\/\/www.physionet.org\/physiotools\/wag\/sqrs-1.htm. [Online","author":"Moody George B.","year":"2018"},{"key":"e_1_2_2_61_1","volume-title":"Proceedings of the First Biennial Conference on Innovative Data Systems Research (CIDR '03)","author":"Motwani Rajeev","year":"2003"},{"key":"e_1_2_2_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/2517349.2522738"},{"key":"e_1_2_2_63_1","unstructured":"Jefrey F. Naughton David J. DeWitt David Maier Ashraf Aboulnaga Jianjun Chen Leonidas Galanis Jaewoo Kang Rajasekar Krishnamurthy Qiong Luo Naveen Prakash etal 2001. The Niagara Internet Query System. IEEE Data Engineering Bulletin ( 2001 ).  Jefrey F. Naughton David J. DeWitt David Maier Ashraf Aboulnaga Jianjun Chen Leonidas Galanis Jaewoo Kang Rajasekar Krishnamurthy Qiong Luo Naveen Prakash et al. 2001. The Niagara Internet Query System. IEEE Data Engineering Bulletin ( 2001 )."},{"key":"e_1_2_2_64_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDMW.2010.172"},{"key":"e_1_2_2_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/3035918.3035935"},{"key":"e_1_2_2_66_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-36388-2_25"},{"key":"e_1_2_2_67_1","doi-asserted-by":"publisher","DOI":"10.14778\/3137765.3137770"},{"key":"e_1_2_2_68_1","volume-title":"https:\/\/docs.oracle.com\/javase\/8\/. [Online","author":"Stream Java","year":"2019"},{"key":"e_1_2_2_69_1","doi-asserted-by":"publisher","DOI":"10.1016\/0002-8703(71)90340-1"},{"key":"e_1_2_2_70_1","doi-asserted-by":"publisher","DOI":"10.1109\/TBME.1985.325532"},{"key":"e_1_2_2_71_1","volume-title":"http:\/\/reactivex.io\/. [Online","author":"X.","year":"2020"},{"key":"e_1_2_2_72_1","volume-title":"Project Reactor: Create Eficient Reactive Systems. https:\/\/projectreactor.io\/. [Online","author":"Reactor","year":"2020"},{"key":"e_1_2_2_73_1","volume-title":"RxJava: Reactive Extensions for the JVM.","author":"RxJava","year":"2020"},{"key":"e_1_2_2_74_1","doi-asserted-by":"publisher","DOI":"10.1145\/1005566.1005568"},{"key":"e_1_2_2_75_1","doi-asserted-by":"publisher","DOI":"10.1109\/TC.2013.221"},{"key":"e_1_2_2_76_1","doi-asserted-by":"publisher","DOI":"10.1145\/2110486.2110493"},{"key":"e_1_2_2_77_1","doi-asserted-by":"publisher","DOI":"10.1145\/581478.581491"},{"key":"e_1_2_2_78_1","doi-asserted-by":"publisher","DOI":"10.1145\/224164.224221"},{"key":"e_1_2_2_79_1","doi-asserted-by":"publisher","DOI":"10.14778\/2752939.2752940"},{"key":"e_1_2_2_80_1","volume-title":"https:\/\/www.nyse.com\/. [Online","author":"Database TAQ","year":"2019"},{"key":"e_1_2_2_81_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.entcs.2004.01.029"},{"key":"e_1_2_2_82_1","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-45937-5_14"},{"key":"e_1_2_2_83_1","doi-asserted-by":"publisher","DOI":"10.1145\/2588555.2595641"},{"key":"e_1_2_2_84_1","volume-title":"Trill Documentation: Best Practices for Using Trill in Real-Time Deployments.","author":"Trill","year":"2020"},{"key":"e_1_2_2_85_1","unstructured":"Pete Tucker Kristin Tufte Vassilis Papadimos and David Maier. 2002. A benchmark for queries over data streams. http:\/\/datalab.cs.pdx.edu\/niagara\/NEXMark\/. [Online; Accessed October 15 2019 ].  Pete Tucker Kristin Tufte Vassilis Papadimos and David Maier. 2002. A benchmark for queries over data streams. http:\/\/datalab.cs.pdx.edu\/niagara\/NEXMark\/. [Online; Accessed October 15 2019 ]."},{"key":"e_1_2_2_86_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(90)90147-A"},{"key":"e_1_2_2_87_1","doi-asserted-by":"publisher","DOI":"10.1145\/1142473.1142520"},{"key":"e_1_2_2_88_1","volume-title":"Presented as part of the 9th USENIX Symposium on Networked Systems Design and Implementation (NSDI 12)","author":"Zaharia Matei"},{"key":"e_1_2_2_89_1","doi-asserted-by":"publisher","DOI":"10.1145\/2517349.2522737"},{"key":"e_1_2_2_91_1","doi-asserted-by":"publisher","DOI":"10.1109\/CIC.2003.1291140"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428251","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428251","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3428251","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T22:02:57Z","timestamp":1750197777000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3428251"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,11,13]]},"references-count":89,"journal-issue":{"issue":"OOPSLA","published-print":{"date-parts":[[2020,11,13]]}},"alternative-id":["10.1145\/3428251"],"URL":"https:\/\/doi.org\/10.1145\/3428251","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2020,11,13]]},"assertion":[{"value":"2020-11-13","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}