[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]

Proposal: Global IDs for hypergrid dims



Hi all,

I've been thinking about interoperability between different hypergrid
(ZZ) implementations, and I think one important point is the one of the
same thing being the same thing across implementations, especially dimensions.

PROBLEM: I am transferring a hypergrid from implementation A to impl B.
A uses arbitrary strings as dimension names; B assigns globally unique
dimension IDs somehow to avoid conflicts between applitudes. After the
conversion, I will want to run some utility over the hypergrid that
converts some of A's system-defined structures into B's system-defined
structures (e.g., clones).

When writing the code, how do I know which of B's dimensions corresponds
to which of A's dimensions? I need to be able to step along d.clone...
but B has dim/399/23/114 instead or some such. If the actual dimension
ID is assigned when I convert the hypergrid, one time the dim may be
dim/399/23/114, and another time dim/839/912/5...

SOLUTION: Dimension names need to be global. Different people should be
able to use different naming schemes, but there should be some
coordination so that the same dimension name does not have a meaning in
two different schemes.

PROPOSAL: Dimension names are URIs (Uniform Resource Identificators).
These have the benefit that they are easy to agree on, and we don't need
some kind of own central registry or anything like that. They can be
URLs; for example, Ted could say that http ://xanadu.net/zz/d.calc is
*the* dimension for describing that the content of cell C is determined
by some function (connected to it on, you guessed it, http ://xanadu.net/zz/d.calc).

All implementations would have to support URI dimension names. For the
old string dimensions, we could have a special namespace, for example we
could try to get one like urn:urn-4:d.foo. Users wouldn't necessarily
see these dimension names; for example, urn:urn-4:d.foo could always be
written "d.foo" on the screen (unless the user requests otherwise). It's
just an internal thing that would enable hypergrid implementations to
remain interoperable at least at the basic level.

Whaddya think?
- Benja