Subject: CNRP URI ABNF

From: Michael Mealling <[email-masked]>
Date: Thu, 20 Apr 2000 13:17:37 -0400

Here's the ABNF for the CNRP URI. Can someone please check my grammar
for correctness? Thanks!

cnrp-uri = "cnrp:" (form1 / form2)
form1    = "//" [server] "/" [path] "?" [ common-name ] [ id-req ] *avpair
form2         = common-name *avpair
id-req        = ";id=" value
avpair        = ";" attribute "=" value
server        = // as specified in RFC2396
path          = path_segments
path_segments = // as specified in RFC2396
common-name   = *uric
attribute     = *pchar
value         = *pchar
uric          = // as specified in RFC2396
pchar         = // as specified in RFC2396

Open questions:

1) If 'server' is absent then is that equivalent to server being equal to
the string "localhost"?

2) I'm defining 'path' as a value used to differentiate two data sets
running on the same host. Example: lets say there are two sets of data on
your local machine. One is for your address book and the other is
for your bookmarks. In those cases the path would be used to differentiate
between those two servers. Especially when the values in those two servers
are unrelated. The counter argument is that this is just an additional
parameter and since it doesn't exist anywhere in the protocol it shouldn't
exist here. Comments?

-MM

--
--------------------------------------------------------------------------------
Michael Mealling        |      Vote Libertarian!       | www.rwhois.net/michael
Sr. Research Engineer   |   www.ga.lp.org/gwinnett     | ICQ#:         14198821
Network Solutions       |          www.lp.org          |  [email-masked]

---

From: Michael Mealling <[email-masked]>
Date: Thu, 20 Apr 2000 13:50:46 -0400

> parameter and since it doesn't exist anywhere in the protocol it shouldn't

Let me clarify since I received a couple of questions via mail about this
last bit. In Adelaide there was a discussion about what 'path' actually
meant. The gist of the discussion was that 'path' was really just
an additional parameter type and value and thus should not actually
be there at all. If some server needs to differentiate between two
datasets that it serves then it should allow that information to be
set via a registered parameter...

-MM

---

From: Leslie Daigle <[email-masked]>
Date: Fri, 21 Apr 2000 12:37:52 -0400

Howdy,

The ABNF is not incorrect, but I think that it should be changed
to:

        common-name     = *(unreserved | escaped)
        attribute       = *(unreserved | escaped)
        value           = *(unreserved | escaped)

otherwise there will be issues in parsing:  as it stands, "="
could appear in the attribute portion.  Also, ";" could appear
in the common-name, as it stands, because uric allows that
reserved character (where reserved characters can appear if
they don't cause ambiguities, per RFC2396, which always struck
me as being rather a waste of words).

Excerpted from RFC2396:

      pchar         = unreserved | escaped |
                      ":" | "@" | "&" | "=" | "+" | "$" | ","
      uric          = reserved | unreserved | escaped
      reserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                      "$" | ","
      unreserved    = alphanum | mark
      mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |
                      "(" | ")"

> 1) If 'server' is absent then is that equivalent to server being equal to

I believe so.

> parameter and since it doesn't exist anywhere in the protocol it shouldn't

I'd go with what Nico said.

Leslie.

--

-------------------------------------------------------------------
"My body obeys Aristotelian laws of physics."
   -- ThinkingCat

Leslie Daigle
[email-masked]
-------------------------------------------------------------------

---

From: Michael Mealling <[email-masked]>
Date: Fri, 21 Apr 2000 12:49:22 -0400

>         value           = *(unreserved | escaped)

So noted...

> > 1) If 'server' is absent then is that equivalent to server being equal to

This is assuming we registere a well known port for CNRP....

-MM