W3C

Open Digital Rights Language (ODRL) Version 1.1

W3C Note 19 September 2002

This version:
http://www.w3.org/TR/2002/NOTE-odrl-20020919/
Latest version:
http://www.w3.org/TR/odrl
Author:
Renato Iannella, IPR Systems

Abstract

The Open Digital Rights Language (ODRL) is a proposed language for the Digital Rights Management (DRM) community for the standardisation of expressing rights information over content. The ODRL is intended to provide flexible and interoperable mechanisms to support transparent and innovative use of digital resources in publishing, distributing and consuming of electronic publications, digital images, audio and movies, learning objects, computer software and other creations in digital form. The ODRL has no license requirements and is available in the spirit of "open source" software.

Status of this document

This document is a submission to the World Wide Web Consortium from IPR Systems Pty Ltd (see Submission Request, W3C Staff Comment). For a full list of all acknowledged Submissions, please see Acknowledged Submissions to W3C.

This document is a NOTE made available by the W3C for discussion only. Publication of this Note by W3C indicates no endorsement by W3C or the W3C Team, or any W3C Members. W3C has had no editorial control over the preparation of this Note. This document is a work in progress and may be updated, replaced, or rendered obsolete by other documents at any time.

A list of all W3C technical reports can be found at http://www.w3.org/TR/.

Feedback and Comments

Please send feedback to <feedback@odrl.net> and general comments to <info@odrl.net>. Interested parties wishing to support the ODRL Initiative, please send email to <support@odrl.net>.

Further information on ODRL can be found at <http://odrl.net>

1 Overview

Digital Rights Management (DRM) involves the description, layering, analysis, valuation, trading and monitoring of the rights over an enterprise's tangible and intangible assets. DRM covers the digital management of rights - be they rights in a physical manifestation of a work (eg a book), or be they rights in a digital manifestation of a work (eg an ebook). Current methods of managing, trading and protecting such assets are inefficient, proprietary, or else often require the information to be wrapped or embedded in a physical format.

A key feature of digitally managing rights will be the substantial increase in re-use of digital material on the Internet as well as the increased efficiency for physical material. The pervasive Internet is changing the nature of distribution of digital media from a passive one way flow (from Publisher to the End User) to a much more interactive cycle where creations are re-used, combined and extended ad infinitum. At all stages, the rights need to be managed and honoured with trusted services.

Current DRM technologies include languages for describing the terms and conditions, tracking asset usages by enforcing controlled environments or encoded asset manifestations, and closed architectures for the overall management of rights.

The Open Digital Rights Language (ODRL) provides the semantics for DRM expressions in open and trusted environments whilst being agnostic to mechanisms to achieve the secure architectures.

1.1 The Bigger Picture

It is envisaged that ODRL will "plug into" an open framework that enables peer-to-peer interoperability for DRM services. However, ODRL can also be used as an mechanism to express rights statements on its own and to plug into existing DRM architectures and frameworks.

DRM has traditionally been flavoured with security and encryption as a means to solve these issues, that is, Digital Rights Enforcement. This is the first-generation of DRM and represents a substantial narrowing of its real and broader capabilities. Second-generation DRM systems will provide these additional functions and support end-to-end supply chain services.

DRM systems should be based on and designed around open functional architectures and a robust and extensible information model. See [IANNELLA] for an overview of DRM Architectures and [ERICKSON] for DRM-enabled digital object models. The layers and relationships of rights can also quickly become very complex [HIGGS] and DRM systems must be designed to cater for this intricacy.

DRM systemts must also address and be consistent with the non-technical issues, including legal, business and social aspects of rights management. A recent W3C DRM Workshop [W3C-DRM] produced a number of position papers highlighting these important issues.

1.2 Scope

ODRL complements existing analogue rights management standards by providing digital equivalents, and supports an expandible range of new services that can be afforded by the digital nature of the assets in the Web environment. In the physical environment, ODRL can also be used to enable machine-based processing for rights management.

ODRL is a standard language and vocabulary for the expression of terms and conditions over assets. ODRL covers a core set of semantics for these purposes including the rights holders and the expression of permissible usages for asset manifestations. Rights can be specified for a specific asset manifestation (ie format) or could be applied to a range of manifestations of the asset.

ODRL is focused on the semantics of expressing rights languages and definitions of elements in the data dictionary. ODRL can be used within trusted or untrusted systems for both digital and physical assets. However, ODRL does not determine the capabilities nor requirements of any trusted services (eg for content protection, digital/physical delivery, and payment negotiation) that utilises its language. Clearly, however, ODRL will benefit transactions over digital assets as these can be captured and managed as a single rights transaction. In the physical world, ODRL expressions would need an accompanying system with the distribution of the physical asset.

ODRL defines a core set of semantics. Additional semantics can be layered on top of ODRL for third-party value added services with additional data dictionaries.

ODRL does not enforce or mandate any policies for DRM, but provides the mechanisms to express such policies. Communities or organisations, that establish such policies based on ODRL, do so based on their specific business or public access requirements.

ODRL depends on the use of unique identification of assets and parties. Common identification is a very difficult problem to have agreement across sectors and is why identification mechanisms and policies are outside the scope of ODRL. Sector-specific versions of ODRL may address the need to infer information about asset and party identifiers.

The ODRL model is based on an analysis and survey of sector specific requirements (including models and semantics), and as such, aims to be compatible with a broad community base. ODRL intends to meet the common requirements for many sectors and has been influenced by the ongoing work and specifications/models of the following groups:

ODRL proposes to be compatible with the above groups by defining an independent and extensible set of semantics. ODRL does not depend on any media types as it is aimed for cross-sector interoperability.

1.3 Specification Overview

This document, along with its normative references, includes all the specification necessary for the implementation of interoperable ODRL applications.

The key words must, must not, required, shall, shall not, should, should not, recommended, may, and optional in this specification are to be interpreted as described in [RFC2119] which defines the significance of each particular requirement.

Examples used in this document are for demonstration purposes only.

The ODRL specification contains the following main sections:

The formal Expression Language and Data Dictionary elements are defined in:

2 ODRL Expression Language

