Date: Thu, 20 Oct 1994 14:59:46 PDT
From: Strasen.ES_AE@xerox.com
Subject: Re: "why isn't IETF using FPIs?"
In-Reply-To: <94Oct18.191614pdt.2760@golden.parc.xerox.com>
To: uri@bunyip.com
Message-Id: <"20-Oct-94 14:59:30".*.Steve_Strasen.ES_AE@Xerox.com>
Larry,
I do not know what 'bento' is, but ISO has a several standards relating to the generation of formal public identifiers. This is a little complicated, so hold on.
Firstly, the term "formal public identifier" refers to (is defined in) ISO/IEC 8879 (SGML). However, I believe that in the context of your discussion 'formal public identifier' was used as a generic term, and that the people who were asking about it actually were thinking about the kind of formal public identifiers used in OSI environments - namely ASN.1 object identifiers. Let's look at (generic) formal public identifiers.
There are two main classes of formal public identifiers in use in ISO: ASN.1 object identifiers and SGML formal public identifiers.
(ASN.1) Object Identifiers
ASN.1 object identifiers are defined in ISO/IEC 8824 (Abstract Syntax Notation One (ASN.1)). An ASN.1 object identifier consists of a node of a tree structured graph, and is represented by a sequence of numbers representing the 'arc' which leads to that node. The first number identifies the object identifier as belonging to the CCITT subtree (0), the ISO subtree (1), or a Joint-ISO-CCITT subtree (2). For ASN.1 object identifiers on the ISO subtree, the second number identifies the object identifier as belonging to a subtree of object identifiers defined by an ISO standard (0), assigned by an ISO registration authority (1), assigned under the authority of a member-body (2), or assigned by an organization identified by an ICD number (3). (More on ICD numbers later.)
The intention is to establish a hierarchical structure of naming authorities, each of which is responsible for administering a sub-tree of the object identifier tree. Nothing is said about what is identified by an object identifier; the normal interpretation is that non-terminal nodes identify naming authorities while terminal nodes identify some kind of objects. A compact binary encoding for AS.1 object identifiers is specified by ISO 8825 (ASN.1 Basic Encoding Rules).
(SGML) Public Identifiers
ISO/IEC 8879 (SGML) defines a class of constructs called "(SGML) formal public identifiers". An SGML formal public identifier is a representation in the SGML syntax of a "public identifier" as defined by ISO/IEC 9070 (SGML Support Facilities - Registration Procedures for Public Text Owner Identifiers). Public identifiers (as defined by ISO/IEC 9070) consist of an "owner-name" followed by an "object-name", each of which is a sequence of one or more components. Like ISO/IEC 8824, ISO/IEC 9070 standardizes owner names which identify ISO standards, ISO registration authorities, and organizations identified by ICD numbers. In addition, owner-names may be ISBN prefixes, ISO 2375 character set registration numbers (?!), or the distinguished character string "UNREGISTERED".
Again, the intention is to establish a hierarchical structure of naming authorities, and nothing is said about what is identified by a public identifier. A public identifier may be represented in canonical character string form, in an SGML formal public identifier, or in a data structure known as a structured name public identifier.
International Code Designators (ICDs)
When you were talking about ISBN numbers I think that what you really meant was International Code Designators (ICDs) as defined by ISO 6523 (Data interchange - Structure for the Identification of Organizations). ICDs are intended to designate a set of codes (such as bank identification codes or charge card numbers). ICDs are assigned by an ISO registration authority. The requestor is required to specify the name and structure of the coding system and to provide a description of the organizations covered by its use.
ISO 6523 specifies a method of coding ICDs, but does not provide a method of representing codes assigned under an ICD or of distinguishing the ICD and code in any generally used interchange syntax. Both object identifiers and public identifiers do provide a method for representing ownership by an organization registered under ISO 6523, but do not specify a mapping of the codes themselves into object identifiers or public identifiers.
Similarities Between Object Identifiers and Public Identifiers
Both object identifiers and public identifiers consist of sequences of components which are intended to be administered by a hierarchical naming authority. Both defining standards specify roots for the assignment of identifiers by ISO standards, ISO registration authorities, ISO member bodies, and organizations identified by ICDs. Both provide the ability to generate identifiers which are guaranteed to be globally unique. Neither provides any mechanism for the avoidance of aliases. And neither says anything about what is identified by an identifier (e.g. there is no criterion for when two objects which are in some sense distinct may be appropriately identified by the same identifier).
Differences Between Object Identifiers and Public Identifiers
Object identifiers and public identifiers differ principally in three ways:
1) Object identifier components are numbers, while public identifier components are character strings.
(Numbers are amenable to compact representation, while Character strings are more user friendly. (C.f. "If FPIs are the nasty multiple dotted numbers that we see everywhere in ISO, then it doesnt surprise me that they get ignored!- Mitra") Please note, however, that human sensibility is a two edged sword. The ampersand was only included in the owner-name component character set at the insistance of AT&T, problems certainly lie in store when Internationalization rears its ugly head, and what do you tell IBM when "Itty Bitty Machines" registers its initials as an international organizational identifier.)
2) Public identifiers have a separation between owner-name components and object-name components which has no equivalent in object identifiers.
(This separation may well prove artificial and lead to errors.)
3) There is a class of public identifiers (i.e. those whose owner-name is "UNREGISTERED") whose uniqueness is not assured.
(Probably not important.)
ISO Alternatives
There is (at least) one additional general form of identifier defined by ISO: Directory Distinguished Names as defined by ISO/IEC 9594 are unsatisfactory as formal public identifiers because they inherently lack assurances of global uniqueness.
Conclusions
ISO definitely has standard forms of formal public identifiers in place. While both of these forms of public identifiers have drawbacks (e.g. in practice international organizations are required to get object identifiers under the naming authority of a particular ISO member body), both the support mechanisms (naming authorities) and encoding methods which are compatible with standard structure representation techniques (ASN.1 and SGML) are already in place. Many companies (including Xerox) already have ASN.1 object identifiers and/or public identifier owner names assigned to them.
If you really want to "roll your own" coding methodology (e.g. for something like Internet addresses) rather than use object identifiers and/or public identifiers as defined, you would be well advised to get an ICD and to define standard mappings of the codes into object identifier components and object-names to allow the unambiguous interchange of the resulting codes as ASN.1 object identifiers and SGML formal public identifiers.
Regards,
//Steve