- From: Mike Burrows <asplake@googlemail.com>
- Date: Wed, 10 Mar 2010 16:38:41 +0100
- To: "Roy T. Fielding" <fielding@day.com>
- Cc: URI <uri@w3.org>
- Message-ID: <7a2269961003100738r631bbd85s9fdf0c89d7a19fd9@mail.gmail.com>
Sorry ignore that first one, my mistake. I'm still confused by the apparent
conflicts though.
On 10 March 2010 16:18, Mike Burrows <asplake@googlemail.com> wrote:
>
> Couple of issues with defaults.
>
> This doesn't seem right:
> x{empty=_}y xy
>
> These
> x{;name=none} x;name=Fred,Wilma,Pebbles
> x{?favs=none} x?favs=color,red,volume,high
> seem in conflict with
> {;list} ;val1,val2,val3
> {;keys} ;key1,val1,key2,val2
>
> I suspect same too about
> x{;empty_list=none} x;empty_list=none
> x{;empty_keys=none} x;empty_keys=none
>
> In both cases I may be missing something, but I wouldn't expect the
> presence of a default to change behaviour in this way. Or is it the earlier
> part of the spec that is incorrect?
>
>
> Regards,
> Mike
> mjb@asplake.co.uk
> http://positiveincline.com
> http://twitter.com/asplake
>
>
> On 10 March 2010 15:18, Mike Burrows <asplake@googlemail.com> wrote:
>
>> Thanks, looks good.
>>
>> I have a processor (in Python) that checks out ok for all the examples in
>> section 1.2. The only genuine special case in my code was the different
>> treatment of empty values by the ; and ? operators. I assume it's
>> deliberate but I mention it just in case.
>>
>> One trivial typo: a missing semicolon after path := "/foo/bar" just
>> before that same table in section 1.2.
>>
>> Default values are there but untested; so far I parse but otherwise ignore
>> prefix and suffix values. I'll report back my progress on those later as a
>> sanity check on the as-yet untested examples.
>>
>> Re point 1 on error handling , it would be reasonable and indeed
>> preferable in many languages for an implementation to raise an exception in
>> the presence of errors, in which case the result string is undefined and any
>> information about the error (or perhaps errors plural) would be returned
>> back to the caller in the exception object. That sort of behaviour is
>> compatible with the spec as it stands but not with the kind of wording used
>> below. I would choose to leave the spec as it is.
>>
>> FWIW, I'm with you Roy on point 4c. My URI Templates are embedded in
>> metadata that can annotate variables with as much flexibility as I'll ever
>> need, and I imagine that this will be a fairly typical use case. As for the
>> other changes proposed in point 4 I'm not that fussed except that the
>> novelty of tracking the standard across two language implementations is
>> wearing a bit thin. But if there's anything I can do to help...
>>
>> Regards,
>> Mike
>> mjb@asplake.co.uk
>> http://positiveincline.com
>> http://twitter.com/asplake
>>
>>
>>
>> On 10 March 2010 01:20, Roy T. Fielding <fielding@day.com> wrote:
>>
>>> [second attempt to send this]
>>>
>>> I managed to submit a new draft, just before the deadline,
>>> with the obsolete sections removed and the sections that
>>> still need writing marked as TBD.
>>>
>>> The current issues (that I am aware of) include:
>>>
>>> 1) error handling -- as Joe noted, we can improve consistency
>>> by making every error in the template result in a semi-expanded
>>> result string and error indicator, rather than nulling
>>> the result string and returning immediately. My preference is
>>> to copy bad expressions to the result, continue processing, and
>>> indicate an error occurred to the caller. This allows the
>>> calling application to use the result string to point out
>>> where the processing failed.
>>>
>>> 2) reserved substitution -- this is currently allowed only
>>> by the "+" operator. A suggestion by Mike Burrows is that the
>>> "+" operator be changed into a variable name prefix so that
>>> it can be selectively applied to any variable in any expression.
>>> In addition to the added power, I found that a prefix would
>>> simplify the value expansion description (and algorithm).
>>> However, I have not made that change yet in 04. Would such
>>> a change be compatible with XRD and other applications?
>>>
>>> 3) I introduced explode modifiers, with the named variable
>>> version indicated by a trailing "+" on the name. Perhaps that
>>> would be better as a trailing "@" if we do (2) above.
>>>
>>> 4) James Manger suggested several changes to the syntax:
>>>
>>> a) remove the variable lists and instead have the processor
>>> maintain a memory of where it is in the URI generic syntax
>>> to know when to add the default ";" or "?" delimiters.
>>> Add a comma operator to support CSV expansions.
>>>
>>> b) change the default syntax to {var|default} instead of
>>> {var=default}, in order to allow ...
>>>
>>> c) define variable bindings within the template itself so
>>> that large schemas like OpenSearch can directly annotate
>>> every variable inside the template as opposed to annotating
>>> them by reference outside the template. e.g.,
>>>
>>> find{?q=searchTerms}{?lang=language}
>>>
>>> I personally find (a) significantly uglier than the
>>> existing syntax; (b) okay if people haven't implemented
>>> defaults yet; and, (c) a very slippery slope that, IMO, will
>>> result in the equivalent of WADL being embedded inside the
>>> template instead of remaining outside (where it can be safely
>>> ignored by RESTful applications). YMMV.
>>>
>>> I will be at the Anaheim IETF if anyone wants to discuss these
>>> issues in person, but please send email to the list if you want
>>> the discussion to result in changes to the next draft.
>>>
>>> Cheers,
>>>
>>> Roy T. Fielding <http://roy.gbiv.com/>
>>> Chief Scientist, Day Software <http://www.day.com/>
>>>
>>> Begin forwarded message:
>>>
>>> > From: Internet-Drafts@ietf.org
>>> > Date: March 8, 2010 5:00:01 PM PST
>>> > To: i-d-announce@ietf.org
>>> > Subject: I-D Action:draft-gregorio-uritemplate-04.txt
>>> > Reply-To: internet-drafts@ietf.org
>>> >
>>> > A New Internet-Draft is available from the on-line Internet-Drafts
>>> directories.
>>> >
>>> > Title : URI Template
>>> > Author(s) : J. Gregorio, et al.
>>> > Filename : draft-gregorio-uritemplate-04.txt
>>> > Pages : 25
>>> > Date : 2010-03-08
>>> >
>>> > A URI Template is a compact sequence of characters for describing a
>>> > range of Uniform Resource Identifiers through variable expansion.
>>> > This specification defines the URI Template syntax and the process
>>> > for expanding a URI Template into a URI, along with guidelines for
>>> > the use of URI Templates on the Internet.
>>> >
>>> > A URL for this Internet-Draft is:
>>> > http://www.ietf.org/internet-drafts/draft-gregorio-uritemplate-04.txt
>>>
>>>
>>>
>>>
>>
>
Received on Wednesday, 10 March 2010 15:39:15 UTC