- From: simon via GitHub <sysbot+gh@w3.org>
- Date: Wed, 30 Aug 2017 10:06:22 +0000
- To: public-poe-archives@w3.org
> Perhaps, the rule-level "Active"/"Not-Active" should be changed to "Applicable"/"Not-Applicable" to reduce any potential confusion with the states of the individual rules?
well, depending on the use case we may actually need both:
## UC1: Identify all _(currently) active_ rules of a policy
https://www.w3.org/2016/poe/wiki/Evaluator:
> The task of an ODRL Evaluator is to determine which ~~Permission(s) or Prohibitions~~ _Rules_ are in effect.
**Example:**
```turtle
:policy101 a odrl:Set ;
### active ###
odrl:permission [
odrl:action odrl:print ;
] .
:policy102 a odrl:Set ;
### not active ###
odrl:permission [
odrl:action odrl:print ;
odrl:constraint [
odrl:leftOperand odrl:dateTime;
odrl:operator odrl:lt ;
odrl:rightOperand "2000-12-31" ;
]
] .
:policy103 a odrl:Set ;
### active ###
odrl:permission [
odrl:action odrl:print ;
] ;
### active ###
odrl:prohibition [
odrl:action odrl:display ;
] .
:policy104 a odrl:Set ;
### not active ###
odrl:obligation [
odrl:action odrl:inform ;
odrl:constraint [
odrl:leftOperand odrl:dateTime;
odrl:operator odrl:lt ;
odrl:rightOperand "2000-12-31" ;
]
] ;
### active ###
odrl:obligation [
odrl:action odrl:compensate;
odrl:constraint [
odrl:leftOperand odrl:dateTime;
odrl:operator odrl:gt ;
odrl:rightOperand "2000-12-30" ;
]
] .
```
----
## UC2: Determine whether an ODRL Rule is _applicable_ for a given asset and/or assignee
>From [ODRL Evaluator Rules by @philA](https://lists.w3.org/Archives/Public/public-poe-wg/2017May/0042.html):
> An ODRL Evaluator determines **whether an ODRL Rule is in effect for a
given asset**. It MAY assume that the given ODRL Policy has been validated
by an ODRL Validator.
[...]
The latter example implies that an OE must also be able to accept a
third parameter: the assignee. So you can ask it questions like, **"is
Policy X in effect for Asset Y for Assignee Z?"**
as well as
@nitmws in [How Rules become Active](https://github.com/w3c/poe/issues/221) #221:
> This raises the question: a Rule may have also an assigner and an assignee and should have a target - should they be matched too against the value of a planned action?
>
> In other words: **is a Rule with assignee = "http://examples.com/company/4711" active if it is evaluated by assignee = "http://examples.com/company/9912"?**
>
> I guess ODRL users will expect it is not-active, as this is the same situation as with not satisfied Constraint(s).
**Example:**
```turtle
:policy201 a odrl:Set ;
### active ###
odrl:permission [
odrl:target :Asset1 ;
odrl:assignee :Alice ;
odrl:action odrl:print ;
] .
```
**Q:** Is `:Alice` permitted to print `:Asset1`?
**A:** Yes (permission is active and applicable)
**Q:** Is `:Bob` permitted to print `:Asset1`?
**A:** n/a (no applicable permission)
**Q:** Is `:Alice` permitted to print `:Asset2`?
**A:** n/a (no applicable permission)
----
```turtle
:policy202 a odrl:Set ;
### not active ###
odrl:permission [
odrl:target :Asset1 ;
odrl:assignee :Alice ;
odrl:action odrl:print ;
odrl:constraint [
odrl:leftOperand odrl:dateTime;
odrl:operator odrl:lt ;
odrl:rightOperand "2000-12-31" ;
]
] .
```
**Q:** Is `:Alice` permitted to print `:Asset1`?
**A:** no or n/a (permission is applicable but not active)
**Q:** Is `:Bob` permitted to print `:Asset1`?
**A:** n/a (no applicable permission)
**Q:** Is `:Alice` permitted to print `:Asset2`?
**A:** n/a (no applicable permission)
----
```turtle
:policy203 a odrl:Set ;
### active ###
odrl:permission [
odrl:target :Asset1 ;
odrl:assignee :Alice ;
odrl:action odrl:print ;
] ;
### active ###
odrl:prohibition [
odrl:target :Asset2 ;
odrl:assignee :Alice, :Bob ;
odrl:action odrl:display ;
] .
```
**Q:** Is `:Alice` permitted to print `:Asset1`?
**A:** yes (permission is active and applicable)
**Q:** Is `:Bob` permitted to print `:Asset1`?
**A:** n/a (no applicable permission)
**Q:** Is `:Alice` permitted to display `:Asset2`?
**A:** no (prohibition is active and applicable)
**Q:** Is `:Bob` permitted to display `:Asset2`?
**A:** no (prohibition is active and applicable)
----
## UC3: Conflict Detection/Resolution
http://w3c.github.io/poe/model/#conflict:
> The conflict property is used to establish strategies to resolve conflicts that arise from the merging of Policies or conflicts between Permissions and Prohibitions in the same Policy.
**Example:**
```turtle
:policy301 a odrl:Set ;
### active ###
odrl:permission [
odrl:target :Asset1 ;
odrl:assignee :Alice ;
odrl:action odrl:print ;
] ;
### active ###
odrl:prohibition [
odrl:target :Asset1 ;
odrl:assignee :Alice ;
odrl:action odrl:print ;
] .
```
**Q:** Is `:policy301` valid?
**A:** no (both permission and prohibition are active, apply to the same assignee and asset, and are defined for the same action)
----
```turtle
:policy302 a odrl:Set ;
### not active ###
odrl:permission [
odrl:target :Asset1 ;
odrl:assignee :Alice ;
odrl:action odrl:print ;
odrl:constraint [
odrl:leftOperand odrl:dateTime;
odrl:operator odrl:lt ;
odrl:rightOperand "2000-12-31" ;
]
] ;
### active ###
odrl:prohibition [
odrl:target :Asset1 ;
odrl:assignee :Alice ;
odrl:action odrl:print ;
] .
```
**Q:** Is `:policy302` valid?
**A:** yes (both permission and prohibition are defined for the same action and apply to the same assignee and asset, but only the prohibition is active)
----
```turtle
:policy303 a odrl:Set ;
### active ###
odrl:permission [
odrl:target :Asset1 ;
odrl:assignee :Alice ;
odrl:action odrl:print ;
] ;
### active ###
odrl:prohibition [
odrl:target :Asset1 ;
odrl:assignee :Bob ;
odrl:action odrl:print ;
] .
```
**Q:** Is `:policy303` valid?
**A:** yes (both permission and prohibition are active, apply to the same asset, and are defined for the same action, but don't apply to the same assignee)
(more on that tomorrow)
--
GitHub Notification of comment by simonstey
Please view or discuss this issue at https://github.com/w3c/poe/issues/226#issuecomment-325945568 using your GitHub account
Received on Wednesday, 30 August 2017 10:06:19 UTC