This document presents a new profile called ODRL Data Spaces (ODS) that extends the ODRL core vocabulary and expression models to support data spaces over big data and streaming systems.
ODS serves as a Rights Expression Language tailored for the global data space lifecycle, allowing data assets to be annotated with machine-readable policies that dictate permissions, prohibitions, and obligations across multi-phase workflows.
This document is the result of a collaborative team effort within the Eunomia research framework. Development, specification, and maintenance of the ODS profile are led by researchers at the Universidad Politécnica de Madrid (UPM) & Information Processing and Telecommunications Center (IPTC):
This section extends the ODRL Recommendation [ODRL22] by terms required by Data Spaces.
This section extends the ODRL Recommendation [ODRL22] by adding specialized actions, party functions, and execution constraints required across the data space data lifecycle[cite: 1].
The ODRL Data Spaces (ODS) profile provides a cohesive extension for policy definition regarding continuous access and usage control[cite: 1]. It establishes a unified execution container designed to maintain data sovereignty across heterogeneous software implementations[cite: 1].
Unlike static enforcement models, this profile addresses a multi-phase data space lifecycle segmented into three distinct functional stages[cite: 1]:
| Prefix | Namespace | Description |
|---|---|---|
| odrl | http://www.w3.org/ns/odrl/2/ | [[odrl-vocab]] [[odrl-model]] |
| rdf | http://www.w3.org/1999/02/22-rdf-syntax-ns# | [[rdf11-concepts]] |
| rdfs | http://www.w3.org/2000/01/rdf-schema# | [[rdf-schema]] |
| owl | http://www.w3.org/2002/07/owl# | [[owl2-overview]] |
| xsd | http://www.w3.org/2001/XMLSchema# | [[xmlschema11-2]] |
| skos | http://www.w3.org/2004/02/skos/core# | [[skos-reference]] |
| dcterms | http://purl.org/dc/terms/ | [[dcterms]] |
| vcard | http://www.w3.org/2006/vcard/ns# | [[vcard-rdf]] |
| foaf | http://xmlns.com/foaf/0.1/ | [[foaf]] |
| schema | http://schema.org/ | schema.org |
| cc | https://creativecommons.org/ns# | creativecommons.org |
| ex | http://example.com/ns# |
For the class Action (http://www.w3.org/ns/odrl/2/Action), used with Rules, these instances are defined.
| Definition: | To query some data asset. |
|---|---|
| Label: | duc:Query |
| Identifier: | http://www.w3.org/ns/odrl/2/acceptQuery |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | To write or publish some data. |
|---|---|
| Label: | duc:Publish |
| Identifier: | http://www.w3.org/ns/odrl/2/acceptPublish |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | To train a machine learning model[cite: 1]. |
|---|---|
| Label: | duc:Train |
| Identifier: | http://www.w3.org/ns/odrl/2/acceptTrain |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | To evaluate a machine learning model. |
|---|---|
| Label: | duc:Evaluate |
| Identifier: | http://www.w3.org/ns/odrl/2/acceptEvaluate |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | To anonymize the incoming data[cite: 1]. |
|---|---|
| Label: | duc:Anonymize |
| Identifier: | http://www.w3.org/ns/odrl/2/acceptAnonymize |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | To transform, clean or filter data. |
|---|---|
| Label: | duc:Transform |
| Identifier: | http://www.w3.org/ns/odrl/2/acceptTransforme |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | The consumer has to aggregate the data before performing another operation[cite: 1]. |
|---|---|
| Label: | duc:AggregateByConsumer |
| Identifier: | http://www.w3.org/ns/odrl/2/AggregateByConsumer |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | The provider has to aggregate the data before publishing it. |
|---|---|
| Label: | duc:AggregateByProvider |
| Identifier: | http://www.w3.org/ns/odrl/2/AggregateByProvider |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | To remove the subscription. |
|---|---|
| Label: | duc:RemoveSubscription |
| Identifier: | http://www.w3.org/ns/odrl/2/RemoveSubscription |
| Included In: | http://www.w3.org/ns/odrl/2/use |
| Definition: | To kill the current executing job. |
|---|---|
| Label: | duc:KillJob |
| Identifier: | http://www.w3.org/ns/odrl/2/KillJob |
| Included In: | http://www.w3.org/ns/odrl/2/use |
For the class Party (http://www.w3.org/ns/odrl/2/Party), used with Rules, these instances are defined.
| Definition: | The Party is the issuer of the Rule. |
|---|---|
| Label: | duc:Provider |
| Identifier: | http://www.w3.org/ns/odrl/2/Provider |
| Parent property: | function |
| Domain: | Policy, Rule |
| Range: | Party |
| Definition: | The Party is the recipient of the Rule. |
|---|---|
| Label: | duc:Consumer |
| Identifier: | http://www.w3.org/ns/odrl/2/Consumer |
| Parent property: | function |
| Domain: | Policy, Rule |
| Range: | Party |
| Definition: | The Party is monitoring the application of the Rule. |
|---|---|
| Label: | duc:Controller |
| Identifier: | http://www.w3.org/ns/odrl/2/Controller |
| Parent property: | function |
| Domain: | Policy, Rule |
| Range: | Party |
| Definition: | The Party that acts as a broker of the data. |
|---|---|
| Label: | duc:Broker |
| Identifier: | http://www.w3.org/ns/odrl/2/Broker |
| Parent property: | function |
| Domain: | Policy, Rule |
| Range: | Party |
Company A wants to share a dataset with Company B[cite: 1]. Company A only allows Company B to use the data for generating a ML model[cite: 1]. Company B cannot transfer any data to internal or external parties[cite: 1].
{
"@context": "http://www.w3.org/ns/odrl.jsonld",
"@type": "Agreement",
"uid": "http://example.com/policy:1010",
"duc:provider": "http://oem.com/ids#me",
"permission": [{
"duc:consumer": "http://supplier.com/",
"target": "http://oem.com/ids/inventory/dataset-1",
"action": "duc:train"
}],
"obligation": [{
"@type": "Duty",
"target": "http://oem.com/ids/inventory/dataset-1",
"action": "inform",
"consequence": [{
"target": "http://oem.com/ids/inventory/dataset-1",
"action":[{
"rdf:value": { "@id": "duc:KillJob" },
"refinement": [{
"leftOperand": "recipient",
"operator": "eq",
"rightOperand": {
"@value": "flinkid00",
"@type": "http://orion.fiware.org/Job"
}
}]
}]
}]
}],
"prohibition": [{
"assignee": "http://supplier.com/",
"target" : "http://oem.com/ids/inventory/dataset-1",
"action": "print"
}]
}