-
Notifications
You must be signed in to change notification settings - Fork 17
Modelling duty/obligation #191
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
Comments
hi @fornaran - thanks for your feedback. You say "...in order to be allowed to use a VALID permission a party must BEFORE satisfy the related Duty" - this is not totally correct. There are some use cases where a Duty could be satisfied after the permission has been actioned (eg stream music and pay at the end of the month). But I think the wording can be made more clearer in Duty section: http://w3c.github.io/poe/model/#duty I think we update this:
to:
Does that sound more clearer? |
Hi riannella - thanks for your answer. When do I obtain a VALID permission (and therefore I can use it without violating a prohibition)?
In my opinion, the semantics of permission can be used to express policies of type 1 (fulfilled duty->valid permission) or policies of type 2 (valid permission->active duty/obligation) but using one construct for covering both types may create a lot of confusion on the semantics of duty-permission. |
We will be treating "constraint checking" as a "black-box" for ODRL evaluators (as we are not scoped to address enforcement, only expression). So when an constraint is evaluated by the external system, it will simply return true or false. So in case 2) above, the implementations may have the assignee's credit card details (which we don't know about) and then is happy to return "true" (and charge them later at the end of the month). The only real difference between 1) and 2) is temporal. |
Hi @fornaran Are you ok with this response? |
Hi riannella, |
I am not sure this use case fits? ODRL expresses statements about content usage...so, for example, what asset is the Policy about? You could (if you wanted) define the "congestion area" as an Asset, then an action "drive-in", then add a Duty (pay x $) |
From my oint of view the Duty (pay x $) is not a pre-condition for performing the action "drive-in" on the asset "congestion area", in fact the access to the congestion area is not prohibited (there is not a barrier). Like for the nurse example reported in my first comment, the policy that I would like to express is: A certain action a1 is permitted (i.e. it is permitted to enter a congestion area, the nurse can use the “emergency account”) and I want to express the fact that if action a1 is performed then the actor of the action becomes obliged to do something else (i.e. pay within 24 hours or write a report within 1 week). From my point of view in ODRL it is possible to express a different type of policy: Regards |
Yes, you can create a new Policy Type (like these: http://w3c.github.io/poe/vocab/#policySubClassesCommon) |
For being able to model my use cases, I need to be able to express a policy that contains one obligation to perform an action (pay within 24 hours) that is activated when a certain event happens (enter in the congestion area). If a pay within the deadline this obligation becomes fulfilled, otherwise it becomes violated. Given that in ODRL a Policy is "A non-empty group of Permissions and/or Prohibitions" I cannot simply create a new Policy Type. |
We are discussing in #162 an update that a Policy can contain "any Rules". |
A Policy that can contain just a Duty is the first step. In particular what I miss is the notion of state of the obligation that follows a specific lyfecycle. An Obligation may be conditioned, activated, satisfied or violated. Regards |
Perhaps you could model this with a new Rule and Policy type? The concept of "activated" would need to be supported. That is, upon the "action" being activated, then you must do Duty X. The current Rules are not pro-active. So, perhaps a new Rule could work (lets says its called "Trigger"). Trigger is an action ("enterArea" even with constraints like "on weekdays"...). |
Perhaps in order to prevent circularities in the evaluation of the policy, the trigger action ("enterArea") should not have other duties imposed --thinking of this as a production rule system. |
duties on permission level are exactly that, e.g.:
only if |
The clear specification of the evolution of the state of permissions, prohibitions, and duties is fundamental for having a clear semantics of the proposed language. The duty inside a permission is actually a pre-condition for getting the permission. If Alice does not care about the asset, she is not obliged to do something; in our everyday life, we will never say that she has a duty. If she wants to get a VALID permission, she has to do something, i.e. satisfy the duty or better the pre-condition for getting a valid permission. If the duty/pre-condition is not satisfied, Alice has not a valid permission. With this semantics, it is hard to express a policy that gives to Alice a valid permission to play a music file and contemporarily obliges Alice to pay 5 euro at the end of the month. This because the payment (that will happen after the creation of a valid permission) cannot be formalized as a pre-condition/duty. In fact, the payment is not a pre-condition; differently, we need to formalize an obligation to pay 5 euro at the end of the month, and this obligation becomes active when Alice get a valid permission to play a music file. This type of obligation can also be used to formalize the congestion area. It is an obligation to pay with in 24 hour that is activated when I enter with my car in the congestion area. Obviously, the action that activates the obligation (play music file, or enter congestion area, getting a valid permission) should be possible otherwise the obligation will never become active. I agree with riannella, it is possible to model those use cases (stream music with later payment, congestion area, nurse in the hospital) by introducing a new Rule called obligation with its own lifecycle. In principle, this new Rule can be used in the already existing Policy Types. |
Inspired by: https://www.w3.org/community/odrl/model/2.1/#section-53 If we supported Duties for Prohibitions, then you could say "you are prohibited from driving in the congested area". If you do, then you have a Duty to pay x$. |
It seems to me that is counterintuitive modelling by using Moreover if the fulfillment or violation of obligations and prohibitions are connected to the reputation of their assignee agent this formalization may bring to a wrong computation of the assignee's reputation value. |
@fornaran |
well, she agreed to your proposal:
and I actually like the idea of having "Obligation" as new type of rule, i.e. differentiating between policy/permission-level duties, as it would help addressing a lot of issues/inconsistencies of the current IM, such as:
Proposal:
tbd: how to handle constraints that specify how an action must be performed. |
Actually, what I meant was that such an extension is possible - so @fornaran's Profile could do that - not that we (the WG) would add it. |
What is the difference between an Obligation and a Duty ? |
I agree with @simonstey that adding Obligation as subclass of Rule would be a perfect solution. I am also working on a paper with a proposal that goes in this direction I hope it can be formalized as an ODRL Profile. From my point of view a duty connected to a permission is actually a precondition, it is not an obligation. An agent can decide to satify a "duty" if she wants to get a valid permission but she can also never satify it. Thank you very much for this discussion it was very fruitful for me. Kind regards. |
(we can't close the issue until we resolve and address it ;-) I think then that the issue is not the class Duty, but the property "has duty". A Duty, as defined as "The obligation to perform an Action" is fine as is. The "Has duty" property is defined as "The duty relating to the Permission", but really should be more specific (as we have used it in the past) as "A Duty that is a precondition for a Permission" (or something along those lines...) And we have a new property "Has Obligation" defined as "A Duty that must be fulfilled". "Has Duty" is for Permission->Duty relationships. |
Updated the IM/Vocab to now support the obligation property for policy-level Duties. commit: 36d1a6a |
In ODRL a “Duty entity indicates a requirement that MUST be SATISFIED for Permissions to become VALID.…Even though a Duty entity is mandatory, the ODRL model does not specify any conditions on WHEN the Duty Action must be performed.”
If I understood the semantics of a Duty correctly, in order to be allowed to use a VALID permission a party must BEFORE satisfy the related Duty; otherwise, the permission is not VALID. In case the party perform an action that is not permitted, the party may/will be sanctioned. Therefore, it is clear that the Duty Action MUST be performed BEFORE to use the permission.
Therefore, in ODRL it is not possible to express policies where the duty (or better the obligation) to perform an action in ACTIVATED AFTER a given permitted action has been already performed.
Examples of this policies are:
It is also crucial to inform a user about the new obligations that the performance of a given action will create for him/her.
The text was updated successfully, but these errors were encountered: