Expression Nodes
Copy
Table 4 lists dependencies between expression nodes.
Table 3: Dependencies between expression nodes
| Tag | Can contain |
| expression | implication, and, or, not, eq, ge, le, exactly-one, at-most-one, at-least-one |
| eq | variable, named-constant, constant |
| ge | variable, constant |
| le | variable, constant |
| variable | id attribute |
| named-constant | id attribute |
| constant | type |
| and | implication, and, or, not, eq, ge, le, exactly-one, at-most-one, at-least-one |
| or | implication, and, or, not, eq, ge, le, exactly-one, at-most-one, at-least-one |
| not | implication, and, or, not, eq, ge, le, exactly-one, at-most-one, at-least-one |
| implication | condition, consequence |
| condition | implication, and, or, not, eq, ge, le, exactly-one, at-most-one, at-least-one |
| consequence | implication, and, or, not, eq, ge, le, exactly-one, at-most-one, at-least-one |
| exactly-one | eq |
| at-least-one | eq |
| at-most-one | eq |
<expression>…</expression>
The <expression> node is a root node that represents the expression. Use the <expression> tag to define an expression in Boolean language.
<expression>
<and>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
<le>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</le>
</and>
</expression>
This example represents the Boolean expression for Model = Z5 AND Unit <= 10.
<eq>…</eq>
The <eq> node defines equivalence. Equivalence is defined between a Variable and a NamedConstant or Constant. <eq> has a strict content: it must include the node pair <variable> and <named-constant> or <constant>.
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
This example represents the Boolean expression for Model = Z5.
<eq>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</eq>
This example represents the Boolean expression for Unit = 10.
<ge>…</ge>
The <ge> node defines a greater than or equal to operator. This operator is defined between a Variable and a Constant. <ge> has a strict content: it must include the node pair <variable> and <constant>.
<ge>
<variable id="item_id_unit" />
<constant type="int">1</constant>
</ge>
This example represents the Boolean expression for Unit >= 10.
<le>…</le>
The <le> node defines a less than or equal to operator. This operator is defined between a Variable and a Constant. <le> has a strict content: it must include the node pair <variable> and <constant>.
<le>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</le>
This example represents the Boolean expression for Unit <= 10.
<variable id=”…”/>
The <variable> node defines a variable element. This element is used to define the first part of an equivalence. The first part of an equivalence must be the variable. The “id” attribute is required; it defines the unique identifier for the instance.
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
This example represents the Boolean expression for Model = Z5 where Model is the variable.
<named-constant id=”…”/>
The <named-constant> node defines the namedConstant element. This element is used to define the second part of an equivalence. The “id” attribute is required; it defines the unique identifier for the namedConstant instance. NamedConstant is used when a variable can have a value from a list of defined values.
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
This example represents the Boolean expression for Model = Z5 where Z5 is the named constant.
<constant>…</constant>
The <constant> node defines a constant element. This element is used to define the second part of an operation. The “type” attribute is required; it defines the Constant value type. Supported types are as follows:
- Int
- DateTime
- String
<le>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</le>
This example represents the Boolean expression for Unit <= 10 where 10 is the constant.
<and>…</and>
The <and> node defines the Boolean operation “and”. It can contain an unlimited number of allowed child tags.
<and>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
<le>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</le>
</and>
This example represents the Boolean expression for Model = Z5 AND Unit <= 10.
<or>…</or>
The <or> node defines the Boolean operation “or”. It can contain an unlimited number of allowed child tags.
<or>
<eq>
<variable id="item_id_moel" />
<named-constant id="item_id_z5" />
</eq>
<le>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</le>
</or>
This example represents the Boolean expression for Model = Z5 OR Unit <= 10.
The following is an example of an OR node using an inner AND node:
<or>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
<and>
<ge>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</ge>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z6" />
</eq>
</and>
</or>
This example represents the Boolean expression for Model = Z5 OR (Unit >= 10 AND Model = Z6).
<not>…</not>
The <not> node defines the Boolean operation “not”. Only one child node can be created within this node. The child node can contain an unlimited number of nested, allowed child nodes, as shown in the second example.
<not>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
</not>
This example represents the Boolean expression for NOT(Model = Z5).
The following example shows that the child node contained within the <not> node can have nested child nodes:
<not>
<and>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
<eq>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</eq>
</and>
</not>
This example represents the Boolean expression for NOT(Model = Z5 AND Unit = 10). It is different than NOT(Model = Z5) OR NOT(Unit = 10).
<implication>…</implication>
The <implication> node defines a Boolean operation “implication”, such as “if Model = Z6 then Unit >= 10”. This node must contain the <condition> and <consequence> child nodes. The <condition> node must precede the <consequence> node. Neither of these nodes can be empty.
<implication>
<condition>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z6" />
</eq>
</condition>
<consequence>
<ge>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</ge>
</consequence>
</implication>
This example represents the Boolean expression for IF Model = Z6 THEN Unit >= 10.
You can have an unlimited number of child nodes in condition and consequence tags as shown in the example.
The following example shows that ‘condition’ and ‘consequence’ nodes can be used with inner ‘and’ and ‘or’ nodes:
<implication>
<condition>
<or>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z6" />
</eq>
</or>
</condition>
<consequence>
<and>
<ge>
<variable id="item_id_unit" />
<constant type="int">10</constant>
</ge>
<le>
<variable id="item_id_unit" />
<constant type="int">20</constant>
</le>
</and>
</consequence>
</implication>
This example represents the Boolean expression for IF (Model = Z5 OR Model = Z6) THEN (Unit >= 10 AND Unit <= 20).
<exactly-one/>
The <exactly-one> node defines an operation. The operator describes a condition that means “one and only one of the listed equivalencies can be true”. <exactly-one> must contain a set of <eq> child nodes.
<exactly-one>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z6" />
</eq>
</exactly-one>
This example represents the Boolean expression for EXACTLY-ONE(Model = Z5 | Model = Z6).
<at-most-one />
The <at-most-one> node defines an operation. The operator describes a condition that means “either none or just one of the listed equivalencies can be true”. <at-most-one> must contain a set of <eq> child nodes.
Each equivalence in AT-MOST-ONE must use the same variable.
<at-most-one>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z6" />
</eq>
</at-most-one>
This example represents the Boolean expression for AT-MOST-ONE(Model = Z5 | Model = Z6).
<at-least-one />
The <at-least-one> node defines an operation. The operator describes a condition that means “at least one of the listed equivalencies should be true”. <at-least-one> must contain a set of <eq> child nodes:
Each equivalence in AT-LEAST-ONE must use the same variable.
<at-least-one>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z5" />
</eq>
<eq>
<variable id="item_id_model" />
<named-constant id="item_id_z6" />
</eq>
</at-least-one>
This example represents the Boolean expression for AT-LEAST-ONE(Model = Z5 | Model = Z6).