Re: Proposal for allowing URIs in CURIE-only attributes

Hi

Mark Birbeck wrote:
> Using Julian's example:
> 
>   <a xmlns:urn="http://purl.org/dc/terms/"
>    rel="urn:rights urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a"
>    href="http://example.com/terms_of_service.html">
>   >Terms of service</a>

I have a more realistic example for a problematic prefix mapping that you might actually want to use:

<a xmlns:http="http://www.w3.org/2006/http#" rel="http:requestURI http://example.org/" href="http://www.w3.org/2006/http#asterisk">blah</a>

> RESERVED VALUES V. RELATIVE PATHS
> 
> However, CURIE processing evolved a little, and what effectively
> happens now is that any predefined tokens are checked for first,
> before the whole prefix-processing steps kick in. So it's actually
> possible to differentiate between a predefined token and a relative
> URI, since it's either in the list, or it's not:
> 
>   @rel="next"
> 
>   @rel="relative-url"

I think this is a rather wonky solution because people use all sorts of values that are not defined in any constant list - or with HTML 5 you have a dynamic list defined on some wiki page. Google's "canonical" is one example.

> DIFFERENTIATING BETWEEN CURIES AND URIs
> 
> Interestingly enough, it is possible to solve this problem, by simply
> saying that any string of characters that begins with a predefined
> prefix is a CURIE, and anything else is a URI.

This, as well, I find a bit wonky. You always have to keep an eye on which prefixes you defined and which not. And if, say, you can only edit some snippet of a site then you might not even see all the prefixes that are defined in the whole document unless you look at its source. Not good for people who copy and paste some code but don't know much about HTML otherwise.

Of course, we always had this hack of defining xmlns:http="http" and then you can just use absolute HTTP URIs within @rel and @rev.
On a side note: In a template system I use CURIEs to access an RDF graph (that contains the data to be put into the page). There for simplicity I just defined that everything starting with "http:" is actually a HTTP URL. All other URIs, especially relative ones, have to be escaped to "safe URIs", URIs in angle brackets.

> PROPOSAL
> 
> So to bring everything together, the proposal is:
> 
>  (a) RDFa should add support for URIs in attributes that currently only
>      support CURIEs;
> 
>  (b) authors should be encouraged to use safe-CURIEs in those
>      attributes;
> 
>  (c) but since ordinary CURIEs may still be used, we should differentiate
>      by saying that anything appearing before a colon, that is not a
>      mapped prefix, is a protocol.
> 
> (From an implementation point of view this is extremely easy to add;
> if after splitting a 'potential CURIE' you find that the prefix does
> not map to anything, then just treat the 'potential CURIE' as a URI.
> Current processing requires the 'potential CURIE' to be ignored
> altogether.)

You talk above about backwards compatibility for markup that already uses something like rel="foaf:knows". But what about backwards compatibility for existing parser implementations? Wouldn't they break on what you propose? Are you confident that all existing implementations will be updated to that behaviour (if they don't already implement it) and that deployed systems will be updated to those new versions?

Regards,
  Simon

Received on Friday, 10 July 2009 21:51:09 UTC