, edited in place
Copyright © 2024 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
The Open Digital Rights Language (ODRL) is a policy expression language that provides a flexible and interoperable information model, vocabulary, and encoding mechanisms for representing statements about the usage of content and services. The ODRL Vocabulary and Expression describes the terms used in ODRL policies and how to encode them.
The ODRL Profile for Data Sovereignty extends the core information model of ODRL by defining the terms to express usage restrictions, obligations and modifications. These policies can then be translated into technology-dependent policy languages (e.g., MYDATA Control Technologies Policy Language) to technically enforce the restrictions within the systems.
This document is merely a W3C-internal document. It has no official standing of any kind and does not represent consensus of the W3C Membership.
This section is non-normative.
Data sovereignty is a key success factor for data-driven business models. As defined by Usage Control in International Data Spaces, data sovereignty has the goal of providing data providers with full control over their data.
Data Usage Control is known as a conceptual and technical solution to cope with the challenges of data sovereignty. Data Usage Control Technologies aim to enforce usage restrictions and obligations once data access is granted.
MYDATA Control Technologies is developed at Fraunhofer IESE as a technical implementation for Data Usage Control. It offers both businesses and private individuals more transparency and self-determination in the use of their data by intercepting events or data flows and enforcing a security decision based on policies. MYDATA Control Technologies can interpret and enforce its own XML-based policy language.
To support users in specifying their policies in the ODRL policy language and translating it into technology-dependent policy languages, a Policy Administration Point and a Policy Transformation Service have been implemented and are available here.
The figure below illustrates the concepts defined by the ODRL Profile for Data Sovereignty.
Data Usage Control can be defined as an extension of attribute-based Access Control. At Fraunhofer IESE, an architecture for Data Usage Control is introduced that extends the XACML architecture for enfocing usage control policies. According to this architecture, a Policy Information Point (PIP) can provide any required information from defined sources. Moreover, Policy Execution Point (PXP) is added to the architecture. PXP can be used to specify and execute an action of a duty in order to fulfill an obligation.
Definition: | A data usage control component |
---|---|
Label: | Usage Control Component |
Identifier: | https://w3id.org/ods/UsageControlComponent |
Note: | It is optional to explicitly specify a data usage control component that is responsible for providing context information or executing a duty action. |
Properties: | Interface Description, Endpoint URI |
Instances: | Policy Information Point, Policy Execution Point |
Definition: | A Usage Control Component that provides needed information for evaluating a constraint. |
---|---|
Label: | has Policy Information Point |
Identifier: | https://w3id.org/ods/hasPIP |
Domain: | Constraint |
Range: | Usage Control Component |
Definition: | A Usage Control Component that executes an action. |
---|---|
Label: | has Policy Execution Point |
Identifier: | https://w3id.org/ods/hasPXP |
Domain: | Action |
Range: | Usage Control Component |
Definition: | The reference to a URI that provides the interface description of a usage control endpoint. |
---|---|
Label: | Interface Description |
Identifier: | https://w3id.org/ods/interfaceDescription |
Domain: | Usage Control Component |
Range: | Usage Control Component |
Definition: | The reference to a URI that expresses an exact endpoint of that usage control endpoint. |
---|---|
Label: | Endpoint URI |
Identifier: | https://w3id.org/ods/endpointURI |
Domain: | Usage Control Component |
Range: | Usage Control Component |
Definition: | This operator is used to express the membership of an individual element in a set. |
---|---|
Label: | In |
Identifier: | https://w3id.org/ods/in |
Class: | odrl:Operator |
Definition: | This operator is used to indicate that one set is entirely contained within another set. |
---|---|
Label: | Subset |
Identifier: | https://w3id.org/ods/subset |
Class: | odrl:Operator |
Definition: | To modify a number by adding a given value to it. |
---|---|
Label: | Add |
Identifier: | https://w3id.org/ods/add |
Note: | The field to be modified can be specified using ods:jsonPath or ods:xPath and the given value can be specified using ods:operand. |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To modify a number by dividing it by a given value. |
---|---|
Label: | Divide |
Identifier: | https://w3id.org/ods/divide |
Note: | The field to be modified can be specified using ods:jsonPath or ods:xPath and the given value can be specified using ods:operand. |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To drop the value of a field. |
---|---|
Label: | Drop |
Identifier: | https://w3id.org/ods/drop |
Note: | The field to be modified can be specified using ods:jsonPath or ods:xPath. |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To encrpyt a data artifact or parts of it to secure it during transmission and to prevent unauthorized access. The encryption algorithm might be specified by a constraint. |
---|---|
Label: | Encrypt |
Identifier: | https://w3id.org/ods/encrypt |
Note: | The encryption algorithm can be specified using ods:encryptionAlgorithm (eg. AES). |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To modify a value by replacing it with a hash of the value. |
---|---|
Label: | Hash |
Identifier: | https://w3id.org/ods/hash |
Note: | The field to be modified can be specified using ods:jsonPath or ods:xpath and the hash algorithm can be specified using ods:hashAlgorithm (eg. SHA256). |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To log information about data usage. It is used to create transparency. |
---|---|
Label: | Log |
Identifier: | https://w3id.org/ods/log |
Note: | The log level can be specified using ods:logLevel left operand. |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To modify a number by multiplying it to a given value. |
---|---|
Label: | Multiply |
Identifier: | https://w3id.org/ods/multiply |
Note: | The field to be modified can be specified using ods:jsonPath or ods:xPath and the given value can be specified using ods:operand. |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | Secure Multiparty Computation (MPC) is a cryptographic protocol that enables a defined set of parties, each party owning a secret value, to compute a function collaboratively while preserving the privacy of their individual inputs. |
---|---|
Label: | Multiparty Computation |
Identifier: | https://w3id.org/ods/mpc |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To notify a party with information about data usage. |
---|---|
Label: | Notify |
Identifier: | https://w3id.org/ods/notify |
Note: | The notification level can be specified using ods:notificationLevel left operand. |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To request for a piece of information or data from an information system or a database. |
---|---|
Label: | Query |
Identifier: | https://w3id.org/ods/query |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To replace a field by a given value. |
---|---|
Label: | Replace |
Identifier: | https://w3id.org/ods/replace |
Note: | The field to be modified can be specified using ods:jsonPath or ods:xpath and the given value can be specified using ods:replaceWith. |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | To replace a field with an anagram of it's value. |
---|---|
Label: | Shuffle |
Identifier: | https://w3id.org/ods/shuffle |
Note: | The field to be modified can be specified using ods:jsonPath or ods:xPath. |
Included In: | odrl:use |
Class: | odrl:Action |
Definition: | A Policy Information Point is a Usage Control Component that provides a specific piece of information. |
---|---|
Label: | Policy Information Point |
Identifier: | https://w3id.org/ods/PIP |
Parent Class: | ods:UsageControlComponent |
Definition: | A Policy Execution Point is a Usage Control Component that executes a specific action. |
---|---|
Label: | Policy Execution Point |
Identifier: | https://w3id.org/ods/PXP |
Parent Class: | ods:UsageControlComponent |
Definition: | An application is a program or piece of software designed to fulfill a particular purpose. |
---|---|
Label: | Application |
Identifier: | https://w3id.org/ods/application |
Class: | odrl:LeftOperand |
Definition: | It refers to the status of a data asset. |
---|---|
Label: | Artifact State |
Identifier: | https://w3id.org/ods/artifactState |
Note: | This operand accepts the following values: ods:anonymized, ods:combined, ods:encrypted, ods:pseudonymized. |
Class: | odrl:LeftOperand |
Definition: | An endpoint refers to a specific address or connection point. |
---|---|
Label: | Endpoint |
Identifier: | https://w3id.org/ods/endpoint |
Class: | odrl:LeftOperand |
Definition: | A function encapsulates a reusable logic. |
---|---|
Label: | Function |
Identifier: | https://w3id.org/ods/function |
Note: | In mathematical contexts, examples include ods:maximum, ods:minimum, and ods:sum. |
Class: | odrl:LeftOperand |
Definition: | It indicates the hash value to be used. |
---|---|
Label: | Hash Algorithm |
Identifier: | https://w3id.org/ods/hashAlgorithm |
Note: | For example, SHA256. |
Class: | odrl:LeftOperand |
Definition: | It indicates the encryption algorithm to be used. |
---|---|
Label: | Encryption Algorithm |
Identifier: | https://w3id.org/ods/encryptionAlgorithm |
Note: | For example, AES. |
Class: | odrl:LeftOperand |
Definition: | An expression that refers to a part of a JSON structured data. |
---|---|
Label: | JSONPath |
Identifier: | https://w3id.org/ods/jsonPath |
Class: | odrl:LeftOperand |
Definition: | An expression that refers to a part of a JSON structured data. |
---|---|
Label: | JSON String Path |
Identifier: | https://w3id.org/ods/jsonStringPath |
Note: | It is used by Rego policy language. |
Class: | odrl:LeftOperand |
Definition: | It refers to the log level. |
---|---|
Label: | Log Level |
Identifier: | https://w3id.org/ods/logLevel |
Note: | This operand accepts the following values: ods:onActionOperated, ods:onAllow, ods:onDeny, ods:onDutyExercised. |
Class: | odrl:LeftOperand |
Definition: | It refers to the notification level. |
---|---|
Label: | Notification Level |
Identifier: | https://w3id.org/ods/notificationLevel |
Note: | This operand accepts the following values: ods:onActionOperated, ods:onAllow, ods:onDeny, ods:onDutyExercised. |
Class: | odrl:LeftOperand |
Definition: | An operand is a required element within an arithmetic or logical operation. |
---|---|
Label: | Operand |
Identifier: | https://w3id.org/ods/operand |
Note: | Operands can be numeric values or expressions. |
Class: | odrl:LeftOperand |
Definition: | An expression that refers to a file within a system, or an element within a hierarchical structure. |
---|---|
Label: | Path |
Identifier: | https://w3id.org/ods/path |
Class: | odrl:LeftOperand |
Definition: | It specifies a new value for a specific field. |
---|---|
Label: | Replace With |
Identifier: | https://w3id.org/ods/replaceWith |
Note: | It gives a value for ods:replace action. |
Class: | odrl:LeftOperand |
Definition: | Role refers to an end user's role. |
---|---|
Label: | Role |
Identifier: | https://w3id.org/ods/role |
Class: | odrl:LeftOperand |
Definition: | It refers to an environment state. |
---|---|
Label: | State |
Identifier: | https://w3id.org/ods/state |
Note: | Not be confused with artifact state. |
Class: | odrl:LeftOperand |
Definition: | It refers to a particular end user. |
---|---|
Label: | User |
Identifier: | https://w3id.org/ods/user |
Class: | odrl:LeftOperand |
Definition: | An expression that refers to specific elements of an XML document. |
---|---|
Label: | XPath |
Identifier: | https://w3id.org/ods/xPath |
Class: | odrl:LeftOperand |
Definition: | Indicates that the asset is anonymized. |
---|---|
Label: | Anonymized |
Identifier: | https://w3id.org/ods/anonymized |
Class: | odrl:RightOperand |
Definition: | Indicates that the asset is combined. |
---|---|
Label: | Combined |
Identifier: | https://w3id.org/ods/combined |
Class: | odrl:RightOperand |
Definition: | Indicates that the asset is encrypted. |
---|---|
Label: | Encrypted |
Identifier: | https://w3id.org/ods/encrypted |
Class: | odrl:RightOperand |
Definition: | The maximum function to determine the largest value among a set of numbers. |
---|---|
Label: | Maximum |
Identifier: | https://w3id.org/ods/maximum |
Class: | odrl:RightOperand |
Definition: | The minimum function to determine the smallest value among a set of numbers. |
---|---|
Label: | Minimum |
Identifier: | https://w3id.org/ods/minimum |
Class: | odrl:RightOperand |
Definition: | Log usage information or notify a party when the action of the rule is operated. |
---|---|
Label: | On action operated |
Identifier: | https://w3id.org/ods/onActionOperated |
Class: | odrl:RightOperand |
Definition: | Log usage information or notify a party when performing the action of the rule is permitted. |
---|---|
Label: | On allow |
Identifier: | https://w3id.org/ods/onAllow |
Class: | odrl:RightOperand |
Definition: | Log usage information or notify a party when performing the action of the rule is prohibited. |
---|---|
Label: | On deny |
Identifier: | https://w3id.org/ods/onDeny |
Class: | odrl:RightOperand |
Definition: | Log usage information or notify a party when the action of the duty is executed. |
---|---|
Label: | On duty exercised |
Identifier: | https://w3id.org/ods/onDutyExercised |
Class: | odrl:RightOperand |
Definition: | Indicates that the asset is pseudonymized. |
---|---|
Label: | Pseudonymized |
Identifier: | https://w3id.org/ods/pseudonymized |
Class: | odrl:RightOperand |
Definition: | The sum function to determine the total sum of a set of numbers. |
---|---|
Label: | Sum |
Identifier: | https://w3id.org/ods/sum |
Class: | odrl:RightOperand |
As well as sections marked as non-normative, all authoring guidelines, diagrams, examples, and notes in this specification are non-normative. Everything else in this specification is normative.
This is required for specifications that contain normative material.
The ODRL Vocabulary references the following Namespaces:
Prefix | Namespace | Description |
---|---|---|
odrl | http://www.w3.org/ns/odrl/2/ | ODRL Vocabulary |
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 |
ods | https://w3id.org/ods/ | ODRL Profile for Usage Control |