Welcome to Sunless-Sea Roy Neary: [Contemplating the Ent^H^H^H lump shape] This means something... This is important. -Movie: Close Encounters  
 
SITENAV
 meetings
 what's new?
 whiteboards
 post article
 frontpage
 downloads

ORIENTATION
 legalisms
 history
 glossary
 participants

BACK-ENDS
 udanax-green
 udanax-gold

ALGORITHMS
 coordspaces
 enfilade
 ent

OLD MANUALS
 XIA

HELPING
 puzzles
 needs
 funding
Like the site? Click to donate!

 site-traffic
 admin


Chapter 4: Document Content

The Xanadu system supports many types of information content. This information is organized in Editions to form Xanadu documents. Editions provide the "shape" of a Xanadu document. The actual characters, pixels, and drawing elements that make up the document are represented by RangeElements. This chapter discusses Editions in detail, giving several examples of kinds of information and how they might be stored using the Xanadu Information Architecture.

The process of creating information storage conventions for theXanadu system is just beginning and this chapter only scratches the surface. We expect that many of the papers in the Xanadu Technical Notes series will cover various forms of information content in greater detail.

Coordinate Spaces

A crucial aspect of storing information is being able to get it back in some useful form. A string of characters has an order, and needs to be retrieved in the same order it was stored. Every character in a string has a unique position in the string. In the Xanadu system, this position information is represented by using coordinate spaces.

 

Every Edition has an associated coordinate space that preserves the structure of its content. A coordinate space describes the position that are legal in that Edition. The Edition's domain is the set of positions the Edition has. It's range is the collection of RangeElements that correspond to those indices. The purpose of an Edition is to provide the mapping from the domain to the range.

Coordinate spaces also control which Editions can be combined. Two Editions can only be combined if they have the same coordinate space.

Integer Space

The simplest coordinate space is Integer Space. Integer Space can have any position that is an integer. 32, 58, and -3, are all legal positions in Integer Space, but 3.14 is not. Integer Space is commonly used for linear information such as sound samples or strings:

 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
E a c h   L e t t e r   h a s   a   P o s i t i o n

The letters make up the range of the Edition. The numbers inside the Edition are its domain. Since all of these numbers are integers we say that this is an integer indexed edition.

In the example above, the Edition is continuous: all of the positions from O through 25 are occupied. Some Editions are discontinuous:

 0  1  2  3  4  5  6  7  8 12 13 14 15
D i s c o n t i n u o u s

Though they are legal in an Integer Space Edition, positions 9 through 11 are absent in this Edition. Since the coordinate space is Integer Space, -4 would also be a legal position.

Real Space

The Xanadu system also provides Real Space, which is indexed by real numbers. Real-indexed coordinate spaces are commonly used to describe graphs and graphical objects. For example, a graph showing (X,Y) values might be built using a real-indexed coordinate system:

 4.3 17.8 22.2 15.1 5.3 1.2
19 78.6 32.1 0.05 7.9 42

ID Space

IDs are unique identifiers. Any Xanadu client may request an ID from a server, and will receive a bit pattern that is guaranteed to be unique across all Xanadu servers everywhere. Every Work has an associated ID that allows it to be uniquely identified. The only thing you can do with an ID is store it or compare it to another ID for equality.

ID Space is a coordinate space that holds these unique identifiers. Unlike integers and reals, IDs are not ordered. The most common use of IDs as a coordinate space is for supporting sets of objects.

Sequences

Sequence Space is a coordinate space whose positions are Sequences. A Sequence is any number of integers, followed by a decimal point, followed by any number of integers:

.1, 4, 6

52, 73, 181.27, 52

39, 43

Are examples of sequences. The library of congress catalog numbering system is also based on sequences. In the Xanadu system, Sequence Space has two common uses: outlines and strings. An outline is a collection of items whose labels (e.g. I.A.3.g) may be thought of as sequences with an implicit decimal point on the left:

  1. Basic Nutritional Requirements
  2. Basic Political Recipes
    1. Softening up the Politician
    2. Special Interest Groups
      1. Recipes for Committees
      2. Recipes for Large Budgets

Excerpted from the Politician's Cookbook

Sequence Space is also useful in constructing structures like dictionaries. Each word in the dictionary can be converted into a sequence with the decimal point on the far left. This allows random access by string keys, much like the support provided by binary tree or hash biased indexing. The definitions would be TextEditions appearing at the appropriate positions.

Composing Coordinate Spaces

Linear coordinate spaces provide enough position information to describe text and sound but other kinds of information require more dimensions. Bitmaps don't store well in a one-dimensional coordinate space. In the Xanadu system, you can compose Coordinate spaces to form a "cross space".

Integer x Integer

The simplest example of using a cross space is Integer x Integer Space, which might be appropriate for monochrome cursor images. The bitmap has X and Y coordinates that are integers and a zero or one at each bit position. Each position in the coordinate space contains either a zero or a one:

Real x Real

Another simple example of cross spaces is describing a scatter plot. Each point in the scatter plot has an associated X and Y position, and a value indicating the graphic that the point should be drawn with:

When it comes time to draw the scatter plot, the Xanadu client asks the Edition for its list of positions, which tells the client where the points appear. It then asks for the value at each position to learn the graphic of each point in the graph.

Integer x Integer x Integer

A more interesting example of crossed coordinate spaces might be appropriate for true-color bitmaps. Like the cursor, the bitmap has X and Y coordinates. Unlike the cursor, each point has three components: red, green, and blue.

