Type Names

What type names are

A type name is a character string used to globally identify a unique type in the global type-space.

A name goes with one type only

Type names are references of global scope. Everybody who is able to determine a type from its name will resolve that name to the same type, no matter where they are on the Net. (It's possible that some people might not be able to resolve a given type name at all, though. This is sometimes desirable if you want to keep a new type private at first.)

Different people may retrieve different type descriptions for the same type, depending on what type oracle they talk to. And the description for a type may change over time as well. (TOP has mechanisms for keeping type descriptions reasonably consistent over different type oracles.) But the basic type being described is the same, and if the type's status is "published", the published type definition will never change.

One type, multiple names

It is possible for a type to be known by more than one name. Alternate names for a type are known as "aliases". The type description object stores the various names by which a type is known.

Generally a type does not have more than a few names, and most types only have one name. But alternate names can be useful in some circumstances. For instance, a type may be initially defined with a long name, but given a shorter name (possibly in a new namespace) once it becomes widely used.

Legal names

The standard format of a type name is a string of printable letters, digits, and ASCII punctuation characters. No whitespace, invisible, non-ASCII, or control characters are allowed. Currently letters are required to be lowercase. If uppercase letters are eventually allowed, names will not be case-sensitive (in other words, the name "E:INT" will be the same as "e:int").

(I can be more strict, but I want to be loose enough to allow all MIME names if possible.)

The name is required to be in a recognized namespace (see below).

Namespaces

To make the global space of type names manageable, type names are organized into top-level namespaces. Each top-level namespace has its own label, and all types in that namespace start with the namespace label followed by a colon. For instance, the type name "mime:application/rtf" is in the "mime" namespace.

There are relatively few top-level namespaces. Each such namespace can have its own policy for assigning new names. The list of recognized top-level namespaces is currently administered by the creator of TOP, John Ockerbloom (spok@cs.cmu.edu).

Unless you have made special arrangements with the administrator of a namespace, you will probably create new types in the "net" namespace.

spok@cs.cmu.edu (Last updated 28-Dec-94)