An action language needs a compact set of fundamental operations from which model behavior can be expressed. This article grouped those operations into five categories:
1. **Accessor** — create, delete, relate, unrelate, read, and write model data.
2. **Transform** — perform arithmetic and other data manipulation.
3. **Generator** — synchronize with state-machine behavior.
4. **Bridge** — communicate across component boundaries.
5. **Test** — control execution with constructs such as **if** and **while**.
The categories are a way to reason about the essential capabilities of an action language in a model-driven development environment.
*Historical note: this is a short conceptual post from February 2016. The categories are presented as the author's explanatory framework, not as a complete language specification.*