{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,3]],"date-time":"2026-05-03T02:37:11Z","timestamp":1777775831226,"version":"3.51.4"},"reference-count":95,"publisher":"Emerald","issue":"1","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2016,6,14]]},"abstract":"<jats:p>Database management systems (DBMS) typically provide an application programming interface for users to issue queries using query languages such as SQL. Many such languages were originally designed for business data processing applications. While these applications are still relevant, two other classes of applications have become important users of data management systems: (a) web applications that issue queries programmatically to the DBMS, and (b) data analytics involving complex queries that allow data scientists to better understand their datasets. Unfortunately, existing query languages provided by database management systems are often far from ideal for these application domains.<\/jats:p>\n                  <jats:p>In this tutorial, we describe a set of technologies that assist users in specifying database queries for different application domains. The goal of such systems is to bridge the gap between current query interfaces provided by database management systems and the needs of different usage scenarios that are not well served by existing query languages. We discuss the different interaction modes that such systems provide and the algorithms used to infer user queries. In particular, we focus on a new class of systems built using program synthesis techniques, and furthermore discuss opportunities in combining synthesis and other methods used in prior systems to infer user queries.<\/jats:p>","DOI":"10.1561\/2500000018","type":"journal-article","created":{"date-parts":[[2016,6,14]],"date-time":"2016-06-14T11:51:01Z","timestamp":1465905061000},"page":"1-94","source":"Crossref","is-referenced-by-count":7,"title":["Computer-Assisted Query Formulation"],"prefix":"10.1108","volume":"3","author":[{"given":"Alvin","family":"Cheung","sequence":"first","affiliation":[{"name":"University of Washington"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Armando","family":"Solar-Lezama","sequence":"additional","affiliation":[{"name":"MIT CSAIL"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"140","published-online":{"date-parts":[[2016,6,14]]},"reference":[{"issue":"12","key":"2026032910222371700_ref001","doi-asserted-by":"crossref","first-page":"1938","DOI":"10.14778\/2367502.2367542","article-title":"Playful query specification with DataPlay","volume":"5","author":"Abouzied","year":"2012","journal-title":"VLDB Endowment"},{"key":"2026032910222371700_ref002","first-page":"49","article-title":"Learning and verifying quantified boolean queries by example","author":"Abouzied"},{"key":"2026032910222371700_ref003","first-page":"233","article-title":"Automatic loop interchange","author":"Allen"},{"key":"2026032910222371700_ref004","first-page":"1","article-title":"Syntax-guided synthesis","volume-title":"Formal Methods in Computer-Aided Design","author":"Alur","year":"2013"},{"issue":"1","key":"2026032910222371700_ref005","doi-asserted-by":"crossref","first-page":"29","DOI":"10.1017\/S135132490000005X","article-title":"Natural language interfaces to databases - an introduction","volume":"1","author":"Androutsopoulos","year":"1995","journal-title":"Natural Language Engineering"},{"key":"2026032910222371700_ref006","doi-asserted-by":"crossref","first-page":"147","DOI":"10.1023\/A:1022689015665","article-title":"Learning conjunctions of horn clauses","volume":"9","author":"Angluin","year":"1992","journal-title":"Machine Learning"},{"key":"2026032910222371700_ref007","doi-asserted-by":"crossref","article-title":"An experiment in formal design using meta-properties","author":"Bickford","DOI":"10.1109\/DISCEX.2001.932162"},{"issue":"1","key":"2026032910222371700_ref008","first-page":"1","article-title":"Andreas Blass and Yuri Gurevich","volume":"2","year":"2001","journal-title":"Inadequacy of computable loop invariants"},{"key":"2026032910222371700_ref009","volume-title":"Classification and Regression Trees","author":"Breiman","year":"1984"},{"key":"2026032910222371700_ref010","first-page":"277","article-title":"Derivation of glue code for agent interoperation","author":"Burstein"},{"key":"2026032910222371700_ref011","article-title":"Query steering for interactive data exploration","author":"\u00c7etintemel"},{"key":"2026032910222371700_ref012","first-page":"3","article-title":"Query recommendations for interactive database exploration","author":"Chatzopoulou"},{"key":"2026032910222371700_ref013","first-page":"411","article-title":"Automatically generating interesting events with LifeJoin","author":"Cheung"},{"key":"2026032910222371700_ref014","first-page":"1732","article-title":"Using program synthesis for social recommendations","author":"Cheung"},{"key":"2026032910222371700_ref015","first-page":"3","article-title":"Optimizing database-backed applications with query synthesis","author":"Cheung"},{"key":"2026032910222371700_ref016","first-page":"931","article-title":"Sloth: being lazy is a virtue (when issuing database queries)","author":"Cheung"},{"key":"2026032910222371700_ref017","first-page":"51","article-title":"Bridging the gap between general-purpose and domain-specific compilers with synthesis","author":"Cheung"},{"key":"2026032910222371700_ref018","first-page":"241","article-title":"Learning decision trees for unbalanced data","author":"Cieslak"},{"key":"2026032910222371700_ref019","doi-asserted-by":"crossref","first-page":"154","DOI":"10.1007\/10722167_15","article-title":"Counterexample-guided abstraction refinement","volume-title":"Computer Aided Verification","author":"Clarke","year":"2000"},{"issue":"6","key":"2026032910222371700_ref020","doi-asserted-by":"crossref","first-page":"377","DOI":"10.1145\/362384.362685","article-title":"A relational model of data for large shared data banks","volume":"13","author":"Codd","year":"1970","journal-title":"Communications of the ACM"},{"key":"2026032910222371700_ref021","first-page":"266","article-title":"Links: Web programming without tiers","author":"Cooper"},{"key":"2026032910222371700_ref022","first-page":"316","article-title":"Making smalltalk a database system","author":"Copeland"},{"key":"2026032910222371700_ref023","volume-title":"An introduction to database systems (7th ed.)","author":"Date","year":"2000"},{"key":"2026032910222371700_ref024","first-page":"222","article-title":"Exploiting symmetry in SMT problems","author":"D\u00e9harbe"},{"issue":"8","key":"2026032910222371700_ref025","doi-asserted-by":"crossref","first-page":"453","DOI":"10.1145\/360933.360975","article-title":"Guarded commands, nondeterminacy and formal derivation of programs","volume":"18","author":"Dijkstra","year":"1975","journal-title":"Communications of the ACM"},{"key":"2026032910222371700_ref026","first-page":"517","article-title":"Explore-by-example: an automatic query steering framework for interactive data exploration","author":"Dimitriadou"},{"key":"2026032910222371700_ref027","unstructured":"Django\n          . http:\/\/www.djangoproject.com. Accessed: 2014-11-22."},{"key":"2026032910222371700_ref028","first-page":"19","article-title":"Assigning meanings to programs","volume":"19","author":"Floyd","year":"1967","journal-title":"American Mathematical Society Symposia on Applied Mathematics"},{"key":"2026032910222371700_ref029","first-page":"144","article-title":"Generating accurate rule sets without global optimization","author":"Frank"},{"key":"2026032910222371700_ref030","volume-title":"The Science of Programming","author":"Gries","year":"1987"},{"key":"2026032910222371700_ref031","first-page":"803","article-title":"NLyze: interactive programming by natural language for spreadsheet data analysis and manipulation","author":"Gulwani"},{"key":"2026032910222371700_ref032","first-page":"62","article-title":"Synthesis of loop-free programs","author":"Gulwani"},{"issue":"8","key":"2026032910222371700_ref033","doi-asserted-by":"crossref","first-page":"97","DOI":"10.1145\/2240236.2240260","article-title":"Spreadsheet data manipulation using examples","volume":"55","author":"Gulwani","year":"2012","journal-title":"Communications of the ACM"},{"key":"2026032910222371700_ref034","first-page":"1157","article-title":"An introduction to variable and feature selection","volume":"3","author":"Guyon","year":"2003","journal-title":"Journal of Machine Learning Research"},{"issue":"10","key":"2026032910222371700_ref035","doi-asserted-by":"crossref","first-page":"576","DOI":"10.1145\/363235.363259","article-title":"An axiomatic basis for computer programming","volume":"12","author":"Hoare","year":"1969","journal-title":"Communications of the ACM"},{"key":"2026032910222371700_ref036","volume-title":"Information technology -Database languages - SQL - Part 3: Call-Level Interface (SQL\/CLI)","author":"International Organization for Standardization","year":"2008"},{"key":"2026032910222371700_ref037","volume-title":"Information technology - Database languages - SQL - Part 4: Persistent Stored Modules (SQL\/PSM)","author":"International Organization for Standardization","year":"2011"},{"key":"2026032910222371700_ref038","unstructured":"itracker Issue Management System\n          . http:\/\/itracker.sourceforge.net\/index.html. Accessed: Apr 5, 2016."},{"key":"2026032910222371700_ref039","first-page":"251","article-title":"HadoopToSQL: a mapReduce query optimizer","author":"Iu"},{"key":"2026032910222371700_ref040","first-page":"84","article-title":"JReq: Database queries in imperative languages","author":"Iu"},{"key":"2026032910222371700_ref041","unstructured":"Java Persistence 2.0 Expert Group\n          . Java Persistence API. http:\/\/jcp.org\/aboutJava\/communityprocess\/final\/jsr317, 2009."},{"key":"2026032910222371700_ref042","unstructured":"JBoss\n          . Hibernate documentation. http:\/\/www.hibernate.org. Accessed: 2014-11-22."},{"key":"2026032910222371700_ref043","unstructured":"JDBC 4.2 Expert Group\n          . JDBC 4.2 API. http:\/\/jcp.org\/aboutJava\/communityprocess\/mrel\/jsr221, 2014."},{"key":"2026032910222371700_ref044","first-page":"215","article-title":"Oracle-guided component-based program synthesis","author":"Jha"},{"issue":"12","key":"2026032910222371700_ref045","doi-asserted-by":"crossref","first-page":"1342","DOI":"10.14778\/2536274.2536311","article-title":"GestureQuery: A multi-touch database query interface","volume":"6","author":"Jiang","year":"2013","journal-title":"VLDB Endowment"},{"key":"2026032910222371700_ref046","unstructured":"jOOQ\n          . http:\/\/www.jooq.org. Accessed: 2014-11-22."},{"key":"2026032910222371700_ref047","doi-asserted-by":"crossref","article-title":"Verified lifting of stencil computations","author":"Kamil","DOI":"10.1145\/2908080.2908117"},{"key":"2026032910222371700_ref048","first-page":"33633372","article-title":"Wrangler: Interactive visual specification of data transformation scripts","author":"Kandel"},{"key":"2026032910222371700_ref049","article-title":"A case for a collaborative query management system","author":"Khoussainova"},{"issue":"1","key":"2026032910222371700_ref050","doi-asserted-by":"crossref","first-page":"22","DOI":"10.14778\/1880172.1880175","article-title":"SnipSuggest: Context-aware autocompletion for SQL","volume":"4","author":"Khoussainova","year":"2010","journal-title":"VLDB Endowment"},{"issue":"12","key":"2026032910222371700_ref051","doi-asserted-by":"crossref","first-page":"2416","DOI":"10.1109\/TVCG.2013.191","article-title":"SketchStory: Telling more engaging stories with data through freeform sketching","volume":"19","author":"Lee","year":"2013","journal-title":"IEEE Transactions on Visualization and Computer Graphics"},{"issue":"1","key":"2026032910222371700_ref052","doi-asserted-by":"crossref","first-page":"73","DOI":"10.14778\/2735461.2735468","article-title":"Constructing an interactive natural language interface for relational databases","volume":"8","author":"Li","year":"2014","journal-title":"VLDB Endowment"},{"key":"2026032910222371700_ref053","first-page":"709","article-title":"NaLIR: an interactive natural language interface for querying relational databases","author":"Li"},{"issue":"4","key":"2026032910222371700_ref054","doi-asserted-by":"crossref","DOI":"10.1145\/1292609.1292620","article-title":"NaLIX: A generic natural language search environment for XML data","volume":"32","author":"Li","year":"2007","journal-title":"ACM Transactions on Database Systems"},{"key":"2026032910222371700_ref055","unstructured":"Guy\n              Lohman\n            \n          . Is Query Optimization a \u201cSolved\u201d Problem? http:\/\/wp.sigmod.org\/?author=20, 2014. Accessed: 2014-11-22."},{"key":"2026032910222371700_ref056","volume-title":"Quicksilver: Automatic synthesis of relational queries","author":"Lu","year":"2013"},{"issue":"8","key":"2026032910222371700_ref057","doi-asserted-by":"crossref","first-page":"674","DOI":"10.1109\/32.153379","article-title":"Fundamentals of deductive program synthesis","volume":"18","author":"Manna","year":"1992","journal-title":"IEEE Transactions on Software Engineering"},{"issue":"1-2","key":"2026032910222371700_ref058","doi-asserted-by":"crossref","first-page":"5","DOI":"10.1016\/0167-6423(81)90004-6","article-title":"Deductive synthesis of the unification algorithm","volume":"1","author":"Manna","year":"1981","journal-title":"Science of Computer Programming"},{"key":"2026032910222371700_ref059","unstructured":"Microsoft\n          . z3 Theorem Prover. http:\/\/research.microsoft.com\/en-us\/um\/redmond\/projects\/z3. Accessed: Apr 5, 2016."},{"key":"2026032910222371700_ref060","first-page":"138","article-title":"Polyglot: An extensible compiler framework for Java","author":"Nystrom"},{"key":"2026032910222371700_ref061","first-page":"408","article-title":"Test-driven synthesis","author":"Perelman"},{"key":"2026032910222371700_ref062","first-page":"396","article-title":"Chlorophyll: Synthesis-aided compiler for low-power spatial architectures","author":"Mangpo Phothilimthana"},{"key":"2026032910222371700_ref063","first-page":"39","article-title":"Extensible\/rule based query rewrite optimization in Starburst","author":"Pirahesh"},{"key":"2026032910222371700_ref064","first-page":"149","article-title":"Towards a theory of natural language interfaces to databases","author":"Popescu"},{"key":"2026032910222371700_ref065","doi-asserted-by":"crossref","article-title":"Modern natural language interfaces to databases: Composing statistical parsing with semantic tractability","author":"Popescu","DOI":"10.3115\/1220355.1220376"},{"issue":"4","key":"2026032910222371700_ref066","doi-asserted-by":"crossref","first-page":"626","DOI":"10.1145\/169725.169716","article-title":"The deductive synthesis of database transactions","volume":"18","author":"Qian","year":"1993","journal-title":"ACM Transactions on Database Systems"},{"key":"2026032910222371700_ref067","first-page":"71","article-title":"Data abstraction, views and updates in RIGEL","author":"Rowe"},{"key":"2026032910222371700_ref068","first-page":"105","article-title":"Parametric shape analysis via 3-valued logic","author":"Sagiv"},{"key":"2026032910222371700_ref069","first-page":"168","article-title":"Discovery-driven exploration of olap data cubes","author":"Sarawagi"},{"key":"2026032910222371700_ref070","first-page":"89","article-title":"Synthesizing view definitions from data","author":"Das Sarma"},{"key":"2026032910222371700_ref071","first-page":"305","article-title":"Stochastic superoptimization","author":"Schkufza"},{"key":"2026032910222371700_ref072","first-page":"9","article-title":"Stochastic optimization of floating-point programs with tunable precision","author":"Schkufza"},{"issue":"3","key":"2026032910222371700_ref073","doi-asserted-by":"crossref","first-page":"247","DOI":"10.1145\/320557.320568","article-title":"Some high level language constructs for data of type relation","volume":"2","author":"Schmidt","year":"1977","journal-title":"ACM Transactions Database Systems"},{"key":"2026032910222371700_ref074","first-page":"450","article-title":"Complex query decorrelation","author":"Seshadri"},{"key":"2026032910222371700_ref075","volume-title":"Active learning literature survey","author":"Settles","year":"2010"},{"key":"2026032910222371700_ref076","first-page":"15","article-title":"Automated feedback generation for introductory programming assignments","author":"Singh"},{"key":"2026032910222371700_ref077","first-page":"404","article-title":"Combinatorial sketching for finite programs","author":"Solar-Lezama"},{"key":"2026032910222371700_ref078","unstructured":"Squeryl\n          . Squeryl: A Scala ORM for SQL Databases. http:\/\/squeryl.org. Accessed: 2014-11-22."},{"key":"2026032910222371700_ref079","first-page":"223","article-title":"Program verification using templates over predicate abstraction","author":"Srivastava"},{"key":"2026032910222371700_ref080","article-title":"Data cura-tion at scale: The data tamer system","author":"Stonebraker"},{"key":"2026032910222371700_ref081","first-page":"553","article-title":"C-store: A column-oriented DBMS","author":"Stonebraker"},{"key":"2026032910222371700_ref082","unstructured":"Singaram\n              Subramanian\n            \n          . How to Identify and Resolve Hibernate N+1 SELECT\u2019s Problems. http:\/\/architects.dzone.com\/articles\/how-identify-and-resilve-n1. Accessed: 2015-01-12."},{"key":"2026032910222371700_ref083","unstructured":"Tableau Software\n          . http:\/\/www.tableausoftware.com. Accessed: 2014-11-22."},{"key":"2026032910222371700_ref084","first-page":"632","article-title":"Kodkod: a relational model finder","author":"Torlak"},{"key":"2026032910222371700_ref085","first-page":"535","article-title":"Query by output","author":"Trung Tran"},{"issue":"6","key":"2026032910222371700_ref086","doi-asserted-by":"crossref","first-page":"533","DOI":"10.1016\/S0747-7171(89)80040-9","article-title":"Deductive synthesis of sorting programs","volume":"7","author":"Traugott","year":"1989","journal-title":"Journal of Symbolic Computation"},{"key":"2026032910222371700_ref087","first-page":"87","article-title":"TAJ: effective taint analysis of web applications","author":"Tripp"},{"key":"2026032910222371700_ref088","first-page":"287","article-title":"TRANSIT: specifying protocols with concolic snippets","author":"Udupa"},{"key":"2026032910222371700_ref089","first-page":"187","article-title":"Compositional pointer and escape analysis for java programs","author":"Whaley"},{"key":"2026032910222371700_ref090","first-page":"199","article-title":"Extracting queries by static analysis of transparent persistence","author":"Wiedermann"},{"key":"2026032910222371700_ref091","first-page":"19","article-title":"Interprocedural query extraction for transparent persistence","author":"Wiedermann"},{"key":"2026032910222371700_ref092","unstructured":"Wilos Orchestration Software\n          . http:\/\/www.ohloh.net\/p\/6390. Accessed: Apr 5, 2016."},{"key":"2026032910222371700_ref093","first-page":"351","article-title":"Scalable error detection using boolean satisfiability","author":"Xie"},{"key":"2026032910222371700_ref094","first-page":"224","article-title":"Automatically synthesizing SQL queries from input-output examples","author":"Zhang"},{"key":"2026032910222371700_ref095","first-page":"1","article-title":"Query-by-example: The invocation and definition of tables and forms","author":"Zloof"}],"container-title":["Foundations and Trends\u00ae in Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/www.emerald.com\/ftpgl\/article-pdf\/3\/1\/1\/11025459\/2500000018en.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/www.emerald.com\/ftpgl\/article-pdf\/3\/1\/1\/11025459\/2500000018en.pdf","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,4,29]],"date-time":"2026-04-29T18:16:47Z","timestamp":1777486607000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.emerald.com\/ftpgl\/article\/3\/1\/1\/1326565\/Computer-Assisted-Query-Formulation"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2016,6,14]]},"references-count":95,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2016,6,14]]}},"URL":"https:\/\/doi.org\/10.1561\/2500000018","relation":{},"ISSN":["2325-1107","2325-1131"],"issn-type":[{"value":"2325-1107","type":"print"},{"value":"2325-1131","type":"electronic"}],"subject":[],"published":{"date-parts":[[2016,6,14]]}}}