DMN

DMN (Decision Model and Notation) is a modeling language for specifying decisions and rules.

Website: omg.org/dmn/, simulator: camunda.com/dmn/simulator.

The idea is to be a friendly user interface for non-programmers to specify programs. The cells of the table are written in FEEL (“Friendly Enough Expression Language”).

A single row (referred to as a “rule” in the spec) specifies the output of the input cells in the same row. Like in the example below, “in winter for 5-8 guests, serve stew”.

| Season (input) | Number of guests (input) | Dish (output) |
| Winter         |                      5-8 | Stew          |

The whole table specifies the whole problem: other rows contain different seasons and guest counts. Executing a table means giving the inputs (Spring, 12 guests) and getting the output from the table.

| Season (input) | Number of guests (input) | Dish (output)   |
| Winter         |                      5-8 | Stew            |
| -              |                     >=10 | Instant noodles |
| Spring         |                      <10 | Risotto         |

Specification

The official specification is at https://www.omg.org/spec/DMN/1.3/PDF.

Extensions

Verify and optimize

Calvanese et al (2016) Semantics and Analysis of DMN Decision Tables go beyond just executing DMN tables. They have a tool where you can verify and optimize tables, e.g. the order of the rows. http://dmn.cs.ut.ee

Constraint tables

DMN extension: Constraint tables# by Deryck et al (2019) allows FEEL expressions

DMN2RuleML

There is a tool available for converting DMN decision tables into RuleML, on which LegalRuleML# is based, called DMN2RuleML.

NLG

There’s a preliminary GF grammar for DMN tables. In order to create more fluent language, instead of “when HEADER is VALUE”. the GF grammar needs explicit constructors in the abstract syntax to create a column of e.g. event, location, time or Boolean expression.