Note: Key publications that contributed to this work:
- Esteves et al., 2025, 'Capturing Requests and Context for
ODRL-based Access and Usage Control'.
Previous tagged versions: v0.1
1. Introduction
The Open Digital Rights Language (ODRL) is a W3C standard for policy expression. It is composed by two Recommendations:
-
A model [ODRL-model], and
-
A vocabulary [odrl-vocab]
which can be used to represent rules over the usage of digital assets.
The Recommendations only standardised the representation of policies, leaving their enforcement out of scope. As such, a recent effort is being led by the W3C ODRL CG to create an ODRL formal semantics specification [odrl-formal-semantics], with the goal of specifying "the expected behaviour of an ODRL Evaluator, a piece of software that performs computations based on a set of policies, a request and a certain state of the world."
In this context, this specification provides a vocabulary to represent the necessary inputs of an Evaluator, which are not standardised in ODRL, i.e., the State of the World (SotW) and the Evaluation Request.
1.1. Terminology
- ODRL Compliance Report
- A vocabulary that is used to elaborate the result of an evaluation of an ODRL Policy, an Evaluation Request and the State of the World. It elaborates not only whether a rule from a policy is active, but also why.
- ODRL Evaluator
- A system that determines whether the Rules of an ODRL Policy expression have meet their intended action performance.
- State of the World
- Knowledge representing real-world information aiding the evaluation of ODRL Policies.
- Evaluation Request
- Formal description of a requested action by an assignee on a target asset, which can be enriched with further contextual information.
1.2. Namespaces
Commonly used namespace prefixes used in this specification:
@prefix dcterms: <http://purl.org/dc/terms/> . @prefix dpv: <https://w3id.org/dpv#> . @prefix ex: <http://example.com/> . @prefix odrl: <http://www.w3.org/ns/odrl/2/> . @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix pay: <https://reference.data.gov.uk/def/payment#> . @prefix report: <https://w3id.org/force/compliance-report#> . @prefix sotw: <https://w3id.org/force/sotw#> . @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
2. Evaluation Request
An ODRL Evaluator requires an Evaluation Request as input. An Evaluation Request represents a formal description of a requested action. In cases where a request is not being made, e.g., during a policy monitoring scenario, an empty Evaluation Request should be provided as input to the ODRL Evaluator.
The Evaluation Request MUST contain the following properties:
-
requestedAction: The action to be evaluated (e.g.,odrl:use,odrl:read,odrl:modify). -
requestingParty: The party (e.g., person or organisation) requesting the action. -
requestedTarget: The asset (e.g., file, document, data, service) on which the action is to be performed.
Additional contextual information can also be included in the Evaluation Request, e.g., temporal information or a purpose for exercising the requested action. The requestParameter property MAY be used to associate an EvaluationRequest with this additional contextual information, i.e., the RequestParameter.
The following properties are available to describe a RequestParameter:
-
describesFeature: Describe the feature that is being assessed in the request parameter. -
value: The concrete value attributed to the data feature.
For instance, if Billie, i.e., http://example.com/party/billie, requests to play
the asset http://example.com/music/1999.mp3,
the EvaluationRequest in the example below must be presented to an
ODRL evaluator to determine whether this request is permitted or not.
ex : request a sotw : EvaluationRequest ; sotw : requestingParty <http://example.com/party/billie> ; sotw : requestedAction odrl : play ; sotw : requestedTarget <http://example.com/music/1999.mp3> ; sotw : requestParameter [ a sotw : RequestParameter ; sotw : value "2025-11-24T11:44.22" ^^ xsd : dateTime ; sotw : describesFeature sotw : TemporalData ; ] .
3. State of the World
The ODRL Evaluator requires a formal representation of the state of the world. The state of the world specifies knowledge representing real-world information that aids the evaluation of ODRL Policies. For example, a certain state of the world may include the current date and time, the location of agents, or the history of performed actions.
This document aims to provide a formal representation for the state of the world concepts that are necessary to evaluate ODRL policies, without forcing the usage of existing vocabularies, e.g., country codes can be modelled using the ISO 3166 [iso3166] and UN M49 [un-m49] standards. RDF triples to represent the state of the world may be generated as observations from the world generated by third parties or by the ODRL Evaluator itself.
As such, in this document, we aim to provide a minimal set of information that needs to be represented in the state of the world and respective definitions, which will be formally represented in an RDF vocabulary:
-
SotW: Knowledge representing real-world information aiding the evaluation of ODRL Policies; -
context: Denotes contextual information related to the state of the world; -
conditionID: Denotes a relationship between a certain SotW context and a particular rule, constraint or duty, e.g., to link a payment to a duty to pay within a permission to use a certain asset;
For instance, to demonstrate that Billie, i.e., http://example.com/party/billie,
paid Sony, i.e., http://example.com/party/sony,
to play http://example.com/music/1999.mp3,
the SotW in the example below must be presented to an
ODRL evaluator to have contextual information about the performed payments.
Furthermore, each payment is linked with the corresponding duty that originated the payment,
i.e., using the conditionID property.
st : C12 a sotw : SotW ; sotw : context st : C12Context-A , st : C12Context-B . st : C12Context-A a pay : Payment ; sotw : conditionID ex : duty ; pay : payer <http://example.com/party/billie> ; pay : payee <http://example.com/party/sony> ; pay : reference "XXXX" ; pay : netAmount "5.00" ^^ xsd : decimal ; pay : paymentDate "2025-11-01 15:08:24" . st : C12Context-B a pay : Payment ; sotw : conditionID ex : duty ; pay : payer <http://example.com/party/billie> ; pay : payee <http://example.com/party/sony> ; pay : reference "XXXX" ; pay : netAmount "5.00" ^^ xsd : decimal ; pay : paymentDate "2025-10-01 15:08:24" .
4. Supporting Materials
-
FORCE: https://w3id.org/force
-
ODRL Compliance Report: https://w3id.org/force/compliance-report
-
ODRL test suite: https://w3id.org/force/test-suite
-
GitHub repository for our ODRL Evaluator implementation: https://w3id.org/force/evaluator