From: Oren Ben-K. <or...@ri...> - 2002-02-11 05:53:12
|
Clark C . Evans wrote: > ... I was just taken back by > Oren's use of ; at the end of an http URI, which I believe > is illegal according to the URI RFC. The exact wording in RFC1738 is: The characters ";", "/", "?", ":", "@", "=" and "&" are the characters which may be reserved for special meaning within a scheme. No other characters may be reserved within a scheme. So, as you said: > We can just say that ; is specific to the "yaml" scheme, Exactly. So, YAC19 can stand as far as yaml: URIs are concerned, there's no need to use '#' fragments there (they are rather ugly, and also I'd like to discourage the use of fragments). > and then update Oren's example using the "http" scheme > to use fragment indicator (#) instead of the parameter > indicator (;), which is reserved within a pathsegment. Alas, this doesn't work, because some XML namespaces (as you have pointed out) use fragments! Remember originally we wanted to use '#' to separate the format from the type (the format being a "fragment" of the type). A lovely scheme, except that XML namespaces using '#" killed it. Likewise for this notion. So... what character should we use to separate the XML namespace from the tag name? ';' would work *technically*, but has dubious legality. Our alternative is to choose a character which is a normal URI character but is not allowed in XML tags. Something in the set "$-_.+!*'(),". Since '$' isn't a valid XML tag character. Does that sound reasonable? http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd$p Looks OK... As for using reverse DNS strings. There are two potential reasons to use them. One is the'^' prefix system. However note that usually the prefix will contain all the domain name, so it isn't really a good reason: !timesheet.clarkevans.com;^schedule The other reason is the shorthand. Consider !perl;type - it is a shorthand for !yaml:perl.yaml.org;type - of course such shorthand mechanism *can* be defined... This means the shorthands will be: !scheme:whatever -> preserved !some.words;type -> !yaml:some.words;type !one-word;type -> !yaml:one-word.yaml.org;type !type -> !yaml;yaml.org;type That's rather awkward because the shorthand is no longer a simple addition of an implicit prefix (in the third case). A weak reason, perhaps... I must say I'm having a hard time making a decision about this. On the one hand, using normal domain names is much more URI-like. On the other hand, I think using reverse DNS names makes more sense due to it more accurately reflecting the actual hierarchy of things; in fact if I were writing DNS in the first place I'd be using a reverse order *everywhere*. I can't help but feel that having shared prefixes is useful in various small ways... So, I'll go either way here. Thoughts? Have fun, Oren Ben-Kiki |
From: Clark C . E. <cc...@cl...> - 2002-02-11 06:44:20
|
| Alas, this doesn't work, because some XML namespaces (as you have | pointed out) use fragments! Remember originally we wanted to use | '#' to separate the format from the type (the format being a | "fragment" of the type). A lovely scheme, except that XML namespaces | using '#" killed it. Likewise for this notion. | | So... what character should we use to separate the XML namespace | from the tag name? ';' would work *technically*, but has dubious | legality. Our alternative is to choose a character which is a | normal URI character but is not allowed in XML tags. Something | in the set "$-_.+!*'(),". Since '$' isn't a valid XML tag | character. Does that sound reasonable? Just beacuse it's not a valid xml tag name, doesn't mean that it can't occur in an XML namespace name. But in any case, I don't think this is a use case we should worry about... let's keep our "type" notion specific to the YAML scheme... | I must say I'm having a hard time making a decision about this. | On the one hand, using normal domain names is much more URI-like. | On the other hand, I think using reverse DNS names makes more | sense due to it more accurately reflecting the actual hierarchy of | things; in fact if I were writing DNS in the first place I'd be using | a reverse order *everywhere*. I can't help but feel that having | shared prefixes is useful in various small ways... Being able to break an "authority" (the stuff to the left of the ; in a yaml: scheme) with our ^ trick isn't a big use case. While it probably is a bigger use case to break items in the "type" partition (think Java packages). Thus, for the principle of least suprise, let's go back to regular DNS stuff. Note, this makes sense as Brian pointed out, since the real stuff we want to slice and dice is already at the end of the URI. Best, Clark -- Clark C. Evans Axista, Inc. http://www.axista.com 800.926.5525 XCOLLA Collaborative Project Management Software |
From: Brian I. <in...@tt...> - 2002-02-11 14:07:51
|
On 11/02/02 02:03 -0500, Clark C . Evans wrote: > | Alas, this doesn't work, because some XML namespaces (as you have > | pointed out) use fragments! Remember originally we wanted to use > | '#' to separate the format from the type (the format being a > | "fragment" of the type). A lovely scheme, except that XML namespaces > | using '#" killed it. Likewise for this notion. > | > | So... what character should we use to separate the XML namespace > | from the tag name? ';' would work *technically*, but has dubious > | legality. Our alternative is to choose a character which is a > | normal URI character but is not allowed in XML tags. Something > | in the set "$-_.+!*'(),". Since '$' isn't a valid XML tag > | character. Does that sound reasonable? > > Just beacuse it's not a valid xml tag name, doesn't mean > that it can't occur in an XML namespace name. But in any > case, I don't think this is a use case we should worry > about... let's keep our "type" notion specific to the > YAML scheme... I leave the XML decisions in your and Oren's capable hands. > | I must say I'm having a hard time making a decision about this. > | On the one hand, using normal domain names is much more URI-like. > | On the other hand, I think using reverse DNS names makes more > | sense due to it more accurately reflecting the actual hierarchy of > | things; in fact if I were writing DNS in the first place I'd be using > | a reverse order *everywhere*. I can't help but feel that having > | shared prefixes is useful in various small ways... > > Being able to break an "authority" (the stuff to the left > of the ; in a yaml: scheme) with our ^ trick isn't a big > use case. While it probably is a bigger use case to break > items in the "type" partition (think Java packages). Thus, > for the principle of least suprise, let's go back to regular > DNS stuff. Note, this makes sense as Brian pointed out, > since the real stuff we want to slice and dice is already > at the end of the URI. Let's go with forward DNS. I can think of ways to abbreviate the domain name if it ever became a problem: !perl.yaml.org;glob -> !perl;glob !perl.clarkevans.com;timesheet !python.clarkevans.com;timesheet -> !python.;timesheet The domain can be relative by ending it with a dot. I don't see this as a use case, but if it pops up, we're OK. Cheers, Brian |