Subject: [dispatch] draft-montemurro-gsma-imei-urn-05

From: "Worley, Dale R (Dale)" <[email-masked]>
Date: Mon, 1 Nov 2010 17:58:43 -0400

The BNF in draft-montemurro-gsma-imei-urn-05 needs additional work.  In particular:

- some of the lines are considerably longer than 72 characters

- <...> is not used consistently for variable symbols.

- But RFC 5234 style BNF does not use <...> for variable symbols.

- the operator "+" is used:  It is not defined by RFC 5234.  And it is not used with the universal meaning of "one or more times".  It should be replaced with "*" in this way:

   URL = "urn:gsma:" gsma-specifier *(":" gsma-specifier-defined-substring)
                  *(";" gsma-specifier-param *1("=" gsma-specifier-param-val))

- Also, [...] is used to denote optionality, where RFC 5234 BNF uses *1(...).

- "|" is used to denote alternation, where RFC 5234 uses "/".

- the construct "GSMA-approved string" is used in many places:  It does not conform to the syntax for ABNF.  No syntax is given for this symbol, so one does not know even what characters may appear in it.  In particular, one expects that ":", "=", and ";" are forbidden, but that is not stated.  For that matter, there is no clear restriction to forbid characters that may not appear in URNs.

- the BNF does not pair the defined parameter names with their defined syntaxes.  E.g., it generates "...;svn=0;vers=00", as well as the desired "...;svn=00;vers=0".  Better is to break out the defined parameter syntaxes in this manner:

   URL = "urn:gsma:" gsma-specifier *(":" gsma-specifier-defined-substring)
                  *(";" gsma-specifier-param)

   gsma-specifier-param =
       "svn" "=" software-version-string /
       "vers" "=" gsma-format-version-string /
       gsma-specifier-param-name *1("=" gsma-specifier-param-val)

   software-version-string = 2DIGIT
   gsma-format-version-string = DIGIT

   gsma-specifier-defined-param-name = GSMA-approved string
   gsma-specifier-defined-param-val = GSMA-approved string

Dale