Date: Thu, 27 Feb 92 10:52:44 PST Message-Id: <9202271852.AA05956@tgo.isi.edu> From: bcn@isi.edu (Clifford Neuman) To: timbl@nxoc01.cern.ch Cc: chi-arch@uccvms.bitnet, www-talk@nxoc01.cern.ch, wais-talk@think.com, In-Reply-To: Tim Berners-Lee's message of Thu, 27 Feb 92 17:22:44 GMT+0100 <9202271622.AA09065@ nxoc01.cern.ch > Subject: Draft: Universal Document Identifiers I have glanced through your document on universal directory identifiers, and you seem to have left out Prospero. Prospero is a little different in that it does late binding of the access method. In particular, a Prospero link consists of two parts, a host name, and a name of the object on that host. The latter part is usually a path name, but in reality, it can be any string, including simply a unique ID. Thus, a Prospero link might look like TGO.ISI.EDU /a/b/c or GUM.ISI.EDU 27 A Prospero link has a few other fields as well, but perhaps less important. There is a type field for the hostname. It indicates whether the hostname is an Internet name or address, or perhaps some other kind of name or address. Only one type is presently supported (INTERNET-D) though, and that type includes Internet host names or addresses, with or without an optional Internet UDP port. examples: TGO.ISI.EDU, TGO.ISI.EDU(191), 128.9.224.123, or 128.9.224.123(191) Only a single type is used for all four types of Internet addresses since they are not syntactically ambiguous. The name relative to the host is also typed. Presently, the only type supported is ASCII, but the type field is there just in case. Three other fields are a version number, a unique ID, and a type. The meaning of the version number should be fairly obvious. A version number of 0 matches the most recent version. At present, most objects don't have version numbers, but I felt it was important to include in in the link data. The purpose of the unique ID is less obvious. It is there to provide a mechanism for detecting when an object has been deleted and replaced with an object of the same name. In some cases, it might be important to note that the object being retrieved is not the same as the one to which the original link was made. I will talk about the type field later since it is not what you might think. So, that is a Prospero link. Note, that it does not specify the access method. Binding to an access method is accomplished by sending a message to the Prospero server at the address in the link, and requesting the access method for the named object. The response includes a sequence of tokens, the first identifies the access method, and the remainder identify the information specific to the access method (beyond that which already is part of the link). If you understand the access method, then you also know how to interpret the remaining tokens. For example, a response indicating access by anonymous FTP might be ANONYMOUS-FTP /pub/pfs/guest/README BINARY Note that the host name is not specified since the hostname from the link is assumed. If the host name were different than that in the link, then it would be specified in the response. The path is specified, however, because the path to be passed to the FTP program is different than that in the link (in this case, the link included the prefix /homes/june/ftp. Similar responses are supported for other methods, and a response might include more than one access method, in which case the application choose the method that best suits its needs. Now, back to the type field. One of the shortcomings of the approach as described so far is that it requires a Prospero server to run on the system storing the object to be referenced. This shortcoming is addressed by the external link. The type field in a Prospero link provides information on what can be done with the link. The three common types are FILE, DIRECTORY, and EXTERNAL. The links described above were of type FILE. If a links type is directory, its contents can be listed by contacting the Prospero server (i.e. the links in the directory can be returned). If a links type is EXTERNAL, it means that the object should be accessed without contacting a Prospero server to obtain the access method (usually because a Prospero server is not running on the target site). Instead, the access information that would otherwise have been returned is encoded as part of the type. Thus for example the type of an external link to the file mentioned above would be. EXTERNAL(AFTP,BINARY) Note that for external links using the AFTP or FTP method, the name field of the link contains the path name to be passed to FTP. For other access methods, the meaning of the field is defined by the particular access method to be used. Anyway, I hope this adequate explains the form of Prospero identifiers, and I hope that you can fit it in to your proposed format. ~ Cliff