The models for the ODRL language and data dictionary contain the structure and core semantics for the expressions. These models provide the overall framework for the expressions into which elements (from DRM data dictionaries) can be applied.

Note: The figures in this section cover both the Expression Language entities (shown as shadowed rectangles with "EX" in the top left corner) and the Data Dictionary elements (shown as rectangles with "DD" in the top left corner). Other namespaces ("DS" for XML Digital Signatures) are also shown.

2.1 ODRL Foundation Model

ODRL is based on an extensible model for rights expressions which involves a number of core entities and their relationships. This ODRL Foundation Model is shown in Figure 1.

Figure 1. ODRL Foundation Model

ODRL Foundation Model  

The model, as shown in Figure 1, consists of the following three core entities:

The Assets include any physical or digital content. The Assets must be uniquely identified and may consist of many subparts and be in many different formats. Assets can also be non-tangible expressions of works and/or manifested in particular renditions. Assets may also be encrypted to enable secure distribution of content.

The Rights include Permissions which can then contain Constraints, Requirements, and Conditions. Permissions are the actual usages or activities allowed over the Assets (eg Play a video Asset). Constraints are limits to these Permissions (eg Play the video for a maximum of 5 times). Requirements are the obligations needed to exercise the Permission (eg Pay $5 each time you Play the video). Conditions specify exceptions that, if become true, expire the Permissions and renegotiation may be required (eg If Credit Card expires then all Permissions are withdrawn to Play the video).

The Parties include end users and Rights Holders. Parties can be humans, organisations, and defined roles. End users are usually the asset consumers. Rights Holders are usually parties that have played some role in the creation, production, distribution of the Asset and can assert some form of ownership over the Asset and/or its Permissions. Rights Holders may also receive royalties.

With these three core entities, the foundation model can then express Offers and Agreements. Offers are proposals from Rights Holders for specific Rights over their Assets. Agreements are when Parties enter into contracts or deals with specific Offers. The model can also then express revoking of any Offers or Agreements.

The representation of Offers and Agreements is important core aspect of ODRL. This makes clear what the purpose of the rights expressions is achieving. Many different Offers can be created to meet various business models for assets. Offers can be linked, creating a hierarchy of options for end users. Agreements are the transformation of an Offer into a license for rights over an asset by parties. Also, there is no requirement that Offers be made prior to Agreements. After human interactions, Agreements can be created to express the accepted terms and conditions.

Most entities in the model can support a specific Context. A Context, which is relative to the entity, can describe further information about that entity or the relationship between entities. For example, the Context of an Agreement may specify the date of the transaction, the Context of a Party may specify their role. Although not mandatory, the use of Context to assign unique identifiers to the entire rights expression is highly recommended.

The Context also plays a very important role in identifying the entity (using a unique number/code from a standard identification scheme). This ability to uniquely reference any entity can be utilised in providing linkages between entities. For example, an Agreement can be linked to the original Offer by the latter's unique id number.

The general description of the Party and Asset entities is outside the scope of ODRL. What is in scope is that these entities must be referenced by using a Uniform Resource Identifier [URI]. The URI is a unique identification system and may also include a resolution mechanism to the actual entity. Both of these entities contain a mechanism to refer to their unique identifiers, as well as a Context description.

The Asset entity (sometimes referred to as a Work, Content, Creation, or Intellectual Property), is viewed as a whole entity. If the Rights are assigned at the Asset's subpart level, then such parts would require to also be uniquely identifiable. However, ODRL can specify constraints on subparts of the asset. Additionally, Assets can be identified as to their layer of intellectual property as defined by the IFLA model [IFLA]. These include Work, Expression, Manifestation, and Item. This features also allows rights to be expressed over non-tangible assets and individual instances.

These core Entities together allow for a wide and flexible range of ODRL expressions to be declared. Additionally, the expressions can be digitally signed.

The core entities (except for Asset and Party) are further explained in the following sections:

The security-based entities (Signature and Encryption) are further explained in the following section:

Additional features of the ODRL expression language are explained in the following sections:

2.1.1 Foundation XML Example

The ODRL Foundation Model can be expressed using an XML binding. An example is shown in Example 1.

Example 1. Foundation Model XML Syntax
<rights>
	<context>.
		<uid> ... </uid>
	</context>
	<offer>
		<asset> ... </asset>
		<permission>
			<permission-type>
				<requirement> ... </requirement>
				<constraint> ... </constraint>
			</permission-type>
			<condition> ... </condition>
		</permission>
		<party>
			<context> ... </context>
			<rightsholder> ... </rightsholder>
		</party>
	</offer>
	<agreement>
		<context> ... </context>
		<party> ... </party>
		<permission> ... </permission>
		<asset> ... </asset>
	</agreement>
</rights>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.2 ODRL Permission Model

ODRL supports the expression of Permissions for both Offers and Agreements. This is the recognised set of activities allowed over the Asset. The ODRL Permission Model is shown in Figure 2.

Figure 2. ODRL Permission Model

ODRL Permission Model  

The Permission entity consists of an aggregation of four abstract entities. The abstract entities (depicted as clouds in Figure 2) are solely used to group similar permissions, and include:

Note: The listed elements above (eg Display, Print etc) are defined in full in Section 3 "ODRL Data Dictionary Semantics" and form the basis of the ODRL Data Dictionary.

Additionally, the Permissions support:

A Permission must be associated with one or more Assets via an Offer or Agreement. This association can be explict (ie Permission is a child element of Offer or Agreement) or implict via a reference from an Offer/Agreement). A Permission can be associated with zero or more Constraints, Conditions, and Requirements.

Important Note:

A Permission that is not specified in any Rights Expressions is not granted. That is, no assumptions should be made with regard to Permissions if they are not explicitly mentioned in the ODRL expression.

2.2.1 Permission XML Example

The ODRL Permission Model can be expressed using an XML binding. An example is shown in Example 2 in which permissions for display, print (with a constraint), and annotate have been granted.

Example 2. Permission Model XML Syntax
<permission>
	<display/>
	<print>
		<constraint> ... </constraint>
	</print>
	<annotate/> 
</permission>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.3 ODRL Constraint Model

ODRL supports the expression of Rights Constraints. This is the recognised set of restrictions on the Permissions over the Asset. The ODRL Constraint Model is shown in Figure 3.