The RGB value could be stored as 24 bit integer, but if you took this approach it would be difficult to select only the red component for color editing. An alternative would be to use a third dimension to encode red, green, and blue, and store an 8 bit integer at each position.

Edition Types

A coordinate space by itself doesn't provide enough information to interpret the contents of an Edition. An integer indexed Edition could be a sound sample or a string. More information is required to decide which one.

An Endorsement is a pair of IDs. The first ID is the ID of the Club that performed the endorsement. The second can be any ID at all. By convention the second ID is either the ID of one of the built-in types or the ID of a Work that describes the intent of the endorsement. Endorsements may be attached to Works or Editions.

Editions containing text, for example, are identified by an Endorsement that uses a built-in ID as the type:

Because TextEditions are a built-in type, the endorsing Club is always System Admin. Clubs are discussed further in a later chapter, The Permissions System.

The other built-in Edition types are Set, HyperLink, SingleRef, and MultiRef. HyperLinks, SingleRefs, and MultiRefs are part of the Xanadu linking mechanism, and are discussed in the chapter on HyperLinks.

Endorsements provide a general facility for tagging Editions. Their use to represent Edition types is simply a convention.

Range Elements

Up to this point, our examples of the data that Editions contain have been confined to integers and floats. This section provides a complete list of the kinds of RangeElements at the Xanadu system supports.

Data Elements

The simplest content objects are integers and floats.

Integers

Integers are used to represent either actual integer values, or the characters that make up a string. The simple Editions of characters that we have used as examples:

 0  1  2  3  4  5  6  7  8  9 10 11
S o m e   L e t t e r s

Are actually Editions of integers:

 0  1  2  3  4  5  6  7  8  9 10 11
 83 111 109 101  32  76 101 116 116 101 104 115

Each character is represented by its corresponding ISO-LATIN-1 character encoding. The Xanadu system does not supply a separate character type. Endorsing this Edition as a TextEdition would let you know that it should be interpreted as characters rather than as integers.

In the Xanadu system, all integers are arbitrary precision. The only limit on the size of the integer you can store is the amount of disk space available on your server. One consequence of this is that an Edition can freely intermix ISO-LATIN-1 characters with UNICODE and ISO-10646 characters without any loss of function. The server does not care if the characters are 8 bit, 16 bit 32 bit, or any mixture of these.

Floats

An Edition may also contain floating point values. For example, a 44.2 Khz sound sample from a compact disc might be stored as an integer-indexed edition of floats:

0 1 2
 5.2  37.95 18.22

One of the challenges in dealing with floating point values is representation. Every client system has a different representation for floating point, and none of them correspond exactly to real numbers. This generation of the Xanadu system provides an interface in terms of 32-bit (single), 64-bit (double), and 128-bit IEEE extended floating point values, which are sometimes known as "quad" floats. A given client library provides mechanisms to convert between the IEEE floating point representation and the native floating-point format(s).

Structured Content

Just as Editions may contain integers and floating point values, they may contain Works and other Editions.

Editions

Using Editions as RangeElements allows documents which require structure, such as object-oriented drawings, to represent that structure using the tools of the Xanadu Information Architecture. If a point is represented as an (X,Y,Z) pair as shown above, a line might be represented by two such Editions:

Works

Works may also be included as RangeElements. The most common example of this occurs in history trails, which are discussed extensively in the "Document Management" chapter.

By including a Work in the content of an Edition, a permissions boundary can be established in the middle of a document. For example, the financials chapter of a business plan might have more restricted access than the business plan in general. By making each chapter of the document be a separate Edition, the financial section could be protected by inserting a Work into the tree of Editions:

The intervening Work also acts as a change boundary. Changes to the Financials portion of the business plan can occur without impacting the containing Edition.

Labels

Labels provide an alternative mechanism for capturing the identity of a RangeEIement they are especially important for keeping links up to date as a document changes.

In the Xanadu system, links are attached to the content of the document. Whatever else happens, the link will continue to reference the characters, bits, objects or sounds that it originally referenced. Equally important, however, is the context in which the content appeared. To preserve this, HyperLinks include a path context, which describes how to find the content from the document's Work. As the document is changed, the content may: be moved from one place to another, intervening Editions may be added or removed, and in general changes may be made that make the path obsolete. Often this results in multiple paths to the content of the link. Labels provide a means for determining which of these paths most closely corresponds to the original context of the link. A Label provides a unique name for a RangeElement in the context of an Edition. When the RangeElement is moved, the Label moves with it. If the RangeElement is replaced, the Label is attached to the new RangeElement. In short, the Label captures the author's intentions about the identity of a particular RangeElement. By managing and updating Labels appropriately, the context of links is preserved as the document develops.

Summary

This chapter has presented the details of Editions and RangeElements, which are the two parts of document content in the Xanadu system. By Thoughtful combination of Editions, RangeElements, and Endorsements, almost any kind of information can be stored efficiently in a Xanadu repository.

Reading List
As We May Think, 1945 Vannevar Bush
Augmenting Human Intellect:A Conceptual Framework, 1962 Doug Engelbart
Literary Machines, 1981, 87, 93 Ted Nelson
Engines of Creation, Chapter 14 The Network of Knowledge, 1986, 87 K. Eric Drexler
Hypertext Publishing and the Evolution of Knowledge, 1986 K. Eric Drexler
SF:EarthWeb, 1999 Marc Stiegler

Quick Links
www.udanax.com
www.xanadu.com
www.xanadu.com.au
Udanax List Archive
Xanadu® List Archive

All trademarks and copyrights on this page are owned by their respective companies. Comments are owned by the Poster. The Rest ©2001 Jeff Rush.