Recently, Mark Birbeck of x-port.net
and Shane McCarron of Applied Testing and Technology
edited a number of articles for the W3C, including a primer on attributes for RDF (RDFa). However, they also produced a document entitled, "CURIE Syntax 1.0: A syntax for expressing Compact URIs
," (W3C Working Draft 7, March 2007). A CURIE is, as the name implies, a Compact URI Encoding
, rather than a unit of radiation emission, a liturgical Mass (Kyrie Eleison), or the 1985 song of the same name by Mr. Mister.
While formally endorsing the concept as "canonical," Birbeck and McCarron also recommend one change; namely, to disambiguate CURIEs from URIs or other protocols by enclosing such terms within square brackets ([ ]). For instance, if you have a reference to an atom category as a CURIE, use this notation:
Now, the namespace declarations in these examples would seem to belie the beneficial nature of such a notation; however, with CURIEs you can use the same type of namespace scoping that you can use with QNames for elements and attributes. You define the namespace at a higher scope (such as the root node of the document), with its appropriate prefix definition and with the understanding that any term that falls within the containment (the scope) of that namespace, which uses the CURIE prefix, falls into that particular namespace.
This point seems fairly subtle, but it's a fairly radical shift in the way that we think of web content. By making it possible for content, as well as metastructure, to exist within a given namespace, you can effectively interleave semantic content even into documents that don't normally recognize the notion of namespaces (such as HTML). You also open up the possibility of post processing and content substitution, both of which will be addressed in greater detail shortly.
Note that CURIEs (albeit without the square bracket notation) already are in use in certain areas. For instance, consider the case of XML Schema, where it is possible to define the type of given element or attribute as being part of the xs: schema-instance simple types, such as xs:string, xs:ID, xs:double, and so forth. Technically speaking, these are in fact CURIEs; they are a type of content that is contained within an attribute (usually) that represents a taxonomic term, and that consequently derives from a finite, explicitly defined set of such terms. While it is unlikely that XSD processors would be rewritten with such CURIE notation in mind, it's not out of the question to envision a schema declaration that looks something like this:
<xs:element name="category" type="[xs:string]"/>
This idea opens up interesting possibilities. For example, I've been working recently on a mechanism for converting schemas into XForms
. One of the central challenges in setting up this conversion is the realization that while XSD Schema has the concept of enumeration, what it lacks is the ability to specify the notion that the value of a given element or attribute can be taken from a taxonomy. (It defines the xs:NMTOKEN
type, which in theory should specify a value from such a taxonomy, but it can't extend from that to say that this particular term must
derive from a given taxonomy.)
Related to this idea is the notion that the potential values of an element or attribute might derive from a dynamically generated list of such values (which can be thought of as being yet a different taxonomy, this time consisting of instances rather than categories). Put another way, a CURIE is a term in a constrained taxonomy. It may have some associated meaning, which manifests as replacement text, programmatic bindings, or the like, but ultimately it should be seen as a way of embedding formal taxonomies into traditional web documents. It is in this role that CURIEs will likely play a big part through the introduction of RDFa.