Figure 3. ODRL Constraint Model

ODRL Constraint Model  

The Constraints entity consists of an aggregation of several abstract entities. The abstract entities (depicted as clouds in Figure 3) are solely used to group similar constraints, and include:

Note: The listed elements above (eg Individual, Group etc) are defined in full in Section 3 "ODRL Data Dictionary Semantics" and form the basis of the ODRL Data Dictionary.

A Constraint is associated with one Permission. If a Constraint appears at the same level as a number of Permissions, then the Constraint applies to all of the Permissions.

Constraints can also have zero or more other Constraints. In this case, the child constraint applies to the parent constraint. As an example of this, consider the <unit> constraint and it's meanings when used with the <count> and <range> constraints:

Additionally all Constraint elements may have a Context element (to support the use of uid) and a "type" attribute (to refer to additional information).

Important Note:

Any Constraint that is expressed but cannot be performed by the consuming system, must not be granted. That is, if a system does not understand how to guarantee that a specified constraint be honoured it must not grant the permission at all.

For Permissions with multiple constraints, all constraints must be honoured with no conflicts arising. An error must be generated if the latter is true.

2.3.1 Constraint XML Example

The ODRL Constraint Model can be expressed using an XML binding. An example is shown in Example 3 in which the display permission is constrained to a particular CPU. The print permission is limited to printing up to five times. The play permission is limited to a recurring period of seven days which itself can only occur up to ten times.

Example 3. Constraint Model XML Syntax
<display>
	<constraint>
		<cpu/>
	</constraint>
</display>
<print>
	<constraint>
		<count>5</count>
	</constraint>
</print>
<play>
	</constraint>
		<interval>P7D</interval>
		<constraint>
			<count>10 </count>
		</constraint>
	</constraint>
 </play>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.3.2 Transfer Permission Constraint Example

The Transfer Permission constraint is used to enable the downstream distribution of rights over assets. It applies only to assets that have one of the Transfer Permission applied as this ensures that the authorised party can transfer rights to other users. (This is sometimes called "narrow" rights.)

The Transfer Permission constraint may contain a list of other Permissions that either must be or may be passed along when the asset is transferred. If a Permission is not listed, then those permissions may not be passed along when the asset is transferred. In other words, the default is that no Permissions may be passed along when the asset is transferred.

When a Permission is passed along, the party that transfers the asset may or may not be allowed to alter the Permissions (typically by narrowing it). The Transfer Permission entity supports the following "downstream" attribute values to indicate this:

  • equal
  • less
  • notgreater (less than or equal to)

If the downstream attribute is "equal", the Permissions must be passed along without change when the asset is transferred. This is the default situation.

If the downstream attribute is "less", a smaller subset of Permissions must be passed along when the asset is transferred.

If the downstream attribute is "notgreater", the Permissions may be narrowed when the asset is transferred, but it must not be expanded.

The following Example 4 shows how the Transfer Permission constraint (applied to the Sell transfer permission) contains two options. The first option contains two other permissions (print, display) and the downstream attribute is set to "equal". The means that when the asset is sold to other users, the seller (authorised under the agreement) must provide these Permissions. The second option also contains two other permissions (aggregate, annotate) and the downstream attribute is set to "notgreater". The means that when the asset is sold to other users, the seller may provide these two Permissions, one of them, or none of them.

Example 4. Constraint Model - Transfer Permission - XML Syntax
<permission>
	<sell>
		<constraint>
			<transferPerm downstream="equal">
				<print/>
				<display/>
			</transferPerm>
			<transferPerm downstream="notgreater">
				<aggregate/>
				<annotate/>
			</transferPerm>
		</constraint>
	</sell>
</permission>

2.3.3 For Each Member Constraint

Some constraints are based on entities that could contain a number of sub-entities (ie members).

For example, a Group constraint would normally refer to a collection of individuals. Under normal conditions, a Print permission with a Count constraint of "1" that appeared with a Group constraint would indicate that the asset can only be printed once. However, we may wish the Count constraint of "1" to apply to each member of the Group constraint, thus enabling each individual to print the asset once.

In cases where the constraint needs to apply at the level of each member of another constraint then we can support this feature with a "forEachMember" mechanism. This mechanism enables any member-based constraint to be identified and the referring constraint will apply to each member of that constraint.

ODRL defines a URI to represent these semantics:

This URI value is used in the "type" attribute of the constraint element. The constraint elements refer to each other using id/idref (see Section 2.14).

Consider Example 4B where an asset has been acquired for teaching a class (eg JAVA101). The teacher has purchased the rights to an asset and the first constraint (with id of "Student01") enables any member of the identified group to display the asset. The print permission also has a constraint of "1" but this constraint refers to the first constraint (using idref) and has the "forEachMember" type attribute. This means that each member of the Group can print the asset once (and not that the asset can be printed once in total).

Example 4B. Constraint Model - For Each Member - XML Syntax
<display>
	 <constraint id="student01">
		  <group>
			   <context>
		    		<uid>ldap://dir.uni.au/class=JAVA101;o=A-UNI;c=AU</uid>
		   	</context>
		  </group>
	 </constraint>
</display>
<print>
	 <constraint idref="student01" type="http://odrl.net/1.1/#forEachMember">
	  	<count>1</count>
	 </constraint>
</print>

2.4 ODRL Requirement Model

ODRL supports the expression of Rights Requirements. This is the recognised set of preconditions that must be met in order to obtain the related permissons. The ODRL Requirements Model is shown in Figure 4.

Figure 4. ODRL Requirement Model

ODRL Requirement Model  

The Requirement entity consists of three abstract entities. The abstract entities (depicted as a cloud in Figure 4) are solely used to group similar requirements, and includes:

Note: The listed elements above (eg PrePay etc) are defined in full in Section 3 "ODRL Data Dictionary Semantics" and form the basis of the ODRL Data Dictionary.

A Requirement can be associated with one or many Permissions. If a Requirement appears at the same level as a number of Permissions, then the Requirement applies once to all of the Permissions. For Permissions with multiple Requirements, all Requirements must be honoured and no conflicts should arise. An error must be generated if the latter is true.

