Wednesday, April 19, 2006

Rolonics 104--introducing namespaces

Every rolon has a UUID. Its a 128-bit hexidecimal string used to uniquely identify it. UUIDs are generated using a secure random number generator, so there is a pretty good asurance that each UUID is unique. UUIDs are used in defining structures, so a list of the children of a rolon is simply a list of UUIDs. They have other uses as well, inverted classifier name/value pairs being just one.

However most referencing made by a rolon to other rolons is done by name. The AgileWiki borrows heavily from programming practice here. Structures of rolons provide the basic namespace, as a child inherits the namespace of its parents. Additionally, each rolon has a list of classifier rolons used to augment this namespace. (This list is refered to as the applicitive context.) These two mechanisms intertwine then, as a child rolon also inherits the namespace derived from the applicative context of its parents. And there are five kinds of classifier rolons which can be found in a rolon's applicative context.

1. Include Classifers: The name of another rolon and its children (and exports) are added to the namespace.

2. TagMatch Classifiers: Rolons may be tagged. These are inverted name/value pair classifiers. A TagMatch classifier gives a tag name and a value regex. Any rolon with a matching tag then is added to the namespace.

3. ImportMatch Classifiers: This operates the same way a TagMatch Classifier does, except that it matches against ImportTag classifiers rather than inverted name/value pair classifiers.

4. ImportTag Classifiers: The entire namespace of any rolons with an ImportMatch Classifier which matches an ImportTag Classifier is includeded in namespace.

5. Export Classifier: This classifier has a name and a pathname in its ledger. The pathname is used to define a new name that is added to the namespace.

Wild stuff. But of what use? The AgileWiki supports a multiplicity of namespaces, just like any large programming project. This works out a lot better than having long global names. Its a lot more manageable.

One item of note, ImportTags. These are a means of providing "instant" namespace to streams of rolons entering the wiki. Add a few import tags to an email or blog post and it gets plugged into an extensive context for resolving any wiki names that are used.

The AgileWiki then provides an extensive ontological framework for defining namespaces and resolving names. We believe that this solves the problem that killed early work in Artificial Intelligence, and that the AgileWiki may serve as the basis for its resumption. But likely not AgileWiki3--there's a lot more coming in the future that will NOT be included in this version!

(Did I tell you that my friend Norm is a consulting ontologist?)

0 Comments:

Post a Comment

<< Home