Architecture

The identity is a Uniform Resource Identifier (URI). The protocols currently supported are:

http:

The object is downloaded in XML format over HTTP. The identifier format is well known.

file:

The object is located in the local filesystem in XML format. The identifier format is well known.

urn:path:

This is the preferred type of identifier, conforming to the Path URN Specification draft [pathurnspec]. It has the structure urn:path:/path/component, where path is an abstract path to the component, and component the name of the component[1].

The URI is translated using a resolving mechanism into a URI list, as described in [pathurnspec]. These URIs are recursively tried until a URL in one of the forms http: or file: given above is found[2].

The resolver maps paths into base URIs, whereto the component name is appended. The path may match partially, and several paths of different lengths may therefore match. In this case, the longest (most specific) match will be tried first. The non-mathing part is appended to the base URI before the component name.

As an extension to the Path URN specification, the resolver may give the data format that components under the given base URI uses, which it describes with a MIME type. This enables the browser to choose the preferred data format, based on for example the domain of the server (if local, use direct access to database etc.). If no format is given, the format implied depends on the URI protocol used.

Thus, if your resolver maps the path /math/geometry to http://www.nada.kth.se/cid/geomcomponents, which uses the XML format (and MIME type text/xml), the URI urn:path:/math/geometry/euclidean/circle will become http://www.nada.kth.se/cid/geomcomponents/euclidean/circle which can be immediately downloaded.

These identifiers can be used from anywhere to refer to a certain component, with the only reservations being that certain URIs are relative to your current position (typically, file: URIs), and are therefore intrinsically local.

The resolving mechanism for Path URNs is currently a table with all known path names. This table is loaded upon startup of the browser.

Notes

[1]

This way, the system indeed becomes a Knowledge Pathwork.

[2]

Until other protocols are supported, that is. Notably, other protocols will be needed to access CORBA components.