Additionally all Requirement elements may have a Context element.

The ODRL Data Dictionary also defines the common reusable Payment entity, A payment may consist of the fixed amount to pay, the currency of the amount, the taxation due (as a percentage) and a taxation code.

Important Note:

Any Requirement that is expressed but cannot be performed by the consuming system, must not be granted. That is, if a system does not understand how to guarantee that a specified Requirement has been met, then it must not grant the permission at all. Users of the system must be informed of the situation.

2.4.1 Requirement XML Example

The ODRL Requirement Model can be expressed using an XML binding. An example is shown in Example 5 in which the play permission requires a $AUD20 fee (plus 10% tax) to be paid per use.

Example 5. Requirement Model XML Syntax
<play>
	<requirement>
		<peruse>
			<payment>
				<amount currency="AUD">20.00</amount>
				<taxpercent code="GST">10.0</taxpercent>
			</payment>
		</peruse>
	</requirement>
</play>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.5 ODRL Condition Model

ODRL supports the expression of Rights Conditions. These are exceptions that are conditional events that, if become true (or occur), render the Permissions as no longer valid. The ODRL Condition Model is shown in Figure 5.

Figure 5. ODRL Condition Model

ODRL Condition Model  

The Condition entity reuses two existing entities:

Note: The elements above are defined in full in Section 3 "ODRL Data Dictionary Semantics" and form the basis of the ODRL Data Dictionary.

If a Condition becomes true (ie the specified event occurs), then the system must cease granting the Permission to the user. The system may inform the user of the situation and offer information about renegotiating a new agreement.

A Condition can be associated with one or many Permissions. If a Condition appears at the same level as a number of Permissions, then the Condition applies once to all of the Permissions. For Permissions with multiple Conditions, all Conditions must be honoured and no conflicts should arise. An error must be generated if the latter is true.

Additionally all Condition elements may have a Context element.

Important Note:

Any Condition that is expressed but cannot be met or understood by the consuming system, must not grant the related Permissions. That is, if a system does not understand how to guarantee that a specified Condition has been met, then it must not grant the Permissions at all.

It is also important to note that Conditions and Constraints/Permissions behave in a similar ways but with opposite effect. A right can be expression with a Permission (what you are allowed to do) and a Constraint (limiting your permission). However, a Condition expresses the same semantics but as exceptions. If those conditions are met, the right is extinguished.

2.5.1 Condition XML Example

The ODRL Condition Model can be expressed using an XML binding. An example is shown in Example 6 in which there are two permissions; sell and play. The play permission has a constraint on a particular type of software meaning that the play permission must be expired if and when that software is used to play the video. Additionally, there is a constraint that applies to all of the permissions (both play and sell). This constraint is on the spatial area (Australia) meaning that the permissions must be expired if and when the permissions are carried out in Australia.

Example 6. Condition Model XML Syntax
<permission>
	<sell/>
	<play>
		<condition>
			<constraint>
				<software> ... </software>
			<constraint/> 
		</condition>
	</play>
</permission>
<condition>
	<constraint>
		<spatial>
			<context>
				<uid>iso3166:AU</uid>
			</context>
		</spatial>
	<constraint/> 
</condition>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.6 ODRL Rights Holder Model

ODRL supports the identification of Rights Holders. The Rights Holder is a recognised Party and any set of entitlements that they are due for the use of their Asset. The ODRL Rights Holder Model is shown in Figure 6.

Figure 6. ODRL Rights Holder Model

ODRL Rights Holder Model  

The Rights Holder entity consists of one abstract entity: The abstract entity (depicted as a cloud in Figure 6) is solely used to group similar Rights Holder royalty entitlements, and include:

Note: The listed elements above (eg Percentage etc) are defined in full in Section 3 "ODRL Data Dictionary Semantics" and form the basis of the ODRL Data Dictionary.

A Rights Holder can contain one or more Parties, and can be associated with one or many Assets. Parties can also be nested to indicate dependencies. For example; to support Rights Holder Sonya receiving 10% of Rights Holder Fiona's royalty (who may receive a fixed amount).

2.6.1 Rights Holder XML Example

The ODRL RightsHolder Model can be expressed using XML. An example is shown in Example 7 in which two identified parties share royalties with 90% to one and 10% to the other for each net transaction over their asset.

Example 7. RightsHolder Model XML Syntax
<party>
	<context> ... </context>
	<rightsholder>
		<percentage>90</percentage>
	</rightsholder>
</party> 
<party> 
	<context> ... </context>
	<rightsholder>
		<percentage>10</percentage>
	</rightsholder>
</party>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.7 ODRL Context Model

ODRL supports expressing additional information about entities and related entities. The ODRL Context Model is shown in Figure 7.

Figure 7. ODRL Context Model

ODRL Context Model  

The Context entity is an aggregation of ten other entities and includes:

Note: The listed elements above (eg UID etc) are defined in full in Section 3 "ODRL Data Dictionary Semantics" and form the basis of the ODRL Data Dictionary.

The Context is used for a number of different purposes and can be associated with any entity. When declaring Assets, it is used to indicate the unique identifier for the asset. When declaring Parties, it is used to indicate the unique identifier for the party, what role they may have played, and their name. The whole rights expression (eg Offer) can also have a Context to indicate the unique identifier for the expression as well as when it was created. The Agreement entity can also have a Context to provide information about the transaction.

The text-based Content entities (ie Name and Remark) may also indicate the human language of the text value (using the xml "lang" attribute).

Important Note:

The reference to identifiers (in the uid element) and vocabulary values (in the role element) should be conformant URIs. For identifiers, this requires the value to be one of the URI family (eg URL, URNs etc). For vocabulary values, this requires the scheme to be registered with an appropriate namespace. This mechanisms provides the most flexibility for additional URIs and vocabulary schemes to be utilised in ODRL. However, for backward compatibility, the <uid> element may also contain string datatypes.

Multiple uid elements can also be used in the context. For example, an Asset may contain many parts and each can be referenced via a uid element enabling the collection to be viewed as a whole Asset.

2.7.1 Context XML Example

The ODRL Context Model can be expressed using an XML binding. An example is shown in Example 8 in which the context for a party is described.

Example 8. Context Model XML Syntax
<party>
	<context>
		<uid>x500:c=EX;o=FederalLibrary;ou=Registry;cn=MariaKBrown</uid>
		<name>Maria Brown</name>
		<role>onix:AO1</role>
		<reference>http://www.maria-k-brown.com/vcard.xml</reference>
	</context>
</party>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.8 ODRL Offer Model

ODRL supports expressing offers made from Rights Holders for specific rights over their assets. The ODRL Offer Model is shown in Figure 9.

Figure 8. ODRL Offer Model

ODRL Offer Model  

The Offer entity is an aggregation of four other entities and includes:

The Offer entity allows for detailed expressions of particular Rights Holders who have negotiated and agreed to offer particular permissions over their assets. Although not mandatory, the use of Context to assign unique identifiers to Offers is highly recommended. An Offer must include at least one Asset and Permission. If Rights Holder is not specified, then the system must support obtaining this information from other sources.

2.8.1 Offer XML Example

The ODRL Offer Model can be expressed using an XML binding. An example is shown in Example 10 in which an offer, with context, is described for a set of permissions over an asset with two rights holders.

Example 9. Offer Model XML Syntax
<offer>
	<context>
		<uid>http://www.example.com/offer/3893823823472384888373</uid>
		<date><fixed>2001-10-10T09:00:00</fixed></date>
		<service>http://www.example.com/e-book-store</service>
	</context>
	<asset> ... </asset>
	<permission> ... </permission>
	<party>
		<rightsholder> ... </rightsholder>
	</party>
</offer>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.9 ODRL Agreement Model

ODRL supports expressing agreements made between parties for specific rights over assets. The ODRL Agreement Model is shown in Figure 9.

Figure 9. ODRL Agreement Model

ODRL Agreement Model  

The Agreement entity is an aggregation of four other entities and includes:

The Agreement entity allows for detailed expressions of particular parties who have negotiated and agreed to a set of particular permissions over some assets. Although not mandatory, the use of Context to assign unique identifiers to Agreements is highly recommended. An Agreement must include at least one Asset and Permission. If Party is not specified, then the system must support obtaining this information from other sources.

2.9.1 Agreement XML Example

The ODRL Agreement Model can be expressed using an XML binding. An example is shown in Example 10 in which an agreement, with context, is described between a party and a set of permissions over an asset.

Example 10. Agreement Model XML Syntax
<agreement>
	<context>
		<uid>doi:10.999/license/20010701/8736282828AAS</uid>
		<date><fixed>2001-07-01T10:31:30</fixed></date>
		<pLocation>Sydney, Australia</pLocation>
		<remark>Transacted by Example.Com</remark>
	</context>
	<party>
		<context> ... </context>
	</party>
	<asset> ... </asset>
	<permission>
		 ...
	</permission>
</agreement>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.10 ODRL Revoke Model

ODRL supports revoking offers, agreements, and other rights expressions. The ODRL Revoke Model is shown in Figure 10.

Figure 10. ODRL Revoke Model

ODRL Revoke Model  

The Revoke entity is an aggregation of one other entity:

The Revoke entity allows for the specification, via the unique identifier (uid) in Context, of the rights expression that is being revoked. The identifier (and identifier scheme) must be known to the consuming system.

Since the unique identifier (uid) in Context can be applied to any of the following:

then any (or all) of the above can be revoked.

Multiple expressions can be revoked at one time with multiple contexts in a Revoke statement.

2.10.1 Revoke XML Example

The ODRL Revoke Model can be expressed using an XML binding. An example is shown in Example 11 in which the prior agreement expressed in Example 10 (above) is being revoked. The Agreement identifier is used by the uid element.

Example 11. Revoke Model XML Syntax
<rights>
	<revoke>
		<context>
			<uid>doi:10.999/license/20010701/8736282828AAS</uid>
			<date><fixed>2001-10-30T12:30:30</fixed></date>
			<remark>Error in Original Agreement</remark>
		</context>
	</revoke>
</rights>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.11 ODRL Security Model

ODRL supports both secure rights expressions with digital signatures and specifying the encryption of assets. The security model uses a profile of the W3C XML Signature [XML-SIG] and W3C XML Encryption [XML-ENC] specifications to support enveloped signing of the entire rights expression (when using an XML binding) and including encryption information about assets. The ODRL security profile uses a subset of the elements used in these two specifications to ensure interoperability.

2.11.1 Encryption

The ODRL Encryption Model is shown in Figure 11 and consists of additional ODRL entities (entities marked with "EX") and entities taken from the Digital Signature (entities marked with "DS") and Encryption (entities marked with "EC") specifications.

Figure 11. ODRL Encryption Model

ODRL Encryption Model  

To support information about the encryption of assets, ODRL defines a new entity called "Digest" that is a child of the ODRL Asset entity.

The Digest entity is designed to protect the integrity of the binding with the associated content and contains the following child entities:

  • DigestMethod - indicates the algorithm used to calculate the digest value. The "SHA-1" algorithm must be supported.
  • DigestValue - the value of the calculated digest.

The Asset entity contains a single "Key Info" entity that can either contain:

  • "Key Value" and "Key Name", or
  • multiple "Encrypted Key" child entities.

The Encrypted Key entity contains the following child entities:

  • EncryptionMethod - indicates the encryption algorithm used. The "RSA" algorithm must be supported.
  • Cipher Data - contains the raw encrypted data in the CipherValue child entity.
  • Key Info - See section Section 2.11.3 "Digital Signature" for details on this entity.

2.11.2 XML Encryption Profile

A ODRL Encryption Profile is limited to the following required constraints:

  • The permissible EncryptionMethod is RSA:
    • http://www.w3.org/2001/04/xmlenc#rsa-1_5
  • The permissible KeyInfo is X509Data:
    • http://www.w3.org/2000/09/xmldsig#X509Data

2.11.3 Digital Signature

The ODRL Digital Signature Model is shown in Figure 12 and consists of entities taken from the Digital Signature (entities marked with "DS") and Encryption (entities marked with "EC") specification.

Figure 12. ODRL Digital Signature Model

ODRL Digital Signature Model  

To support the digital signing of the rights expression, ODRL utilises entities from the XML Signature specification. The ODRL expression and Signature are "enveloped" within the "rights" entity. The Signature entity is used to refer to the rights expression via its "id" attribute.

The Signature entity includes the "SignedInfo" entity containing the following three entities:

  • CanonicalizationMethod - specifies the algorithm for canonicalization to be applied to the SignedInfo element prior to performing signature calculations. The "C14N" algorithm must be supported
  • SignatureMethod - indicates the method used to generate the signature. The "RSA" method must be supported
  • Reference - a link to the rights expression (via reference to its "id"). The Reference entity also contains a Transform entity to indicate any transformations required ("Enveloped Signature" and "C14N" are required to be supported in that order). The Reference entity also contains the DigestMethod and DigestValue entities (as described above in Section 2.11.1 "Encryption").

The Signature entity also includes:

  • SignatureValue - the base64 encoded signature value.
  • KeyInfo - this entity contains three other child entities; "X509Data", "SPKI Data" and "Key Name".

The "Key Name" entity contains a string value which may be used by the signer to communicate a key identifier to the recipient.

The "SPKI Data" entity contains information related to Simple Public Key Infrastructure (SPKI) public key pairs, certificates and other SPKI data and includes the "SPKI S-Exp" entity which is the base64 encoding of an SPKI canonical S-expression.

The "X509 Data" entity includes the following:

  • X509 Certificate - contains a base64-encoded binary Distinguished Encoding Rules (DER) X509 V.3 certificate
  • X509 SKI - contains the base64-encoded plain (non-DER-encoded) value of a X509 V.3 Subject Key Identifier (SKI) extension
  • X509 CRL - contains a base64-encoded Certificate Revocation List (CRL)

2.11.4 XML Digital Signature Profile

A ODRL Digital Signature Profile signature is a valid signature (as defined in [XML-SIG]) limited to the following required constraints:

  • The permissible CanonicalizationMethod is Canonical XML:
    • http://www.w3.org/TR/2001/REC-xml-c14n-20010315
  • The permissible SignatureMethod is RSA.
    • http://www.w3.org/2000/09/xmldsig#rsa-sha1
  • The permissible DigestMethod is SHA-1
    • http://www.w3.org/2000/09/xmldsig#sha1
  • The permissible Transform is Enveloped Signature and Canonical XML:
    • http://www.w3.org/TR/2001/REC-xml-c14n-20010315
    • http://www.w3.org/2000/09/xmldsig#enveloped-signature
  • The permissible KeyInfo is X509Data and SPKIData
    • http://www.w3.org/2000/09/xmldsig#X509Data
    • http://www.w3.org/2000/09/xmldsig#SPKIData

2.11.5 Security XML Example

The ODRL Security Model can be expressed using XML. Example 12 shows the asset element now including the encryption element with appropriate digest and content encryption key (cek) values.

Example 13 shows a rights expression that has been digitally signed. The rights expression element has been allocated the "id" of "MyRightsData". (Note: this "id" attribute is not the same as the "uid" element used in the "context" element, although they both could have the same value.) The id is used by the "Reference" element inside the Signature element. The "transforms" element also indicates the algorithms required to process the signed XML expression.

Both Example 12 and Example 13 need to include a mixture of XML namespaces (to support ODRL, XML Signature, and XML Encryption) and these are clearly indicated with the namespaces prefixes.

Example 12. Security Model XML Syntax - Encryption
<?xml version="1.0" encoding="UTF-8"?>
<o-ex:rights xmlns:o-ex="http://odrl.net/1.1/ODRL-EX"
						xmlns:o-dd="http://odrl.net/1.1/ODRL-DD"
						xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
						xmlns:enc="http://www.w3.org/2001/04/xmlenc#">
	<o-ex:context>
		<o-dd:uid>http://example.com/offers/3838383838.odrl</o-dd:uid>
		<o-dd:version>MRV Profile 2.8.99</o-dd:version>
	</o-ex:context>
	<o-ex:offer>
		<o-ex:asset>
			<o-ex:context>
				<o-dd:uid>http://example.com/1793874932.mov</o-dd:uid>
			</o-ex:context>
			<o-ex:digest>
				<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
				<ds:DigestValue>--Base64-Encoded-Hash-Value--</ds:DigestValue>
			</o-ex:digest>
			<ds:KeyInfo>
				<enc:EncryptedKey>
					<enc:CarriedKeyName>CEK-33247299234</enc:CarriedKeyName>
					<enc:EncryptionMethod
												Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
					<ds:KeyInfo>
						<ds:X509Data>
							<ds:X509SKI>--Base64-Encoded-Subject-Key-ID--</ds:X509SKI>
						</ds:X509Data>
					</ds:KeyInfo>
					<enc:CipherData>
						<enc:CipherValue>--Base64-Enc-Encrypt-CEK--</enc:CipherValue>
					</enc:CipherData>
				</enc:EncryptedKey>
			</ds:KeyInfo>
		</o-ex:asset>
		<o-ex:permission>
			<o-dd:play/>
		</o-ex:permission>
	</o-ex:offer>
</o-ex:rights>

 

Example 13. Security Model XML Syntax - Digital Signature
<o-ex:rights o-ex:id="MyRightsData"
					xmlns:o-ex="http://odrl.net/1.1/ODRL-EX"
					xmlns:o-dd="http://odrl.net/1.1/ODRL-DD"
					xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
	<o-ex:context>
		<o-dd:uid>http://example.com/license/1191918237827.odrl</o-dd:uid>
	</o-ex:context>
	<o-ex:agreement>
		<o-ex:asset/>
		<o-ex:permission/>
		<o-ex:party/>
	</o-ex:agreement>
	<ds:Signature>
		<ds:SignedInfo>
			<ds:CanonicalizationMethod
						ds:Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
			<ds:SignatureMethod ds:Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
			<ds:Reference ds:URI="#MyRightsData">
				<ds:Transforms>
					<ds:Transform
					ds:Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
					<ds:Transform
					ds:Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
				</ds:Transforms>
				<ds:DigestMethod ds:Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
				<ds:DigestValue>---base64-encoded-hash-value---</ds:DigestValue>
			</ds:Reference>
		</ds:SignedInfo>
		<ds:SignatureValue>---base64-encoded-signature-value---</ds:SignatureValue>
		<ds:KeyInfo>
			<ds:X509Data>
				<ds:X509Certificate>---base64-encoded-signer-certificate---</ds:X509Certificate>
			</ds:X509Data>
		</ds:KeyInfo>
	</ds:Signature>
