- From: Mike Schinkel <mikeschinkel@gmail.com>
- Date: Mon, 15 Oct 2007 13:28:53 -0400
- To: "'Stefan Eissing'" <stefan.eissing@greenbytes.de>
- Cc: <uri@w3.org>
It is funny how we keep going full circle.
I'll throw my earlier suggestions to use a name and colon where the default
is just {var}:
{<arg|var} -> {prefix:var,stuff}
{>arg|var} -> {append:var,stuff}
{,arg|var} -> {join:var,stuff}
{&arg|var} -> {joinlist:var,stuff}
Also for functions where functions could be defined by external
extensibility mechanism (i.e. functions in Python):
{func(var,stuff)}
> And would like to have a URI for each function. So, if I GET
> http:// example.org/funcs/dog?{x} I will have the same result
> as any template parser implementing that function does.
>
> And use something like namespace uris for extension functions
>
> n -> http://example.org/extensions/ --- (where is that done?)
> http://example.org/{n:dog(x)} --- substitute function "n:dog"
> applied to x
>
> which should behave like GET on
> http://example.org/extensions/dog?{x}
While I greatly see the necessity of having standardized mechanisms for
identifying variables and functions, I think they should be seperated from
the URI template spec as the URI template spec defines a single string and
not the context in which that string operates.
Better to define how URI Templates can be used in contexts, for example in
WebForms
http://blog.welldesignedurls.org/2007/01/11/proposing-uri-templates-for-webf
orms-2/
http://lists.w3.org/Archives/Public/uri/2006Dec/0028.html
--
-Mike Schinkel
http://www.mikeschinkel.com/blogs/
http://www.welldesignedurls.org
http://atlanta-web.org
> -----Original Message-----
> From: uri-request@w3.org [mailto:uri-request@w3.org] On
> Behalf Of Stefan Eissing
> Sent: Monday, October 15, 2007 11:43 AM
> To: Joe Gregorio
> Cc: Mark Nottingham; Roy T. Fielding; uri@w3.org
> Subject: Re: URI Templates - optional variables?
>
>
>
> Am 15.10.2007 um 15:03 schrieb Joe Gregorio:
> >> We can come up with a library of rules for different
> scenarios (good
> >> start in the other thread, btw), but we'll never be able
> to cover all
> >> of the specialist cases. As such, there needs to be a way for a
> >> template variable to specify additional processing, and
> for template
> >> processing engines to be extended.
>
> Fully agree. I think we should define syntax and extensibiliy
> first and talk afterwards about which operations should be in
> the basic set.
>
> > Additional processing? No. But we can provide a mechanism
> by which new
> > operators can be added. There's plenty of room for future
> extensions,
> > since every char outside unreserved and !?|'&<> can be used
> as a new
> > operator.
> >
> > An alternative to the current proposal is to replace the single
> > character operators with names, that is:
> >
> > {<arg|var} -> {?prefix?arg|var}
> > {>arg|var} -> {?append?arg|var}
> > {,arg|var} -> {?join?arg|var}
> > {&arg|var} -> {?joinlist?arg|var}
> >
> > etc.
>
> If we want templates on the side of a bus, we should do
> something readable and pleasing to the eye. Names are easier
> to read and remember that single char operators.
>
> I would like to write templates such as:
>
> http://example.org/{x} --- substitute x
> http://example.org/{dog(x)} --- substitute function "dog"
> applied to x
> http://example.org/{cat(x,y)} --- substitute function "cat"
> applied to x and y
> http://example.org/{cat(',',y)} --- substitute function "cat"
> applied to literal '#' and y
> http://example.org/{cat(x,dog(y))} --- substitute
> function "cat"
> applied to x and "dog" of y
>
> And would like to have a URI for each function. So, if I GET
> http:// example.org/funcs/dog?{x} I will have the same result
> as any template parser implementing that function does.
>
> And use something like namespace uris for extension functions
>
> n -> http://example.org/extensions/ --- (where is that done?)
> http://example.org/{n:dog(x)} --- substitute function "n:dog"
> applied to x
>
> which should behave like GET on
> http://example.org/extensions/dog?{x}
>
> As for encoding issues, variable substitutions would always
> be "maximum encoded" and define functions that reverse such
> encoding.
> Example:
> x = 'a+%2fb/c'
> {x} -> a%2b%252fb%2fc
> {path(x)} -> a%2b%252fb/c
> {raw(x)} -> a+%2fb/c
>
>
> //Stefan
>
> --
> Stefan Eissing
>
> <green/>bytes GmbH
> Hafenweg 16
> D-48155 Münster
> Germany
> Amtsgericht Münster: HRB5782
>
>
>
>
>
Received on Monday, 15 October 2007 17:55:25 UTC