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

User semantics for dimensions / sug'd guidelines

> Hi Mark-Jason--
> >If the existing contents system is going to work at all, users must be
> >able to provide their own semantics for dimensions.  
> Definitely!
> My intention (and I'm way behind) has been to provide
>  about sixteen predefined dimensions, and suggested guidelines
>  for how to extend.

I hope you won't mind if I expand on my ideas a little.  

Your plan is for d.inside and d.contents to be closely related to each
other, so that neither one has a real meaning without the other.

Suppose I am using ZigZag, and I want to create my own pair of
dimensions that are related int the same way that d.inside and
d.contents are, to serve an analogous but separate purpose.  For
example, suppose I am doing a geneological chart, and I want to
capture the idea of `ancestry'.  I will have two dimensions, d.parent
and d.sibling:

	A-B-C    +--> d.parent
          | |    |
          D E    v d.sibling

A is the parent of B, who is the sibling of D and the parent of C and E.

As far as `ancestry' goes, this is almost exactly the way d.contents
and d.inside work:

	A-B-C    +--> d.inside
          | |    |
          D E    v d.contents

A holds B and D, and B holds C and E, so that C and E are also
considered to be inside of A.

If I want ZigZag to be able to do appropriate computations with
ancestor charts, I will need to be able to tell ZigZag that d.parent
and d.sibling are associated dimensions, that they go together in the
way that d.inside and d.contents do.  In my notes I called this kind
of association a `conjoinment'.  (I think `conjoinment' is as
absolutely awful name.)  d.inside and d.contents are conjoined.

Conjoinment is one of the kit items I was thinking about. When I
create a new dimension, I should be able to say whether it is
conjoined to other dimensions.  

Similarly, the chart above has exactly the same *meaning* as if I had
built it this way:

	A-D      +--> d.parent
          |      |
          B-C    v d.sibling

I would like ZigZag to understand that.  So when I create d.sibling, I
would like a way to say `The order of the cells in a group doesn't
matter, and positive and negative directions are the same.'

This `disorderment' property is closely related to conjoinment, but I
haven't figured out the details yet.  `Disordered' is another item in
the kit.  When I create a new dimension, I should be able to say that
in this dimension, the order of cells in a group is unimportant as
long as they are all linked in a line.  (I called a line of linked
cells in one dimension a `pier', but maybe you have a different name
for it.)

> Interesting point.  Except users might want to add some
>  meaning to the direction of a dimension whose general
>  meaning is predefined without direction.  

Just so.  Dimensions express relations between things.  In forming
relations, they might have any, all, or none of the following properties:

	1. Symmetric (positive and negative are the same, as you said)
	2. Conjoined to other dimensions
	3. Reflexive (A cell is considered to be related to itself)
	4. Transitive (If A-B and B-C, then A is considered to be
	   related to C even though there is no explicit link)
	5. Disordered (I think this turns out to be the same as
	   symmetric + transitive.)

There were a couple of others I thought of, but my notebook is