</o-ex:rights>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.11.6 Encrypting ODRL Elements

In some circumstances, it may be necessary to only encrypt parts of ODRL expressions. For example, to make the rights holders royalty payments information confidential. The Security models described above can also support this requirements.

The encryption of specific ODRL elements can take place exactly as specified in Section 4 "Processing Rules" from [XML-ENC]. (The introductory examples in Section 2 of [XML-ENC] also provide a good overview.) The plain text ODRL elements to be protected will be replaced with the resulting encrypted XML structures. Sharing of the key used to protect these elements is out of the scope of ODRL and must be handled by the parties involved.

2.12 Expression Containers

The ODRL expression language also supports a number of mechanisms for grouping entities into containers. The groupings in the containers imply explicit semantics and must be supported.

There are three types of containers defined:

A new structure, called "container" is utilised to aggregate other entities to enforce the above semantics. The container structure has an attribute called "type" (with fixed values of "and", "ex-or", "in-or") to indicate the container type. The default container type is "and". Additionally, when no container structure is used, the default of "and" is implied.

The container semantics only applies to the immediate children of the container.

Typically the container structure is used to aggregate permissions, constraints, conditions, and requirements but can be used on other entities.

2.12.1 Container XML Example

The ODRL Container structure can be expressed using XML. An example is shown in Example 14 in which the play permission is constrained to either (or both) the CPU or Storage device and the requirement is to either pay up front ($AUD200) or per use ($AUD1.50).

Example 14. Container XML Syntax
<permission>
	<play>
		<constraint>
			<container type="in-or">
				<cpu/>
				<storage/>
			</container>
		</constraint>
	</play>
	<requirement>
		<container type="ex-or">
			<prepay>
				<payment>
					<amount currency="AUD">200.00</amount>
				</payment>
			</prepay>
			<peruse>
				<payment>
					<amount currency="AUD">1.50</amount>
				</payment>
			</peruse>
		</container>
	</requirement>
</permission>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.13 Expression Sequence

The ODRL expression language also supports a number of mechanisms for specifying the sequence of entities for both total and partial ordering. A sequence of the entities implies the order in which the entities must be addressed/supported.

There are two types of sequence orders defined:

A new structure, called "sequence" is utilised to aggregate other entities to enforce the above semantics. The sequence structure has an attribute called "order" (with fixed values of "total", "partial") to indicate the sequence order. The default sequence order is "total". Additionally, when no sequence structure is used, then no assumptions on the order should be made.

Within the sequence structure, the order is specified with "seq-item" elements, each with an attribute indicating the order number. The attribute (called "number") is an integer equal to or greater than one. Note: the order is dictated by this number attribute, not the physical order of the expressions.

The sequence semantics only applies to the immediate children of the sequence.

Typically the sequence structure is used to order permissions, constraints, conditions, and requirements but can be used on other entities.

2.13.1 Sequence XML Example

The ODRL Sequence structure can be expressed using XML. An example is shown in Example 15 in which the requirement for the play permission is to undertake the absolute order of (1) register you details with the service provider, and then (2) pay the fee specified.

Example 15. Sequence XML Syntax
<permission>
	<play/>
	<requirement>
		<sequence order="total">
			<seq-item number="1">
				<register>
					<context>
						<service> http://example.com/registerhere </service>
					</context>
				</register>
			</seq-item>
			<seq-item number="2">
				<prepay>
					<payment>
						<amount currency="AUD">100.00</amount>
					</payment>
				</prepay>
			</seq-item>
		</sequence>
	</requirement>
</permission>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.14 Expression Linking

The ODRL expression language also supports the ability to explicitly link expression fragments. The links between the expression fragments imply explicit semantics and must be supported. The linking allows for ODRL expressions to be constructed by reusing existing expressions and allowing explicit links between fragments. Each ODRL fragment can be uniquely identified with the "id" attribute and referred to with the "idref" attribute.

