[poe] Review of Evaluator Truth Tables (of 5 September)

nitmws has just created a new issue for https://github.com/w3c/poe:

== Review of Evaluator Truth Tables (of 5 September) ==
This is a review of the Truth Tables of an ODRL Evaluator as shown in https://www.w3.org/2016/poe/wiki/Evaluator - version of 5 September:

What is stated exactly by Not-/Active - see #245 - has not been clarified yet, my assumption from how it is used in the Truth Tables:
* Active = can be used for further evaluation or other ODRL processing
* Not-Active = cannot be used ...

For the three sub-classes of Rule this translates into
* Permission: if Active the action of the Permission may be exercised
* Prohibition: I can't draw a direct conclusion because of the very few Prohibitions in the examples. See comment on example 24
* Duty: the state Active is required as prerequisite for stating a Duty has been Not-/Fulfilled, this depends on taking the action of the Duty. By that three states of Duty have to be considered by a Rule referring to it: Fulfilled, Not-Fulfilled, Not-Active

I comment only on Truth Tables I have a different view on - not-commented tables are ok.
* Example 16 + 17: why does the Evaluator evaluate the target and the assignee? This is not done for any other example. And the shown conclusion is not easy to follow: to be able to evaluate the state Not-/Satisfied of the refinement in example 17 it is required to have a real entity to be matched against this refinement and this requires to match the entity first against the PartyCollection. (Similar issue with example 16) A Truth Table about such examples needs to include the state of a "is the entity a member of the Collection" evaluation.
* Example 20: An Obligation is an instance of a Duty Class and the full evaluation state of a Duty is: Not-/Fulfilled. The shown Truth Table does not take the action into account. But this should be done by the Duty Class specification: https://w3c.github.io/poe/model/#duty
* Example 21: columns with a blank header need one defining what the state in the rows below is about. 
The second column shows Not/Fulfilled states. It looks like the state of the Obligation as Duty without taking the consequence into account. Conclusion: if an Obligation (=Duty) is Not-Fulfilled (= the action has not been exercised) after this first round of evaluation a second round is entered to evaluate the consequence too. 
And: where is the final state of the Obligation - after having taken into account consequences, if required?
  * the 1st row shows Cq1=Not Active: by what evaluation has the consequence been de-activated? But: having exercised the action of a Duty does not require to evaluate any existing consequences, therefore the Cq1 value is not relevant for the evaluation of the Obligation/Duty.
  * The 3rd row shows that Cq1 is Active despite of a Not-Satisfied refinement R1 - this is wrong.
  * The 4th and the 5th row show if fact the same as row 1 - but now the refinement is taken into account. As said above: if the action of a Duty has been exercised - and this is reflected by the Fulfilled state in the 2nd column - consequences don't need to be evaluated. Therefore these two rows are misleading. (In fact the final state of Obligation must be Fulfilled for both rows.)
* Example 22: (only match the JSON-LD in the IM with the Truth Tables - regardless of issues with the semantics)
This example shows related/referenced Rules: the Permission Rule references a Duty Rule by a duty property. The rule for evaluating constraints and refinements of a Rule is therefore: this evaluation needs to be done independently for the constraints of the Permission and the refinements of its action AND for the constraints of the Duty and the refinements of its action!
Conclusion: C1 and R1 have a direct impact on D1 only, and only the state of D1 has an impact on P1
Going over the Truth Tables - guessing the column with the blank header is the state of D1
  * row 1 + 2: ok
  * row 3: if R1 is Not-Satisfied, Duty D1 cannot be Active. 
  * row 4: C1 is shown as Not-Satisfied. Why does R1 show no state? Because of the Rule "if any consequence or refinement is Not-Satisfied the consequence+remedy evaluation results in Not-Satisfied"? The other cells of the row are ok.
* Example 23: re the columns with blank headers: see Example 21 comments above.
  * row 2: why is P1 not Active, the duty has been finally fulfilled by Fulfill-ing  the consequence
  * row 4: why does it show states for Cq1 and the next column as Cq1 is not relevant, the action of the Duty has been exercised.
  * row 5: if the action of a Duty has been exercised it is not required to fulfill a consequence - a Not-Fulfilled consequence cannot set a Permission to Not-Active in this case.
* Example 24: a Truth Table has to include if the action of a Prohibition has been exercised or not as this is the trigger of the relevance of a remedy.
  * row 3: why does exercising the disallowed action and then fulfilling the remedy set the Prohibition to Not-Active? It must be the same state as "the disallowed action has not been exercised" - but this state is not shown in the Tables and the semantics of "a Prohibition is Active" (or ... Not-Active) are not defined.
* Example 25: the headings show an issue: at first sight C1 and C2 are constraints side by side, but they aren't: C2 is a constraint on the Duty and not on the Permission. Suggestion: use "D1.C2" and "D1.R1".
  * row 3 + 7: R1 of D1 is Not-Satisfied, therefore D1 must be Not-Active


Please view or discuss this issue at https://github.com/w3c/poe/issues/254 using your GitHub account

Received on Monday, 11 September 2017 09:26:02 UTC