New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Review of Evaluator Truth Tables (of 5 September) #254
Comments
Hi Michael. Thanks for the feedback. Some of your concerns can, I think, be assuaged by being clearer about the scope of the evaluator. The evaluator ensures that the flow of logic encapsulated in the IM has been correctly followed. It does no more than that. It cannot decide whether a constraint has been satisfied or a duty fulfilled. The world is simply a black box to the evaluator. What it can do though is decide whether a rule is active or not-active depending on the states reported to it: satisfied/not satisfied; fulfilled/not fulfilled. This provides a level of interoperability between implementations beyond simply validity. But it does not insist that two implementations share the same view of the world. It has no view of the world! What we're providing here are a set of expected results to which an implementation should conform. If it does so, then we know it's logical flow is consistent with the standard. We then know that two different implementations that happen to agree on the state of the world will also agree which rules are active when interpreting the same policy. That's the best we can do. And that's why the evaluator does not check against real entities. It's only told the states of rules and constraints. In Example 21 I wish I didn't have a blank header - the obligation and the consequence both have two states, so require two columns to describe them fully. Are they active or not-active, and, if they are active, are they fulfilled or not. In row one the consequence is not active because the obligation has been fulfilled. In row three the obligation has not been fulfilled, triggering the consequence. It's constraint has not been satisfied, so the consequence has not been fulfilled either. The fourth and fifth rows differ from row one because the consequence has been triggered. Maybe the tables need more commentary? In Example 22, row 3, only C1 can determine whether the duty is active or not. R1 simply has to be satisfied before D1 can be fulfilled. It has no influence on the active status of D1. In row 4, if C1 is not satisfied then D1 is not active, and we don't care about the status of R1. It has no effect. In Example 23, row 2, P1 is not active because its duty D1 has not yet been fulfilled, even though its consequence has been. Inherent in the logic of consequence is the idea that its original duty must be fulfilled too. That also explains rows 4 and 5: once the consequence has been trigged both it, and the original duty, must be fulfilled. Again, more commentary needed? Example 24 - ha! This is where these status tables really uncover the true semantics of the model. I'd say this was up for debate! Example 25 - suggestion gladly taken. Hope the tables are a little clearer now. Rows 3 and 7: refinements do not effect the active status of a rule. They speak only to fulfilment. Phew! I think this shows we have a consistent semantics that implementors can test against ... except possibly for the issue raised in Example 24. |
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:
For the three sub-classes of Rule this translates into
I comment only on Truth Tables I have a different view on - not-commented tables are ok.
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?
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
The text was updated successfully, but these errors were encountered: