- From: Michael Steidl via GitHub <sysbot+gh@w3.org>
- Date: Tue, 13 Jun 2017 08:58:07 +0000
- To: public-poe-archives@w3.org
nitmws has just labeled an issue for https://github.com/w3c/poe as "bug": == 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 Tuesday, 13 June 2017 08:58:16 UTC