The Problem of Reference In order to build a robust framework, we need
to solve an important problem, namely that of reference/addressing. How do we
refer to the object whose "social security number is 550-91-6732 and name is
The following "obvious" solutions are not completely adequate.
The long term solution we propose is similar in
spirit to the notion of Universal Resource Constraints. That is, we refer to
things by providing a description of the thing. So, we could refer to the web
page whose url is "http://mcf.research.apple.com" as :
- Reference by name : there are too many nameless entities and entities with
the same name for this to work.
- Rerefence by URL : assign everything a url. No thanks, we have enough of a
problem with urls going stale.
- Refefence by unique keys : use unique keys such as tax id numbers. This
does not work for a lot of objects. Furthermore, the privacy implications of
this are horrific.
Some important points to
- The object whose url is "" or
- The MCF home page at Apple Research Labs.
- This scheme, in effect, turns each reference into a query. What if there
are multiple potential answers? How large is the query space? We define the
answer to be the first one found where the search order is strictly defined
(e.g., first in the file where the reference occurs, then ...). This also
allows for terser references to objects within the same file, etc.
- Typically, there will be fairly canonical ways of refering to most objects
such as web pages. Even for organizations (such as Apple or Netscape) that are
fairly stable, we can assign urls. And for such references, we can invent
notations that will allow an easy and compact syntax.
- This scheme is not just a pedantic exercise, but does allow for more
flexible and useful references. For example, I can now refer to the "latest
press release that is available at www.apple.com" even though I don't know the
specific url for this press release, and either a client or server can
dereference this for me.
This is the eventual direction we want to move in. However, version 0.95 of
MCF does not have this general feature. In this version, references to
objects will be solely via the use of unique identifers assigned to them.