Subject: [urn] 2141bis questions - (2) Section 3.3.2 q-component clarification

From: John C Klensin <[email-masked]>
Date: Tue, 23 Dec 2014 12:13:44 -0500

In section 3.3.2 on q-component, it seems reasonable to add a
bit of explanation, thereby providing some protection from
people who might assume they know what 3986 says without
checking it (especially given the ABNF issues with that
document).  I propose something like:

	"Note that "?" is not a special character after its
	first instance introduces a q-component (assuming one is
	allowed by the namespace).   "?" appearing later in a
	q-component or in an f-component does not require
	%-escaping except as required on a per-namespace basis."

Is that roughly correct?  What we want?

There is also another issue with that paragraph.  Given the
"syntax only" principle, it is not clear that unquoted "?" must
be prohibited from appearing in the NSS and/or p-component (if
we think that is distinct).  The argument for prohibiting it is
potential confusion.  The argument for allowing it is that it
might be needed for externally-defined name spaces for which
%-encoding would either be clutter or actually problematic.

What is the WG's pleasure?

    john

---

From: Andrew Newton <[email-masked]>
Date: Tue, 23 Dec 2014 12:49:21 -0500

> Is that roughly correct?  What we want?

<chair hat="off"/>

Using my possibly faulty recollection of 3986, I thought "?" was a general
delimiter and those needed to be escaped no matter what when not being used
as a delimiter. From an implementation standpoint, certainly escaping "?"
everywhere is easier than only escaping it in certain portions of the UR*.

-andy

---

From: Peter Saint-Andre - &yet <[email-masked]>
Date: Tue, 23 Dec 2014 11:41:00 -0700

> Is that roughly correct?  What we want?

As I read RFC 3986, what you propose is indeed roughly correct as an 
informational note.

> be prohibited from appearing in the NSS and/or p-component

I think it must be prohibited, given the ABNF definitions in RFC 3986 
that we borrow here.

     NSS           = 1*(pchar)
     p-component   = "/" path-absolute
     path-absolute = "/" [ segment-nz *( "/" segment ) ]
     segment       = *pchar
     pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"

(no gen-delims allowed there)

> (if
> we think that is distinct).

I think the p-component is not part of the NSS.

     namestring    = assigned-name
                     [ p-component ]
                     [ q-component ]
                     [ f-component ]
     assigned-name = "urn" ":" NID ":" NSS

> The argument for prohibiting it is

I would favor prohibiting it.

-- 
Peter Saint-Andre
https://andyet.com/