RightsML 1.0: Using Identifiers in ODRL 2.0 Expressions

The RightsML Profile of ODRL 2.0 supports the use of two kinds of identifier in rights expressions:

  • Uniform Resource Identifier (URI)
  • Qualified name or code (equivalent to the IPTC QCode).

A URI may be either a Uniform Resource Locator (URL) or a Uniform Resource Name (URN).

 

Uniform Resource Locator (URL)

Most URIs are, in fact, URLs, as only those that are prefixed "urn:" are URNs. All URIs start with a prefix followed by a colon ":", the prefix indicating the "scheme" to which the URI belongs. URL schemes include "http", "ftp" and "file". The most common URL scheme is "http", which is used not only for web addresses but for a wide range of resource identification tasks, including namespaces in XML expressions and resource identifiers generally in RDF expressions.

In addition to providing a unique identifier for the entity or term, a URL may identify a physical location that is associated with the identified entity or term. However, it is not a requirement for a URL to be resolvable to a physical location.

When using a URL to identify an entity or term, to ensure uniqueness, the base of the URL (the left-most part, varying in length) should be governed (or otherwise managed) by the person or organisation assigning the URL. Typically, when the URL is issued by an organisation, that organisation will be the registered owner of the domain name that is contained in the base of the URL.

URLs have the advantage that they make it easy to give a globally-unique identifier to any entity or term, simply by using a base of the URL to identify the namespace and appending to this a namespace-specific name string. Any person or organisation that registers a domain name can assign their own URLs within that domain, using the domain name, or some simple extension, as the base of each URL.

The disadvantage with URLs is their length, which can appear excessive when many identifiers have to be used in an expression (some RDF applications provide obvious examples of this). For the identification of terms qualified names provide an attractive alternative, as they allow the base of the URL that identifies the namespace to be represented by a short prefix. However, qualified names may not be usable with all syntaxes in which it may be required to construct rights expressions.

Here is an example of a URI used to identify the term 'archive' from the RightsML Vocabulary:

http://iptc.org/std/RightsML/2011-10-07/archive

The base of the URI, which identifies the namespace, is the entire string apart from the namespace-specific name string 'archive' at the end.  

It is recommended that namespace-specific name strings be chosen to convey something of the semantics of the term. Each name string must be unique within any given vocabulary.

 

Uniform Resource Name (URN)

URNs provide a mechanism for the assignment of globally unique names comprising namespace identifier and namespace-specific name string. They are best suited to the construction of uniform names based upon existing identifiers in standard schemes. The namespace identifier must be a name registered with the Internet Assigned Numbers Authority (IANA).

While URNs are useful for constructing uniform names from standard numeric identifiers (e.g. ISBN, ISSN), they are not so useful for assigning identifiers to names that are in namespaces governed by private individuals or companies. It is therefore possible that URNs could be specified for terms defined in the RightsML vocabulary, but this would require registration of a URN namespace for RightsML terms. URNs are unlikely to be suitable for use in identifying terms in a implementer's private extension to the RightsML Profile.

Here is an example of a URN used to identify a term from the RightsML Vocabulary, using the IPTC namespace:

urn:iptc:RightsML:2011-10-07:archive

The base of the URN, which identifies the namespace, is the entire string apart from the namespace-specific name string 'archive' at the end.

It is recommended that namespace-specific name strings be chosen to convey something of the semantics of the term. Each name string must be unique within any given vocabulary.


 Qualified names

 A qualified name generally has two parts: a qualifying prefix and a namespace-specific (or "local") name. The qualifying prefix is separated from the local name by a delimiter string, such as a colon ':'. A namespace declaration is used to associate a qualifying prefix with a specific namespace URI.

The concept of a qualified name originated in computer programming, as a simple way of distinguishing between two entities that share the same name but have different meanings, functions or structures. Put another way, a qualified name is the familiar name that some entity or term has in a given context, prefixed by a label that identifies the context. This concept was used to develop the principle of declaring namespaces in XML and using qualified names in XML markup. The concept has also been used more widely to enable terms from different controlled vocabularies that share the same name to be disambiguated when used together in the same context.

The main advantages of qualified names are that the qualifying prefix can be as short as a single letter and it is generally only necessary to declare the namespace URI once in the entire message (there may be exceptions to this, but these are unlikely to arise in creating rights expressions).

The RightsML Profile defines a specific namespace URI for all terms defined in the RightsML Vocabulary. The choice of qualifying prefix is immaterial, provided the prefix is associated with the correct namespace URI. Similarly, any terms used from other vocabularies should have suitable, distinct qualifying prefixes, and these prefixes must be associated with corresponding namespace URIs.

The procedure for associating a prefix with a namespace URI varies according to the syntax chosen. In XML the procedure involves the declaration of a namespace for each vocabulary, and each declaration should include the qualifying prefix to be used with all terms from the given vocabulary.

It is recommended that namespace-specific name strings be chosen to convey something of the semantics of the term. Each name string must be unique within any given vocabulary. Name strings should be chosen to satisfy the syntactic constraints of the chosen forms of rights expression, which if they include XML means that name strings must be valid XML names. It is recommended that name strings should always be valid XML names.

Here is an example of a qualified name used to identify a term from the RightsML Vocabulary:

 rml:archive

The qualifying prefix 'a' must be declared to represent the RightsML namespace. In XML such a declaration would be included as a pseudo-attribute, for preference in the top-level element of the message:

 xmlns:rml="http://iptc.org/std/RightsML/2011-10-07/"

An XML parser would then know to substitute the namespace URI in this declaration for the qualifying prefix 'a:' used in the body of the message.

Thus, if an implementer wishes to use a term in their own vocabulary, they would choose a distinguishing prefix, declare it to represent their own namespace, and then use the qualified name in the body of the rights expression, e.g. for expression in XML syntax:

 xmlns:ns="http://mydomain.com/myRightsMLvocabulary/"

 

And in the body of the rights expression this could be used thus for an Action term taken from this vocabulary:

<o:action name="ns:myAction"/>

Feedback and Questions
We welcome feedback on and questions about RightsML. You may post to the public RightsML Forum. If you are an IPTC member, then you are also entitled to join the private RightsML email discussion list.

 Previous: Implementing the RightsML 1.0 Profile of ODRL 2.0 | Next: Avoiding ambiguities in the expression of Duties and Constraints