Entity / Operators

Operators: questions an application names

A query body says which rows it wants with a small, fixed vocabulary: eq, contains, in, comparisons, and, or, not. An operator is a word an application adds to that vocabulary: a rule it asks in many places (published), a test the kernel does not have (a prefix match, a distance), or a value a write computes (a joined label). It is declared once, as data, and then every place a body runs means the same thing by it: the server's SQL, the client's judgement of the rows it holds, a guard's rule, an invariant, a form.

What this enables, in short:

  • A rule named once. Write "published" as an operator and use it in a public query, a visitor's Read rule and an invariant, with nothing to keep in step.
  • Search and order the kernel lacks. Text.startsWith for a code typed from its start; an application's own distance to order the nearest rows first, paged by keyset like any column.
  • Writes that compute. A field set from the row and the input where the write commits, shown on the client before the answer comes.
  • One meaning, checked. Laws an operator keeps, tested for each implementation; the in-memory and SQL implementations run against each other; a description a server can publish.