Process Query Language (PQL) is a special-purpose programming language for managing process models based on information about process instances that these models describe. PQL programs are called queries.
PQL is a declarative language that is based upon temporal logic. Temporal logic is an extension of traditional propositional logic with operators that refer to the behavior of systems over time. These behavioral operators, called predicates in PQL, provide PQL with a mathematically precise means for expressing properties about the relation between activities and events in process instances.
The concrete syntax of PQL is inspired by SQL — a programming language for managing data stored in relational database management systems. The rationale behind this design decision is threefold:
- PQL and SQL serve the same overarching purpose — retrieval of information.
- SQL is a widely used standard that is well-recognized by technical specialists.
- The concrete syntax of SQL was often recommended for PQL by the interviewed process analysts.
The design of the PQL language follows seven principles:
- Compactness: PQL queries should allow capturing intents in short, succinct programs that avoid ungrounded code redundancy.
- Decidability: PQL queries should be solvable by algorithms on a wide range of inputs.
- Efficiency: PQL queries should require reasonable and attainable amounts of computational resources.
- Expressiveness: PQL queries should allow describing many ideas.
- Intuitiveness: PQL queries should be easy-to-read and easy to comprehend.
- Portability: PQL queries should be independent of execution environments and data formats.
- Usefulness: PQL queries should allow fulfilling many practical tasks.