Skip to content

ODRL Model Restrictions

Elena Molino edited this page Apr 14, 2026 · 1 revision

ODRL Policy Structure

  • Solid arrows represent mandatory elements in the model.
  • Dotted arrows represent optional elements in the model.
  • Subroutine-shaped nodes indicate reusable or separately validated components.

A Policy must either use ODRL terms OR declare a profile. In the last case, the profile property MUST be used to indicate the IRIs of the ODRL Profile(s).

%%{ init: { "theme": "neutral" } }%%
flowchart TD

    A[odrl:Policy]

    A --> B[uid: IRI]
    A --> C[odrl:Rule]
    C -. permission .-> D[[odrl:Permission]]
    C -. obligation .-> E[[odrl:Duty]]
    C -. prohibition .-> F[[odrl:Prohibition]]

    A -.-> G[profile: IRI]
    A -.-> H[inheritFrom: IRI]
    A -.-> I[conflict: ConflictTerm]
Loading

Set

  • Permission
%%{ init: { "theme": "neutral" } }%%
flowchart TD

    A[odrl:Permission]

    A -.->|assigner 0..1| B[[Party]]
    A -.->|assignee 0..1| B[[Party]]
    A -- action 1 --> C[[Action]]
    A -- target 1 --> D[[Asset]]

    A -.->|failure 0..*| E[[Rule]]
    A -.->|constraint 0..*| F[[Constraint]]
    A -.->|uid 0..1| G[uid: IRI]

    A -.->|duty 0..*| E[[Duty]]

Loading

Offer

MUST have one assigner property value

  • Permission
%%{ init: { "theme": "neutral" } }%%
flowchart TD

    A[odrl:Permission]

    A -->|assigner 1| B[[Party]]
    A -.->|assignee 0..1| B[[Party]]
    A -- action 1 --> C[[Action]]
    A -- target 1 --> D[[Asset]]

    A -.->|failure 0..*| E[[Rule]]
    A -.->|constraint 0..*| F[[Constraint]]
    A -.->|uid 0..1| G[uid: IRI]

    A -.->|duty 0..*| E[[Duty]]

Loading

Agreement

MUST have one assigner property value

MUST have one assignee property value

  • Permission
%%{ init: { "theme": "neutral" } }%%
flowchart TD

    A[odrl:Permission]

    A -->|assigner 1| B[[Party]]
    A -->|assignee 1| B[[Party]]
    A -- action 1 --> C[[Action]]
    A -- target 1 --> D[[Asset]]

    A -.->|failure 0..*| E[[Rule]]
    A -.->|constraint 0..*| F[[Constraint]]
    A -.->|uid 0..1| G[uid: IRI]

    A -.->|duty 0..*| E[[Duty]]

Loading

Action

An Action (except for use and transfer) MUST have one includedIn property value

%%{ init: { "theme": "neutral" } }%%
flowchart TD

    A[Action]

    A -.->|refinement 0..*| B[[Constraint]]
    A -.->|implies 0..*| C[[Action]]
    A -->|includedIn 1| C[[Action]]

Loading

Constraint

%%{ init: { "theme": "neutral" } }%%
flowchart TD

    A[odrl:Constraint]

    A --> B[uid: IRI]
    A -- leftOperand --> C[Left Operand]
    A -- operator --> D[Operator]
    A -- rightOperand -->  E[XOR]
    E --> F[rightOperand]
    E --> G[rightOperandReference]

    A -. unit .-> H[unit: IRI]
    A -.-> I[dataType]
    A -.-> J[status]

Loading

Clone this wiki locally