There is support in the ODRL Evaluator for odrl:Permission
rules.
This is achieved by checking whether all its properties are satisfied (as elaborated in the ODRL Formal Semantics spec).
The properties of the permission that are evaluated against a request and the state of the world are the following:
- Asset: the
odrl:target
of the Permission - Party: the
odrl:assignee
of the Permission (the recipient) - Action: the
odrl:action
of the Permission - Constraints: the
odrl:constraint
(s) of the permission.- Note: when there are multiple constraints and no logical constraint is provided, it is assumed that
odrl:and
is expected.
- Note: when there are multiple constraints and no logical constraint is provided, it is assumed that
Note that there the permission evaluation does not yet take into account Duty Reports. That is the (pre-)conditions.
There is support in the ODRL Evaluator for odrl:Prohibition
rules.
No support (yet) in the ODRL Evaluator for odrl:Duty
rules.
Reason being that requests to duties do not seem to make sense. Therefore, we assume that working with duties rely them being part of the State of the World.
Columns of the table elaborated:
- Label: The
rdfs:label
as defined by ODRL - Identifier: The ODRL unique identifier for the term
- Normative: Whether it is part of the official standard or not (hint)
- Deprecated: An element that has been outdated by newer constructs (sometimes superseded by newer version).
- Supported: Whether the ODRL Evaluator supports it.
- Included in: Whether the action is encompassed by an other action. Note that this is a transitive property.
- For more information, checkout ODRL IM §2.4 for
odrl:includedIn
- For more information, checkout ODRL IM §2.4 for
- Exact Match: Whether the action has a similar meaning than the other, i.e., it is an exact match (Symmetric and Transitive)
- For more information, checkout Simple Knowledge Organization System (SKOS) primer §3.1 for
skos:ExactMatch
- For more information, checkout Simple Knowledge Organization System (SKOS) primer §3.1 for
Label | Identifier | Normative | Deprecated | Supported | Included in | Exact Match |
---|---|---|---|---|---|---|
Attribution | cc:Attribution |
❌ | ❌ | ✅ | odrl:use |
|
Commercial Use | cc:CommercialUse |
❌ | ❌ | ✅ | odrl:use |
|
Derivative Works | cc:DerivativeWorks |
❌ | ❌ | ✅ | odrl:use |
|
Distribution | cc:Distribution |
❌ | ❌ | ✅ | odrl:use |
|
Notice | cc:Notice |
❌ | ❌ | ✅ | odrl:use |
|
Reproduction | cc:Reproduction |
❌ | ❌ | ✅ | odrl:use |
|
Share Alike | cc:ShareAlike |
❌ | ❌ | ✅ | odrl:use |
|
Sharing | cc:Sharing |
❌ | ❌ | ✅ | odrl:use |
|
Source Code | cc:SourceCode |
❌ | ❌ | ✅ | odrl:use |
|
Accept Tracking | odrl:acceptTracking |
❌ | ❌ | ✅ | odrl:use |
|
Ad-hoc sharing | odrl:adHocShare |
? |
✅ | ✅ | ||
Aggregate | odrl:aggregate |
❌ | ❌ | ✅ | odrl:use |
|
Annotate | odrl:annotate |
❌ | ❌ | ✅ | odrl:use |
|
Anonymize | odrl:anonymize |
❌ | ❌ | ✅ | odrl:use |
|
Append | odrl:append |
? |
✅ | ✅ | odrl:modify |
|
Append To | odrl:appendTo |
? |
✅ | ✅ | odrl:modify |
|
Archive | odrl:archive |
❌ | ❌ | ✅ | odrl:use |
|
Attach policy | odrl:attachPolicy |
? |
✅ | ✅ | cc:Notice |
|
Attach source | odrl:attachSource |
? |
✅ | ✅ | cc:SourceCode |
|
Attribute | odrl:attribute |
❌ | ❌ | ✅ | odrl:use |
|
Commercialize | odrl:commercialize |
? |
✅ | ✅ | cc:CommercialUse |
|
Compensate | odrl:compensate |
❌ | ❌ | ✅ | odrl:use |
|
Concurrent Use | odrl:concurrentUse |
❌ | ❌ | ✅ | odrl:use |
|
Copy | odrl:copy |
? |
✅ | ✅ | odrl:reproduce |
|
Delete | odrl:delete |
❌ | ❌ | ✅ | odrl:use |
|
Derive | odrl:derive |
❌ | ❌ | ✅ | odrl:use |
|
Digitize | odrl:digitize |
❌ | ❌ | ✅ | odrl:use |
|
Display | odrl:display |
❌ | ❌ | ✅ | odrl:play |
|
Distribute | odrl:distribute |
❌ | ❌ | ✅ | odrl:use |
|
Ensure Exclusivity | odrl:ensureExclusivity |
❌ | ❌ | ✅ | odrl:use |
|
Execute | odrl:execute |
❌ | ❌ | ✅ | odrl:use |
|
Export | odrl:export |
? |
✅ | ✅ | odrl:transform |
|
Extract | odrl:extract |
❌ | ❌ | ✅ | odrl:reproduce |
|
Extract character | odrl:extractChar |
? |
✅ | ✅ | ||
Extract page | odrl:extractPage |
? |
✅ | ✅ | ||
Extract word | odrl:extractWord |
? |
✅ | ✅ | ||
Give | odrl:give |
❌ | ❌ | ✅ | odrl:transfer |
|
Grant Use | odrl:grantUse |
❌ | ❌ | ✅ | odrl:use |
|
Include | odrl:include |
❌ | ❌ | ✅ | odrl:use |
|
Index | odrl:index |
❌ | ❌ | ✅ | odrl:use |
|
Inform | odrl:inform |
❌ | ❌ | ✅ | odrl:use |
|
Install | odrl:install |
❌ | ❌ | ✅ | odrl:use |
|
Lease | odrl:lease |
? |
✅ | ✅ | ||
Lend | odrl:lend |
? |
✅ | ✅ | ||
License | odrl:license |
? |
✅ | ✅ | odrl:grantUse |
|
Modify | odrl:modify |
❌ | ❌ | ✅ | odrl:use |
|
Move | odrl:move |
❌ | ❌ | ✅ | odrl:use |
|
Next Policy | odrl:nextPolicy |
❌ | ❌ | ✅ | odrl:use |
|
Obtain Consent | odrl:obtainConsent |
❌ | ❌ | ✅ | odrl:use |
|
Pay | odrl:pay |
? |
✅ | ✅ | odrl:compensate |
|
Play | odrl:play |
❌ | ❌ | ✅ | odrl:use |
|
Present | odrl:present |
❌ | ❌ | ✅ | odrl:use |
|
Preview | odrl:preview |
? |
✅ | ✅ | ||
odrl:print |
❌ | ❌ | ✅ | odrl:use |
||
Read | odrl:read |
❌ | ❌ | ✅ | odrl:use |
|
Reproduce | odrl:reproduce |
❌ | ❌ | ✅ | odrl:use |
|
Review Policy | odrl:reviewPolicy |
❌ | ❌ | ✅ | odrl:use |
|
Secondary Use | odrl:secondaryUse |
? |
✅ | ✅ | ||
Sell | odrl:sell |
❌ | ❌ | ✅ | odrl:transfer |
|
Share | odrl:share |
? |
✅ | ✅ | cc:Sharing |
|
Share-alike | odrl:shareAlike |
? |
✅ | ✅ | cc:ShareAlike |
|
Stream | odrl:stream |
❌ | ❌ | ✅ | odrl:use |
|
Synchronize | odrl:synchronize |
❌ | ❌ | ✅ | odrl:use |
|
Text-to-speech | odrl:textToSpeech |
❌ | ❌ | ✅ | odrl:use |
|
Transfer Ownership | odrl:transfer |
✅ | ❌ | ✅ | ||
Transform | odrl:transform |
❌ | ❌ | ✅ | odrl:use |
|
Translate | odrl:translate |
❌ | ❌ | ✅ | odrl:use |
|
Uninstall | odrl:uninstall |
❌ | ❌ | ✅ | odrl:use |
|
Use | odrl:use |
✅ | ❌ | ✅ | ||
Watermark | odrl:watermark |
❌ | ❌ | ✅ | odrl:use |
|
Write | odrl:write |
? |
✅ | ✅ | odrl:modify |
|
Write to | odrl:writeTo |
? |
✅ | ✅ | odrl:modify |
Support for skos:ExactMatch
and odrl:includedIn
is provided through inferences using simple Notation3 rules
Support for odrl:Asset
is provided by either exact matching of the request with the policy or by doing an inference over the Asset Collection.
For doing inferences over Asset Collection, these collections must be supplied by the state of the world.
When this is not the case, no satisfaction of this constraint can be obtained.
To check for membership in an Asset Collection, the odrl:partOf
property is used as stated in ODRL IM §2.2.2.
Example rule of Asset when Asset Collection is present: Note that the rule is a bit odd. This was also pointed out by Joshua Corenjo in a github issue.
This is analogous to how Asset evaluation works.
Support for odrl:Party
is provided by either exact matching of the request with the policy or by doing an inference over the Party Collection.
For doing inferences over Party Collection, these collections must be supplied by the state of the world.
When this is not the case, no satisfaction of this constraint can be obtained.
To check for membership in an Party Collection, the odrl:partOf
property is used as stated in ODRL IM §2.2.2.
Rules that implement the constraints can be found in constraints.n3
.
This is handled similar to constraints.
No support yet. Documentation and implementation is still required.
Columns of the table elaborated:
- Label: The
rdfs:label
as defined by ODRL - Identifier: The ODRL unique identifier for the term
- Normative: Whether it is part of the official standard or not (hint)
- Deprecated: An element that has been outdated by newer constructs (sometimes superseded by newer version).
- Supported: Whether the ODRL Evaluator supports it.
Label | Identifier | Normative | Deprecated | Supported |
---|---|---|---|---|
Only One | odrl:xone |
✅ | ❌ | ✅ |
And | odrl:and |
✅ | ❌ | ✅ |
And Sequence | odrl:andSequence |
✅ | ❌ | ✅ |
Or | odrl:or |
✅ | ❌ | ✅ |
Columns of the table elaborated:
- Label: The
rdfs:label
as defined by ODRL - Identifier: The ODRL unique identifier for the term
- Normative: Whether it is part of the official standard or not (hint)
- Deprecated: An element that has been outdated by newer constructs (sometimes superseded by newer version).
- Supported: Whether the ODRL Evaluator supports it.
Label | Identifier | Normative | Deprecated | Supported |
---|---|---|---|---|
Equal to | odrl:eq |
✅ | ❌ | ✅ |
Greater than | odrl:gt |
✅ | ❌ | ✅ |
Greater than or equal to | odrl:gteq |
✅ | ❌ | ✅ |
Has part | odrl:hasPart |
✅ | ❌ | ❌ |
Is a | odrl:isA |
✅ | ❌ | ❌ |
Is all of | odrl:isAllOf |
✅ | ❌ | ❌ |
Is any of | odrl:isAnyOf |
✅ | ❌ | ❌ |
Is none of | odrl:isNoneOf |
✅ | ❌ | ❌ |
Is part of | odrl:isPartOf |
✅ | ❌ | ❌ |
Less than | odrl:lt |
✅ | ❌ | ✅ |
Less than or equal to | odrl:lteq |
✅ | ❌ | ✅ |
Not equal to | odrl:neq |
✅ | ❌ | ✅ |
Columns of the table elaborated:
- Label: The
rdfs:label
as defined by ODRL - Identifier: The ODRL unique identifier for the term
- Normative: Whether it is part of the official standard or not (hint)
- Deprecated: An element that has been outdated by newer constructs (sometimes superseded by newer version).
- Supported: Whether the ODRL Evaluator supports it.
Label | Identifier | Normative | Deprecated | Supported |
---|---|---|---|---|
Absolute Asset Position | odrl:absolutePosition |
❌ | ❌ | ❌ |
Absolute Asset Size | odrl:absoluteSize |
❌ | ❌ | ❌ |
Absolute Spatial Asset Position | odrl:absoluteSpatialPosition |
✅ | ❌ | ❌ |
Absolute Temporal Asset Position | odrl:absoluteTemporalPosition |
✅ | ❌ | ❌ |
Count | odrl:count |
❌ | ❌ | ❌ |
Datetime | odrl:dateTime |
❌ | ❌ | ✅ |
Delay Period | odrl:delayPeriod |
❌ | ❌ | ❌ |
Delivery Channel | odrl:deliveryChannel |
❌ | ❌ | ❌ |
Device | odrl:device |
✅ | ✅ | ❌ |
Elapsed Time | odrl:elapsedTime |
❌ | ❌ | ❌ |
Event | odrl:event |
❌ | ❌ | ❌ |
File Format | odrl:fileFormat |
❌ | ❌ | ❌ |
Industry Context | odrl:industry |
❌ | ❌ | ❌ |
Language | odrl:language |
❌ | ❌ | ❌ |
Media Context | odrl:media |
❌ | ❌ | ❌ |
Metered Time | odrl:meteredTime |
❌ | ❌ | ❌ |
Payment Amount | odrl:payAmount |
❌ | ❌ | ❌ |
Asset Percentage | odrl:percentage |
❌ | ❌ | ❌ |
Product Context | odrl:product |
❌ | ❌ | ❌ |
Purpose | odrl:purpose |
❌ | ❌ | ❌ |
Recipient | odrl:recipient |
❌ | ❌ | ❌ |
Relative Asset Position | odrl:relativePosition |
❌ | ❌ | ❌ |
Relative Asset Size | odrl:relativeSize |
❌ | ❌ | ❌ |
Relative Spatial Asset Position | odrl:relativeSpatialPosition |
✅ | ❌ | ❌ |
Relative Temporal Asset Position | odrl:relativeTemporalPosition |
✅ | ❌ | ❌ |
Rendition Resolution | odrl:resolution |
❌ | ❌ | ❌ |
Geospatial Named Area | odrl:spatial |
❌ | ❌ | ❌ |
Geospatial Coordinates | odrl:spatialCoordinates |
✅ | ❌ | ❌ |
System | odrl:system |
✅ | ✅ | ❌ |
System Device | odrl:systemDevice |
✅ | ❌ | ❌ |
Recurring Time Interval | odrl:timeInterval |
❌ | ❌ | ❌ |
Unit Of Count | odrl:unitOfCount |
❌ | ❌ | ❌ |
Version | odrl:version |
❌ | ❌ | ❌ |
Virtual IT Communication Location | odrl:virtualLocation |
❌ | ❌ | ❌ |
In ODRL there is some notion about broader and narrower concepts (using skos notation). To the best of our knowledge, no additional reasoning support can be added.
odrl:spatial
- broader (transitive) than
odrl:spatialCoordinates
- broader (transitive) than
odrl:absolutePosition
- broader (transitive) than
odrl:absoluteSpatialPosition
- broader (transitive) than
odrl:absoluteTemporalPosition
- broader (transitive) than
odrl:relativePosition
- broader (transitive) than
odrl:relativeSpatialPosition
- broader (transitive) than
odrl:relativeTemporalPosition
- broader (transitive) than