Label
Description
XPath
Business Knowledge Model $dmn//n1:businessKnowledgeModel
Compliance Level 2 Tests that do not require any capability beyond that required by conformance level 2
Compliance Level 3 Full capability of DMN with being restricted to a compliance level
Context $dmn//n1:context
Decision Table: Multiple Output Decision tables that have more than one output column $dmn//n1:decisionTable[count(n1:output) gt 1]
Decision Table: Single Output Decision table with only a single output column $dmn//n1:decisionTable[count(n1:output) = 1]
FEEL Constants Tests feel constants, like true, false, numbers and strings
FEEL Arithmetic Formulas that test FEEL arithmetic operators $dmn//n1:text[matches(.,'\b\s*(\+|\-|\*|/)')]
FEEL Conditionals Formulas that test FEEL conditional operators and structures (if..then..else) $dmn//n1:text[matches(.,'\bif\b')]
FEEL Context Defined as literal expression using {""key1"": e1, ""key2"": e2, ... }
FEEL Filter (10.3.2.5) $dmn//n1:text[matches(.,'\[((?!\.\.)[^,])+\]')]
FEEL Function Literals Formulas containing anonymous functions $dmn//n1:text[matches(.,'\bfunction\s*\(')]
FEEL Functions: date and time $dmn//n1:text[matches(.,'\b(date|time|duration)\s*\(')]
FEEL Functions: lists $dmn//n1:text[matches(.,'\b(list contains|count|min|max|mean|and|or|sublist|append|concatenate|insert before|remove|reverse|index of|union|distinct values|flatten)\s*\(')]
FEEL Functions: strings $dmn//n1:text[matches(.,'\b(string|substring|string length|upper case|lower case|substring before|substring after|replace|starts with|ends with|matches)\s*\(')] | $dmn//n1:text[matches(.,'contains\s*\((?<!list )')]
FEEL Functions: numeric $dmn//n1:text[matches(.,'\b(number|floor|ceiling|decimal)\s*\(')]
FEEL Iteration Formulas containing for..in..return $dmn//n1:text[matches(.,'\bfor \.*\bin ')]
FEEL List Operator [e1, e2, ...]
FEEL Quantifiers Formulas containing some/every..in..satisfies $dmn//n1:text[matches(.,'\b(some |every )\.*\bin ')]
FEEL Relation [{""key1"": e11, ""key2"": e12, ...}{""key1"": e21, ""key2"": e22, ...}...]
FEEL Special-character Names Tests with variables that have names with spaces or other non alphanumerica characters and for which the expression does not surround the name with single quotes or any other special treatment. Name might contain operators. $dmn//n1:variable/@name[matches(.,'(\s|\.|\+|\-|\''|\*|/)')]
Function Definition Named function definition other than BKM, e.g. context entry. (Anonymous function definition listed under FEEL Function Literals $dmn//n1:functionDefinition
Function Invocation Invocation expression type (boxed invocation). $dmn//n1:invocation
Literal Function Invocation Invocation of user-defined function from literal expression
Hit Policy: ANY Decision tables with the hit policy ANY $dmn//n1:decisionTable[@hitPolicy='ANY']
Hit Policy: COLLECT Decision tables with the hit policy COLLECT $dmn//n1:decisionTable[@hitPolicy='COLLECT']
Hit Policy: PRIORITY Decision tables with the hit policy PRIORITY $dmn//n1:decisionTable[@hitPolicy='PRIORITY']
Hit Policy: UNIQUE Decision tables with the hit policy UNIQUE $dmn//n1:decisionTable[@hitPolicy='UNIQUE' or not(@hitPolicy)]
Hit Policy: FIRST
Hit Policy: OUTPUT ORDER
Hit Policy: RULE ORDER
Item Definition $dmn//n1:itemDefinition
Literal Expression $dmn//n1:literalExpression
Relation $dmn//n1:relation
Data Type: String $dmn//n1:typeRef[contains(lower-case(.),':string')]|$dmn//@typeRef[contains(lower-case(.),':string')]
Data Type: Number $dmn//n1:typeRef[contains(lower-case(.),':number')]|$dmn//@typeRef[contains(lower-case(.),':number')]
Data Type: Structure Type has components $dmn//n1:itemDefinition/n1:itemComponent
Data Type: Collection $dmn//n1:itemDefinition[@isCollection=true()]|$dmn//n1:itemDefinition//n1:itemComponent[@isCollection=true()]
Data Type: Date $dmn//n1:typeRef[matches(.,':date(?! and time)')]|$dmn//@typeRef[matches(.,':date(?! and time)')]
Data Type: Time $dmn//n1:typeRef[matches(.,':time\b')]|$dmn//@typeRef[matches(.,':time\b')]
Data Type: Date and Time $dmn//n1:typeRef[matches(.,':date and time')]|$dmn//@typeRef[matches(.,':date and time')]
Data Type: Days and Time Duration $dmn//n1:typeRef[contains(.,':days and time duration')]|$dmn//@typeRef[contains(.,':days and time duration)')]
Data Type: Years and Months Duration $dmn//n1:typeRef[contains(.,':years and months duration')]|$dmn//@typeRef[contains(.,':years and months duration)')]
Data Type: Boolean $dmn//n1:typeRef[contains(lower-case(.),':boolean')]|$dmn//@typeRef[contains(lower-case(.),':boolean')]