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)