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."
<9502061617.AA10921@Accurate.COM>
Date: Tue, 07 Feb 1995 00:33:44 -0800
From: "Roy T. Fielding" <fielding@avron.ICS.UCI.EDU>
Message-Id: <9502070033.aa10206@paris.ics.uci.edu>

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
<fielding@ics.uci.edu>
<URL:http://www.ics.uci.edu/dir/grad/Software/fielding>