Re: A content-id URL scheme

Roy T. Fielding (fielding@avron.ICS.UCI.EDU)
Tue, 07 Feb 1995 00:33:44 -0800

To: Ed Levinson <elevinso@Accurate.COM>
Subject: Re: A content-id URL scheme 
In-Reply-To: Your message of "Mon, 06 Feb 1995 11:17:03 EST."
Date: Tue, 07 Feb 1995 00:33:44 -0800
From: "Roy T. Fielding" <fielding@avron.ICS.UCI.EDU>
Message-Id:  <>

Ed writes:

> Yeah, I like your suggestion on wording.  Does this work better?
>      The Uniform Resource Locator (URL) scheme, "cid", allows
>      individual entities within a multipart message body to
>      refer to one another by their content-id labels.

The problem I see is that it assumes cid's would only be used within
the same multipart entity.  I don't see any need for that restriction,
so I would prefer something like:

     The "cid" Uniform Resource Locator (URL) scheme can be used to
     identify an individual body-part within a multipart message body
     by referring to that body-part's Content-ID field.

> I could see using msg-ids to refer to other messages would you like to
> take that up?  CIDs would be real useful now, in my opinion, in the
> mimesgml work and I don't see an application for msg-id.

I see an application for both, but do not have a need (and the time)
to define both now.  Your draft will do quite well for cid's.

>> ... cid URLs should be capable of referencing
>> any possible Content-ID.  Any characters that are not allowed in a URL can
>> be escaped using the %hex encoding method.
> I agree, using escapes make sense.  Why not use the general syntax from
> 1521/822 and have the following?
> 	cidurl   = "cid" ":" cid-spec
> 	cid-spec = addr-spec		; RFC 822, globally unique

Because that BNF would allow illegal characters in the URL.  The long BNF
I suggested is the same syntax, but replaces all illegal characters with
their hex equivalents.  The following BNF is better, IMHO, because it
is simple and represents a safe superset of any possible Content-ID.

   cidurl      = "cid" ":" cid-spec

   cid-spec    =  local-part "@" domain        ; globally unique

   local-part  =  1*cidchar
   domain      =  1*cidchar

   cidchar     =  uchar | ";" | "/" | "?" | ":" | "&" | "="
   uchar       =  <as defined in RFC 1738>

However, you may want to replace "cid-spec" and "cidchar" with
"addr-spec" and "addrchar", and then the production can be reused to
define the message-id URL as

   midurl      =  "mid" ":" addr-spec

thus killing two birds with one BNF.

......Roy Fielding   ICS Grad Student, University of California, Irvine  USA