[poe] Issue: Evaluation of Constraints of a Rule inconsistent marked as To Be Closed

riannella has just labeled an issue for https://github.com/w3c/poe as "To Be Closed":

== Evaluation of Constraints of a Rule inconsistent ==
I refer to the Information Model document of 13 June - http://w3c.github.io/poe/model

* A Rule defines: "A Rule MAY have one or more Constraints via the constraint property. The Rule becomes effective if all of the Constraints are satisfied."
* The Compound Constraint section defines "Compound Constraints refer to two existing Atomic Constraints as the left and right operand. For example, Atomic Constraint #1 (leftOperand) must be satisfied or (operator) Atomic Constraint #2 (rightOperand) must be satisfied."
* Conclusion 1: to satisfy the Compound Constraint CC1 the Atomic Constraint AC1 can be satisfied and the Atomic Constraint AC2 does not have to be satisfied.
* Conclusion 2 : and CC1, AC1 and AC2 may all be Constraints associated with a single Rule by its constraint properties.
* An example like the one above raises a contradiction:
  - AC1 is satisfied
  - AC2 is not satisfied
  - by the or operand CC1 is satisfied
  - by the generic constraint evaluation of a Rule all its constraints (AC1, AC2 and CC1) must be satisfied - which is not the case in this example but our human eye tells us: "This Rule should become effective". More troubles would be caused by using the xor operand for CC1.

How to solve that:
A logically ok approach would be: "The Rule becomes effective if all of its Constraints are satisfied, excluded are Constraints being an operand of a Compound Constraint of this Rule." But such a design would be hard to process: first all constraints are listed, then iterated and by evaluating Compound Constraints all Constraints being an operand are removed from the list. Then all the remaining Constraints are finally evaluated.
A helper would be a new boolean property "isCompoundOperand" of Constraint, default value false. It should be set to true for Constraints which are a leftOperand or rightOperand of a Compound Constraint only. The definition used for Rule could be: "The Rule becomes effective if all of its Constraints are satisfied, excluded are Constraints being a Compound Operand".

Footnote: currently the specification of Compound Constraint doesn't tell anything about to which Rule the Compound Constraint and its Atomic Constraints must/should be applied. It would be valid if CC1 is a constraint of Rule1, AC1 of Rule2 and AC2 of Rule3. 
First: do we really support such a wide flexibility?
And: if yes I see the use of isCompoundOperand as a MUST, a processor having to find out if a constraint of a Rule is an operand of a Compound Constraint anywhere in the ODRL universe would be impossible.


See https://github.com/w3c/poe/issues/193

Received on Friday, 7 July 2017 03:19:10 UTC