Inherited agreement duty chain 01

A policy from the Compliance corpus. The table gives the source and what the policy shows, in the source's words.

SourceWhat it shows
inherited-agreement-duty-chain-01.ttlInherited Agreement: a duty-free permission genuinely conflicts with, and (conflict=perm) beats, a colliding prohibition, whose remedy therefore never fires; a SEPARATE, duty-gated permission for the identical action/target is independently denied by dutyMode=deny via an outstanding duty->consequence chain; a refined print permission gated by purpose AND (riskScore OR recipient OR roles); three-plus claim shapes including an array-valued one.

Policy #

{
  "@context": [
    "http://www.w3.org/ns/odrl.jsonld",
    {
      "case": "https://ds-labs-org.github.io/ds-odrl-compliance-rdf/cases/inherited-agreement-duty-chain-01#",
      "dsc": "https://ds-labs-org.github.io/ds-odrl-compliance-rdf/ns#",
      "dpv": "https://w3id.org/dpv#",
      "foaf": "http://xmlns.com/foaf/0.1/",
      "vcard": "http://www.w3.org/2006/vcard/ns#"
    }
  ],
  "@graph": [
    {
      "@type": "Set",
      "uid": "case:policy-a",
      "assigner": "did:web:provider.example",
      "permission": [
        {
          "uid": "case:perm-print-clean",
          "target": "case:dataset-42",
          "action": {
            "rdf:value": {
              "@id": "odrl:print"
            },
            "refinement": [
              {
                "leftOperand": "count",
                "operator": "lteq",
                "rightOperand": 2
              }
            ]
          },
          "constraint": [
            {
              "and": [
                {
                  "leftOperand": "purpose",
                  "operator": "eq",
                  "rightOperand": {
                    "@id": "dpv:AcademicResearch"
                  }
                },
                {
                  "or": [
                    {
                      "leftOperand": {
                        "@id": "case:claim-riskScore",
                        "@type": "dsc:ClaimKey",
                        "dsc:key": "riskScore"
                      },
                      "operator": "lteq",
                      "rightOperand": 20
                    },
                    {
                      "leftOperand": "recipient",
                      "operator": "isAnyOf",
                      "rightOperand": [
                        {
                          "@id": "dpv:DataController"
                        },
                        {
                          "@id": "dpv:ThirdParty"
                        }
                      ]
                    },
                    {
                      "leftOperand": {
                        "@id": "case:claim-roles",
                        "@type": "dsc:ClaimKey",
                        "dsc:key": "roles"
                      },
                      "operator": "isAnyOf",
                      "rightOperand": [
                        "PI",
                        "reviewer"
                      ]
                    }
                  ]
                }
              ]
            }
          ]
        },
        {
          "uid": "case:perm-print-dutied",
          "target": "case:dataset-42",
          "action": "print",
          "duty": [
            {
              "uid": "case:duty-notify",
              "target": "case:notification-log",
              "action": "inform",
              "consequence": [
                {
                  "uid": "case:duty-escalate",
                  "target": "case:dpo-register",
                  "action": "case:escalate"
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "@type": "Agreement",
      "uid": "case:policy-b",
      "inheritFrom": "case:policy-a",
      "conflict": "perm",
      "assignee": "case:alice",
      "prohibition": [
        {
          "uid": "case:proh-print",
          "target": "case:dataset-42",
          "action": "print",
          "remedy": [
            {
              "uid": "case:remedy-notify-dpo",
              "target": "case:dpo-register",
              "action": "inform"
            }
          ]
        }
      ]
    }
  ]
}

Reading #

The sentences OdrlProse writes for this policy, without a profile.

Policy set case:policy-a

A set of rules from did:web:provider.example (assigner).

  1. Anyone may print dataset-42, as permitted by the assigner did:web:provider.example.

    Limits on the action:

    • The action "print" is limited to cases where:
      • the number of times used is at most 2

    Applies only if:

    • all of the following hold:
      • the purpose is equal to AcademicResearch
      • at least one of the following holds:
        • the claim risk score is at most 20
        • the recipient is any of DataController or ThirdParty
        • the claim roles is any of "PI" or "reviewer"
  2. Anyone may print dataset-42, as permitted by the assigner did:web:provider.example.

    Duties to fulfil before this permission can be exercised:

    • The assignee must inform notification-log, as required by the assigner did:web:provider.example.

      Consequences if this duty is not fulfilled:

      • The assignee must escalate dpo-register, as required by the assigner did:web:provider.example.

Agreement case:policy-b

An agreement between did:web:provider.example (assigner) and alice (assignee).

  • If a permission and a prohibition conflict, the permission wins.
  • Inherits the rules of case:policy-a.
  1. alice must not print dataset-42, as prohibited by the assigner did:web:provider.example.

    Remedies if this prohibition is breached:

    • alice must inform dpo-register, as required by the assigner did:web:provider.example.

  2. Inherited from case:policy-a: alice may print dataset-42, as permitted by the assigner did:web:provider.example.

    Limits on the action:

    • The action "print" is limited to cases where:
      • the number of times used is at most 2

    Applies only if:

    • all of the following hold:
      • the purpose is equal to AcademicResearch
      • at least one of the following holds:
        • the claim risk score is at most 20
        • the recipient is any of DataController or ThirdParty
        • the claim roles is any of "PI" or "reviewer"
  3. Inherited from case:policy-a: alice may print dataset-42, as permitted by the assigner did:web:provider.example.

    Duties to fulfil before this permission can be exercised:

    • alice must inform notification-log, as required by the assigner did:web:provider.example.

      Consequences if this duty is not fulfilled:

      • alice must escalate dpo-register, as required by the assigner did:web:provider.example.

The renderer raised no warning for this policy.

Back to the Compliance corpus or the catalog.