Re: 3 last issues with the URI syntax

Roy T. Fielding (
Sat, 11 Jul 1998 10:24:53 -0700

To: Patrik =?iso-8859-1?Q?F=E4ltstr=F6m?= <>
cc: Larry Masinter <>, uri@Bunyip.Com
In-reply-to: Your message of "Sat, 11 Jul 1998 10:55:46 +0200."
Date: Sat, 11 Jul 1998 10:24:53 -0700
From: "Roy T. Fielding" <>
Message-ID:  <>
Subject: Re: 3 last issues with the URI syntax 

>>   The URI syntax does not require that the scheme-specific-part have
>>   any general structure or set of semantics which is common among all
>>   URI.  However, a subset of URI do share a common syntax for
>>   representing hierarchical relationships within the namespace.  This
>>   "generic URI" syntax consists of a sequence of four main components:
>>      <scheme>://<authority><path>?<query>
>I think this would be clearer if, after this paragraph, a new paragraph is
>inserted which points directly to what part of the grammar other URI
>schemes must support. Something like the following:
>    URI schemes which does not follow this syntax have to follow the
>    following syntax, where the scheme-specific-part does not begin with
>    a '/':
>       <scheme>:<uric-no-slash> *<uric>

That is mixing BNF with a non-BNF example.  If this is too confusing,
we should just get rid of the layout form examples and use actual URI
as examples.

If we were to do something like the above (which isn't really necessary
since the layout form does not define syntax, but I understand the
reasoning), then we would also need to show the other possible forms.

>(2) The specification of <query> in the grammar.
>>3.4. Query Component
>>   The query component is a string of information to be interpreted by
>>   the resource.
>>      query         = *uric
>>   Within a query component, the characters ";", "/", "?", ":", "@",
>>   "&", "=", "+", ",", and "$" are reserved.
>My suggestion is that query should be specified not with *uric, but instead
>a group of characters which actually is allowed. According to what I can
>see the rule should be instead:
>       query         = * (unreserved | escaped)

That is incorrect.  Reserved does not mean disallowed.  You will note
that reserved characters are often included in components.  The only
thing not included in components are the component separators.  Query
does not have a component separator because it appears at the end of
the URI string.

>(3) relative-path reference
>To change to:
>   The syntax for relative URI is a shortened form of that for absolute
>   URI, where some prefix of the URI is missing and certain path
>   components ("." and "..") have a special meaning when, and only when,
>   interpreting a relative path.  The relative URI syntax is defined
>   in Section 5.
>I.e. the suggested text does not only state that the "." and ".." are to be
>treated when a relative URI is to be used, but also that it is to be
>resolved only in that case.