In the usual case, entities appearing in ODRL rights expressions (offers or agreements) are assumed to be related. That is, a Permission entity that appears with an Asset entity are assumed to be related (ie this expresses the Asset's permissions). When explicit linking is used, then the link relationships take precedence. The examples in the next section show how these cases can be expressed.

2.14.1 Link XML Example

The ODRL Link structure can be expressed using XML. An example is shown in Example 16 in which the sell permission only applies to ASSET-01 and the lend permission applies to both ASSET-01 and ASSET-02.

Example 16. Link XML Syntax
<rights>
	<offer>
		<asset id="ASSET-01">
			<context> ... <context>
		</asset>
		<asset id="ASSET-02">
			<context> ... <context>
		</asset>
		<permission>
			<asset idref="ASSET-01">
			<sell/>
		</permission>
		<permission>
			<asset idref="ASSET-01">
			<asset idref="ASSET-02">
			<lend/>
		</permission>
	</offer>
</rights>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

2.15 Expression Inheritance

The ODRL expression language also supports the ability to specify the inheritance of expressions between assets. That is, to allow parent/child relationships to be defined.

The child asset element can include the "inherit" element which will indicate from which other parent asset(s) to inherit the rights from. All the parent asset rights will be merged with the child asset rights. During this merge process, care must be taken that no conflicts arise inthe resultant rights expression.

The inherit element has an "override" attribute for child assets, that, if true, will not inherit the parent asset rights, but will define its own rights. The default is false.

The inherit element also has a "default" attribute for parent assets, that, if true, will not allow child assets to override its rights. The default is false.

Both "override" and "default" cannot be true at the same time.

2.15.1 Inheritance XML Example

The ODRL Inheritance structure can be expressed using XML. An example is shown in Example 17 in which the first rights expression specifies the play Permission for the identified asset. The second rights expression, for an asset related to the first, specifies that the rights should be inherited from the identified asset.

The expression also indicates not to override the inherited rights (the default), hence, the complete rights for the second asset includes the play and give Permissions. If the second expression did indicate to override the inherited rights, then the only Permissons for the second asset would be give.

Example 17. Inheritance XML Syntax
<rights>
	<offer>
		<asset>
			<context>
				<uid>urn:example:asset:007</uid>
			</context>
		</asset>
		<permission>
			<play/>
		</permission>
	</offer>
</rights>
 
<rights>
	<offer>
		<asset>
			<context>
				<uid>urn:example:asset:007-Part1</uid>
			</context>
			<inherit override="false" default="false">
				<context>
					<uid>urn:example:asset:007</uid>
				</context>
			</inherit>
		</asset>
		<permission>
			<give/>
		</permission>
	</offer>
</rights>

Complete and formal syntactical examples are given in Section 4 "ODRL XML Syntax".

3 ODRL Data Dictionary Semantics

This section details the semantics of all the ODRL data dictionary elements that is used within the ODRL expression language. The ODRL data dictionary elements form the basis of the language and can be extended (see Section 5 "ODRL Extensibility") by additional elements. Each element in the data dictionary is defined using the following attributes defined by ISO-11179:

The data dictionary elements are defined below in the following sections:

3.1 Permissions Elements

The Elements are defined in Table 1: Permission Elements.

Table 1. Permission Elements

Name

Identifier

Definition

Comment

Usage Permissons (pertaining to the end use of an asset)

Display

display

The act of rendering the asset onto a visual device.

 

Print

print

The act of rendering the asset onto paper or hard copy form.

 

Play

play

The act of rendering the asset into audio/video form.

 

Execute

execute

The act of executing the asset.

For example, machine executable code or Java

Transfer Permissions (pertaining to the downstream transfer rights of an asset)

Sell

sell

The act of allowing the asset to be sold (ownership transfer) in exchange of value.

 

Lend

lend

The act of allowing the asset to be made available for temporary use then returned (without exchange of value). During this period, the asset is only available to the lendee.

Temporal constraints are required for downstream use.

Give

give

The act of allowing the asset to be given away (ownership transfer) in perpetuity without exchange of value.

 

Lease

lease

The act of allowing the asset to be made available for a fixed period of time then returned (for exchange of value). During this period, the asset is only available to the lessee.

Temporal constraints are required for downstream use.

Asset Management Permissions (pertaining to the digital management of an asset)

Move

move

The act of allowing a digital asset to move between data storage devices.

Specification of constraints on the data storage devices may be allowed.

Duplicate

duplicate

The act of making an exact copy of a digital asset between data storage devices.

Specification of constraints on the data storage devices may be allowed.

Delete

delete

The act of deleting a copy of an asset.

 

Verify

verify

The act of allowing authorization to check the authenticity of an asset.

 

Backup

backup

The act of making copies of an asset for the purpose of guarding against the loss of the original due to accident or catastrophic media or equipment failure.

 

Restore

restore

The act of allowing the conversion of a backup copy into a usable copy in a controlled manner.

 

Save

save

The act of saving a copy (including any changes) of an asset to permanent storage.

 

Install

install

The act of allowing for the operation of loading, verification and certification of an asset into a data storage device.

 

Uninstall

uninstall

The act of allowing for the removal from or disabling of an asset in a data storage device.

 

Reuse Permissions (pertaining to the re-utilisation of an asset creating a new asset)

Modify

modify

The act of changing parts of the asset creating a new asset.

 

Excerpt

excerpt

The act of extracting (replicating) unchanged parts (or all) of the asset for reuse into another asset.

 

Annotate

annotate

The act of adding notations/commentaries to the asset creating a new asset.

 

Aggregate

aggregate

The act of using an asset (or parts of it) as part of a composite work or collection.

 

3.2 Constraint Elements

The Elements are defined in Table 2: Constraint Elements.

Table 2. Constraint Elements

Name

Identifier

Definition

Comment

User Constraints (Any human or organisation)

Individual

individual

An identifiable party acting as an individual.

Use Context to identify the individual.

Group

group

A number of identifiable parties acting as a collection of individuals.

Use Context to identify the group

Device Constraints (Any electronic or digital equipment or system)

CPU

cpu

An identifiable computing system with a central processing unit (CPU).

Use Context to identify the device.

Network

network

An identifiable data network.

Use Context to identify the device. Use Range to indicate the IP Address restriction.

Screen

screen

An identifiable display output screen device.

For example, a screen reader or braille device.

Use Context to identify the device.

Storage

storage

An identifiable storage media device.

For example, a hard disk or removable cartridge.

Use Context to identify the device.

Memory

memory

An identifiable memory device.

For example, the clipboard.

Use Context to identify the device.

Printer

printer

An identifiable hard copy printer.

Use Context to identify the device.

Software

software

An identifiable software application that must be present.

Use Context to identify the device.

Hardware

hardware

An identifiable generic hardware device.

Use Context to identify the device.

Bound Constraints (The limits/extent within which any entity can function)

Count

count

A numeric count indicating the number of times the corresponding entity may be exercised.

A positive Integer.

For example, the Print usage may be constraint with a count of 10 meaning that the asset can be printed zero to 10 times.

Range

range

A numeric range indicating the min/max values of the corresponding entity that the constraint applies to.

Contains the following sub entities:

  • min - the beginning of the range (inclusive)
  • max - the end of the range (inclusive)

The numeric values must use the ordinal position when referring to external objects.

Positive and negative decimals must be supported. If there is no "min" or "max" value, then the range is open-ended. For example, a min of "1" (and no max) means that the range has an unlimited maximum.

Note: "min" must always be less than or equal to "max" and one must always be present.

For example, this is used to specify that only pages numbered 1 to 10 may be printed (using the "pages" subunit entity).

Spatial

spatial

Specification of a geographic area

Use Context to identify the spatial area with codes specified from a controlled vocabulary (eg [ISO3166] for country codes).

Temporal Constraints (The time limits within which any entity can function)

Date Time

datetime

A date and/or time-based range.

Contains the following sub entities:

  • start - the beginning of the range (inclusive)
  • end - the end of the range (inclusive)
  • fixed - an exact point in date/time

Date and Time value must conform to [ISO8