[sc34wg3] Unique names in Draft Reference Model

Steven R. Newcomb sc34wg3@isotopicmaps.org
30 Dec 2002 21:04:12 -0600


"Anthony B. Coates" <abcoates@TheOffice.net> writes:

> In the RM draft, why are property names, assertion
> types, and role types forced to share the same
> per-application namespace?

> 4.5 Names of properties of nodes 

> Each property has a name that is unique, within the
> TM Application, among all the names of the
> properties, assertion types, and role types defined
> by the TM Application. In a topic map graph, however,
> property names may be defined by multiple TM
> Applications, so different TM Applications may define
> the same property name. Therefore, each property name
> consists of two fields, separated by the field
> separator symbol defined in 4.5. The first field is
> the name of the TM Application itself, and the second
> field is the property name which is unique within the
> TM Application.

Congratulations; as far as I know, you're the first
non-editor of this document who has asked this
question.

Here's an equally good question: Why shouldn't they
share the same namespace?  What's the advantage of
having separate namespaces for these things?  Would the
advantage of making separate namespaces outweigh the
disadvantage of having to invoke the right one them
whenever referring to a property, or an assertion type,
or a role type?  I think that having separate
namespaces would require all of these identifiers to
have three fields.  Isn't a TM Application likely to be
more robust, and less prone to errors and
misunderstandings, if everything is required to have a
unique name?

If you know of any advantages of having separate
namespaces for these three kinds of things (properties,
assertion types, and role types), please say what they
are.  I can't think of one, unless increasing the
likelihood of confusion, or the number of characters
and fields in a unique identifier, is regarded as
somehow beneficial.

If designers of TM Applications want to, they can use
prefixes for the names.  Here I'm using the same name
for an assertion type (with prefix "A") and a rule type
(with prefix "R"):

http://www.zorp.com::Azorp
http://www.zorp.com::Rzorp

So, in effect, you still have separate namespaces, but
you've avoided having to use a second field separator:

http://www.zorp.com::A::zorp
http://www.zorp.com::R::zorp


So, the way things are, even with only two fields,
everybody can do whatever they want to do, but nobody
has to incur the extra expense of an extra field
separator.

-- Steve

Steven R. Newcomb, Consultant
srn@coolheads.com

Coolheads Consulting
http://www.coolheads.com

voice: +1 972 359 8160
fax:   +1 972 359 0270

1527 Northaven Drive
Allen, Texas 75002-1648 USA