ebxml-regrep message


OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]

Subject: RIM and RS Issue: Identifier Usage (UDDI and URN)



ebXML Regrep,

I'd like to raise an issue we've discussed many times, but for which we've
never reached a satisfactory resolution. I'm proposing that we consider
adding URN identifiers to the Registry/Repository specs for Phase 2, after
Vienna.

ISSUE

What are the relevant benefits of a machine friendly identifier( e.g. UUID)
versus a human friendly identifier (e.g. URN).

Here are some relevant references:

  for UUID:  http://www.dsps.net/uuid.html

  for URN:   http://www.ietf.org/rfc/rfc2141.txt

RIM (version 0.60) References to UDDI:  Line 375 page 13

RS (version 0.88) References to UDDI: Section 7.3.1, page 22-23, lines 522-536


CURRENT STATUS

RIM and RS currently require that every RegistryObject have a UUID. The
assumption is that clients can provide a UUID for their submissions and
that this UUID will be globally unique. If a client does not submit one,
then the server will generate one.

Currently there is no guaranteed substitute for UUID in any class. If a
client wants to guarantee that a specific Registry object be identified,
the client must first obtain and then use the UUID for that object.

There is a facility for ExternalIdentifier (RIM Section 7.8, page 21), but
that is an optional facility for storing other identifiers supplied by a
client. Presently, this facility does not require a human friendly
identifier for registry entry or repository item. 


MY PROBLEM

I don't think that UDDI can be relied on successfully for human usage. It's
128 bits long and has no semantic content discernable to the human user. A
human will have to memorize 32 hexidecimal digits in order to isolate a
single UDDI.

If I want to find all of the RegistryEntry instances submitted by my
organization (NIST), I will have to supply its UDDI, or do a query to first
determine the UDDI, and then a second query to return what I want using it.

Why can't I use a human friendly globally unique identifier such as
"urn:usgov:nist" to identify NIST instead of the UDDI assigned to NIST by
some Registry. And if I want to identify registry entries or repository
items submitted by NIST, why can't I define my own globally unique URN's to
reference them instead of having to invent 128 bit UUID's?  Or rely on the
Registry to supply meaningless UDDI's for my use.

I envision purchase orders being identified by a human friendly URN, e.g. 

   urn:org:mycompany:po:ver123

in addition to a machine friendly UUID, e.g.

    A234567D-B12-8C9-48D-1234567890AB

Using the URN, even if I don't know exactly the purchase order I'm looking
for, I can use our AdhocQuery mechanism on RegistryEntry to look for
registry entries that satisfy a URN "startsWith" "urn:org:mycompany" and
objectType="PurchaseOrder" to get a list of purchase orders from "mycompany".


DISCUSSION

I admit the machine efficiency of using fixed-length numeric identifiers
and support their required use in ebXML specifications, especially for
maintaining many-to-many associations among objects. When software is
communicating with other software, nothing is better. But, if software is
communicating with a human, and the human needs to remember an identifier
for future reference, UUID's won't work!

Why can't our ebXML specification support both machine efficient
identifiers (e.g. UUID) and human friendly identifiers (e.g. URN)? The UDDI
identifiers can be used to support many-to-many associations among objects
and the URN identifiers can be used when a result is presented to a human. 

Why not give some freedom to Submitting Organizations to provide
semantically useful URN's for their registered objects?


PROPOSAL (for Phase 2)

The ID attribute of RegistryObject is required to be a UUID. Let this
remain unchanged! But make it less visible to human users. Instead
encourage human interfaces to depend more on semantically meaningful URN's
to reference registry entries or repository items. Also let the software
that communicates with the human turn around and use the same
human-supplied identifier when communicating with the Registry.

The contentURI attribute of RegistryEntry is required to be resolvable to a
locator so that it can be used by arbitrary web browsers without assistance
from a Registry Client. Let this remain unchanged! The need for URN is
separate from the need for this contentURI attribute.

Add a new attribute to RegistryEntry and to Organization, call it URN. Make
this a required attribute just like ID and let it be supplied by the
Submitting Organization if they like, or let it be generated by the
Registry if one is not supplied. 

NOTE: I suggest putting this attribute on RegistryEntry and on
Organization, but NOT on RegistryObject, because I don't necessarily want a
one-to-one correspondence between ID and URN. For example, a registry entry
and its corresponding repository item may share the same URN, but if
repository items are stored in the Registry they will necessarily have
different UUID's because they are different objects. The URN attribute
would be an alternate key for each class. Thus two registry entries or two
organizations could not share the same URN.

The Registry would be required to maintain the association between the URN
and the UUID for each object. 


ADVANTAGES

With a single URN shared by both a repository item and the registry entry
for that repository item, the user can use the same URN to get whichever
item they want returned, e.g.

  getRegistryEntry(URN="urn:org:myobject") 

will return the registry entry instance and

  getRepositoryItem(URN="urn:org:myobject") 

will return the repository item instance. The user need not memorize two
separate and unrelated UDDI values, or submit multiple queries to get the
appropriate UDDI's, if they want both objects! 

Also, it's possible that an Organization and the CPP describing that
organization may share the same URN, but that's an implementation issue. So
it's possible that NIST, the CPP registry entry for NIST, and the CPP
repository item for NIST, may all share the same URN, e.g.
"urn:usgov:nist". There is no ambiguity because each has a separate UUID
and RegistryServices will always make clear what is being asked for when
the URN is used as a reference.

Clients could depend on being able to use any one of the 3 attributes (ID,
URN, contentURI) to retrieve desired objects from the Registry.


**************************************************************
Len Gallagher                             LGallagher@nist.gov
NIST                                      Work: 301-975-3251
Bldg 820  Room 562                        Home: 301-424-1928
Gaithersburg, MD 20899-8970 USA           Fax: 301-948-6213
**************************************************************


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
Search: Match: Sort by:
Words: | Help

Powered by eList eXpress LLC