Subject: Clarification on RFC6570

From: Darrel Miller <[email-masked]>
Date: Fri, 4 Mar 2022 21:02:15 +0000

Hey folks,

I’ve run into an issue with URI Templates and the use of the single quote character and am looking for some clarification

RFC 6570 says:

2.1.  Literals

   The characters outside of expressions in a URI Template string are
   intended to be copied literally to the URI reference if the character
   is allowed in a URI (reserved / unreserved / pct-encoded) or, if not
   allowed, copied to the URI reference as the sequence of pct-encoded
   triplets corresponding to that character's encoding in UTF-8
   [RFC3629].

     literals      =  %x21 / %x23-24 / %x26 / %x28-3B / %x3D / %x3F-5B
                   /  %x5D / %x5F / %x61-7A / %x7E / ucschar / iprivate
                   /  pct-encoded
                        ; any Unicode character except: CTL, SP,
                        ;  DQUOTE, "'", "%" (aside from pct-encoded),
                        ;  "<", ">", "\", "^", "`", "{", "|", "}"

https://datatracker.ietf.org/doc/html/rfc6570#section-2.1

The literals syntax intentionally excludes the single quote.  However, single quote is listed as a reserved character in RFC 3986 https://datatracker.ietf.org/doc/html/rfc3986/#section-2.2

Looking further into RFC6570 in section 3.1 it says

   If the literal character is allowed anywhere in the URI syntax
   (unreserved / reserved / pct-encoded ), then it is copied directly to
   the result string.

This seems to be a contradiction.  According to the literal ABNF, single quote is not allowed in a literal. According to the text, it should be.

Am I misreading something?

Thanks,

Darrel