From: Oren Ben-K. <or...@be...> - 2004-08-31 20:46:28
|
On Tuesday 31 August 2004 21:54, Clark C. Evans wrote: > summary: > > This is a second-pass draft incorporating feedback from Sean, and > the comments by Brian that he doesn't want to be bothered by the > %TAG stuff (we make it optional) You turn your back for one second, and suddenly you see a _second_ pass of a new proposal! :-) Alas, I'm not too thrilled with it: - I'm very unhappy with making %tag/%ns/etc. optional, for two reasons. First, I have this strong gut feeling that all purely syntactical issues should be handled without any additional information. I can't put my finger on where exactly this will bite us... but I'm certain it will. More importantly, by making the declarations optional you are completely giving up on making prefixes be purely syntactical. If they were, then changing (all occurrences of ) a prefix in a document would be akin to re-indenting the text - it would have 0 effect on the document's semantics. However, saying the prefix's tagging entity is "provided to the parser by the application" means that changing a prefix _will_ change the semantics (because the application doesn't expects a different prefixes set). So you quickly get to a point where all (most) prefixes are untouchable and globally unique, so you'll need an IANA-like mechanism to manage conflicts. Of course, if you do that, %ns becomes completely pointless. I think we have only two realistic options here: 1. Make %ns or %tag or whatever mandatory. Plus: everyone can define his own namespace and everyone can use a short prefix. Minus: you must explicitly declare the prefixes at the start of each document. As an example of a successfull use of this approach, all the XHTML, DocBook and XSLT documents out there have namespace declarations. A similar approach is used by every "namespaced" programming languages (using "import: or "with" or "use" or whatever to explicitly list the namespaces used). Its quite a common practice, really. 2. Give up on "syntactical only" prefixes and set up a IANA-like repository for prefixes. Plus: short prefixes without any declerations. Minus: All the evils of a limited namespace - short names running out, squatting, etc. This approach is used for mime types; there, however, nobody really cares about having a nice, short name (beyond bragging rights :-). There are also URI schemes and the like - none are created by Joe programmer. Other than these examples, I don't know of any system that uses an IANA-like mechanism to manage namespaces this way. Hint, hint :-) Personally I'd stick with (1). If most people feel that %ns declarations are an evil and must be stamped out, fine, let's bite the bullet and go for (2). - As for restricting the prefix to mean just a tagging entity. Note it still allows one to define "sub-namespaces" of sort, e.g.: --- %ns:a=mine.com,2002 %ns:b=also.mine.com,2002 IMVHO forcing people to build hierarchical structures at the domain name rather than the path is rather pointless. What was the benefit again? On the other hand, insisting that %ns mean a tagging entity further increases the direction that a prefix is not simply a syntactical device. The %TAG was clearly a purely such a device - you simply concatenated the prefix with the suffix, and each could be anything at all so you had no possible illusion of semantics. - Finally, using ^ instead of : or / to seperate the prefix from the suffix. I see the point of using a non-URI character. It strengthents the "syntax-ness" of the mechanism. "^" is kind of ugly though. I suggest "|" instead (it is also not a valid URI character). While we are at it, rename '%tag' to '%pre' (for prefix), to remove any illusion of special semantics: --- %pre:a=tag:my.com,2002/n foo: !a|s/b # tag:my.com,2002/ns/b ... BTW, in the %ns proposal it makes more sense to use ':' rather than '^' (or '|'), because that's the character that immediately follows tagging entity in a taguri. It is also compatible with XML namespaces and is very readable. Since in the %ns proposal prefixes aren't just syntactical anyway ;-), there's no point in pretending they are by using an ugly character like "^". Similarly, if we go to a IANA-like solution, we should stick with ':'. Finally, your examples aren't consistent: > --- %ns:cla...@gm...,2004-08-20 > %ns:bing=clarkevans.com,2002-03 > - !int # tag:cla...@gm...,2004-08-20:int > - !bing/Some::Thing # tag:cla...@gm...,2004-08-20:bing/Some::Thing ? There's no '^' here... > - !bing^wibble # tag:clarkevans.com,2002-03:wibble Have fun, Oren Ben-Kiki |