MCF - The Problem of Reference
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 Fred Smith"?
The following "obvious" solutions are not completely adequate.
- 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.
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 "mcf.research.apple.com" as :
- The object whose url is "mcf.research.apple.com/" or
- The MCF home page at Apple Research Labs.
Some important points to note:
- 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 referring 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.