Uniqueness of [message id]

-=- Target -=-

Core

-=- Description -=-

The description of [message id] reads:

  An IRI that uniquely identifies this message in time and space. No
  two messages with a distinct application intent may share a [message
  id] property. A message MAY be retransmitted for any purpose
  including communications failure and MAY use the same [message id]
  property.

It's not clear when two message identifiers have to be different, and
when this isn't required. The specification says that one has to use
different message identifiers when the messages have "a distinct
application intent".

Assume that I want to create a new account using a SOAP message. I see
in a tutorial the following:

  To create an account, one would send a SOAP message as follows:

    <soap:Envelope xmlns:soap=…
     xmlns:wsa=…>
      <soap:Header>
 <wsa:To>http://example.com/accounts</wsa:To>
 <wsa:Action>http://accounts.example.com/register</wsa:Action>
 <wsa:MessageId>http://example.com/mid/123</wsa:MessageId>
      </soap:Header>
      <soap:Body>
 <x:createAccount/>
      </soap:Body>
    </soap:Envelope>

Readers of the tutorial wanting to create an account may want to send
the exact same message, including the same message identifiers. After
all, the application intent is the same: create an account. Also, I am
retransmitting the above message for the purpose of interacting with
the service as described by the tutorial, which seems to fit "any
purpose".

I am naturally inclined to interpret [message id] as RFC 2822's
Message-Id: each message has a different message identifier. As a
point of reference, RFC 2822 says:

  The "Message-ID:" field provides a unique message identifier that
  refers to a particular version of a particular message.  The
  uniqueness of the message identifier is guaranteed by the host that
  generates it (see below).  This message identifier is intended to be
  machine readable and not necessarily meaningful to humans.  A
  message identifier pertains to exactly one instantiation of a
  particular message; subsequent revisions to the message each receive
  new message identifiers.

Is there any reason not to have a similar requirement? If not, what
does the sentence about "distinct application intent" means?

-=- Proposed solution -=-

Ask for unique message identifiers for distinct messages.

Replace:

  No two messages with a distinct application intent may share a
  [message id] property. A message MAY be retransmitted for any
  purpose including communications failure and MAY use the same
  [message id] property.

by:

  A message identifier pertains to exactly one instantiation of a
  particular message; subsequent revisions to the message each receive
  new message identifiers. A particular message which failed to be
  delivered MAY be retransmitted using the same [message id] property.

Cheers,

Hugo

-- 
Hugo Haas - W3C
mailto:hugo@w3.org - http://www.w3.org/People/Hugo/

Received on Wednesday, 11 May 2005 13:42:59 UTC