W3C home > Mailing lists > Public > uri@w3.org > September 2011

Re: Uri Templates: Questions on draft-gregorio-uritemplate-06

From: t.petch <ietfa@btconnect.com>
Date: Fri, 9 Sep 2011 15:17:37 +0200
Message-ID: <00c401cc6ef2$e6f727c0$4001a8c0@gateway.2wire.net>
To: "Marc Portier" <marc.portier@gmail.com>, "Roy T. Fielding" <fielding@gbiv.com>
Cc: "URI" <uri@w3.org>
----- Original Message -----
From: "Marc Portier" <marc.portier@gmail.com>
To: "Roy T. Fielding" <fielding@gbiv.com>
Cc: "URI" <uri@w3.org>
Sent: Friday, September 09, 2011 8:34 AM
> On 09-09-11 00:27, Roy T. Fielding wrote:
> > On Sep 6, 2011, at 3:49 PM, Roy T. Fielding wrote:
> >> On Sep 5, 2011, at 12:54 AM, Robbie Gates wrote:
> >>> I don't understand why the expansions of ? and&  include list= for
> >>> each entry when exploded. The description of the handling for the case
> >>> of an exploded list makes no mention of the use of the name, and there
> >>> is no separate section (as there is for the unexploded case). Also,
> >>> the table makes ; the same as ? and&  for named, and yet their
> >>> handling appears different. The descriptions in 3.2.7 and 3.2.8 /
> >>> 3.2.9 are likewise similar. In short, i can't see why the examples
> >>> differ, given the rest of the document, i was expecting
> >>>
> >>>        {?list*}        ?red&green&blue
> >>>        {&list*}&red&green&blue
> >>
> >> Hi Robbie,
> >>
> >> Yes, you are right -- that is a bug in the new algorithms that
> >> I added for draft 06.  I'll work on a fix.
> >
> > Actually, after having tried a fix to the algorithm, I think it
> > would be more useful to have the result you expect above (and it
> > would simplify the algorithm).  That also would provide a means
> > to define value-only parameters in the query component, which has
> > been requested in a private discussion.
> >
> Can't say I have a problem with it, but surely the current approach has
> a very logic reason of existence, no?
>
> Following the principle of least surprise (from a uri-template user
> point of view, not from the implementation side) I would guess the
> current expansion
>
> {?list}    ?list=red,green,blue'
> {?list*}   ?list=green&list=red&list=blue
>
> is on the side of 80% of the expectations, no?
>
> So at the least we make sure this keeps being possible, and (assuming we
> find a way to provide both renditions) even would be the result of the
> more naive & spontaneous use of the templates?
>
> Of course, I do remember how I ended up finding the ;red;green;blue a
> quirk expansion compared to ;list=red;list=green;list=blue  (the
> opposite case?)
>
> So why not think about having both just more explicit by declaring two
> kinds of 'explodes' one 'named' (*), the other 'unnamed' (% maybe?)
>
> then
> {?list}    ?list=red,green,blue
> {?list*}   ?list=green&list=red&list=blue
> {?list%}   ?green&red&blue
>
> {;list}    ;list=red,green,blue
> {;list*}   ;list=green;list=red;list=blue
> {;list%}   ;green;red;blue

Mmmm .... the problem I have is that s.3.2.1 is clear that whether or not the
expansion is name=value,name=value,name=value or value,value,value
depends on whether or not the value is an associative array, and in the examples
in the rest of s.3 I cannot tell which values are an associative array and which
are not.

If the value is not an associative array, then the only action of the explode
modifier I can see is to change the separator character so I find the original
question indeterminate:-(

I dislike the idea above which, for me, overloads the explode modifier and is
NOT intuitive.  Changing the separator is one thing, switching from value list
to name=value pairs is orthogonal to that, so if the latter is to be done by an
explode modifier, as opposed to the value being an associative array, then there
should be a second explode modifier that does that and that alone.

Mind, I do find the text on explode modifiers opaque, and could be missing
something when it says
" An explode modifier ("*") indicates that the variable represents a
   composite value that may be substituted in full or partial forms,
   depending on the variable's type and value set.  Since URI Templates
   do not contain an indication of type or schema, this is assumed to be
   determined by context.  An example context is a mark-up element or
   header field that contains one attribute that is a template and one
   or more other attributes that define the schema applicable to
   variables found in the template.  Likewise, a typed programming
   language might differentiate variables as strings, lists, associative
   arrays, or structures."

I am afraid I have no idea what that is trying to say:-(

Tom Petch

> yielding even less surprises?
>
> -marc=
>
>
> > ....Roy
> >
> >
>
Received on Friday, 9 September 2011 14:22:34 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 9 September 2011 14:22:35 GMT