xuPurpMinMin-D7
=== 14.03.23
For discussion:
MINIMAL DEFINITION OF XANADU® PURPLE DATA
Theodor Holm Nelson, Founding Designer, Project Xanadu
Note: "Xanadu" and "ZigZag" are registered trademarks
of Project Xanadu.
Xanadu data structure was designed for
visibly connected pages, but is intended
more generally-- for a different kind of
generalized media connection.
It is inside-out from conventional markup languages,
since neither content nor links are contained
in the main file.
Xanadu Purple is a dumbdown of Xanadu Green,
mapping it to conventional files instead of tumbler addresses
(note: tumbler addressing is now defined in Wikipedia).
Xanadu Purple is intended for eventual mix-and-match
operability with Xanadu Green.
(The following separate definitions all have a single
unified form in the elegant Xanadu Green,
which this mapping to conventional files will not allow.)
=== OPTIMIZATION
The following formats are far from optimized.
This is not a current priority.
=== SPANPOINTER, A MINIMAL MAIN UNIT
A spanpointer is a pointer to clean raw content
stored at some network location. The spanpointer
consists of a URL, starting point and length.
The problem has been: how to make it a simple
clean unit. We want it to be a single item,
simpler than having three consecutive items
URL=
START=
LENGTH=
We could concatenate them as (URL,START,LENGTH),
but then we get the bothersome problem of
parsing the whole URL to fight our way through
to START and LENGTH.
The solution: Concatenate them with the URL last,
as START,LENGTH,URL (which we can call SLU format).
This means that parsing is just peeling off
integer
comma
integer
comma
and what's left is the URL.
The normal syntax to find a span of content is then
SourceContent = [spanpointer, in SLU format]
=== WHOLE XANADOC (EDIT DECISION LIST), type .xanadoc
This is a list of content to bring in and concatenate,
and a list of xanalinks to bring in and apply to
the concatenated content.
It is of the form:
SourceContent = [spanpointer]
SourceContent = [spanpointer]
SourceContent = [spanpointer]
…
xanalink = [URL of xanalink]
xanalink = [URL of xanalink]
xanalink = [URL of xanalink]
...
=== XANALINK-- A MEDIA CONNECTOR, type .xanalink
A xanalink is a free-standing connection table,
stored at its own URL,
which connects media in some way.
Xanalinks can have many types, representing
literary relations and other structure.
We will be defining these types gradually.
A xanalink has 1 or more facets, each with
a specific sub-meaning within that connection type.
For author's convenience these may be specifed
in the link table itself.
Example: file 001.xanalink
TYPE = COMMENT
DEFINED-AT = [URL of official definition]
FACET-1_MEANING = "Commented-on content, commentandum" [phrase from official definition at URL]
FACET-2_MEANING = "Comment itself" [phrase from official definition at URL]
A facet can have any number of fields,
specifying connections having that sub-meaning
that are part of that particular link.
Example: facet 1 of a comment (the commented-on content)
may have a number of parts in different places.
These will each be specified by a separate
xanalink field.
=== XANALINK FIELDS CAN BE OF VARIOUS TYPES
= pointer to entire sourcedoc [sourcedoc URL]
FORMAT:
WholeSourcedoc= [URL of sourcedoc]
= pointer to entire xanadoc
FORMAT:
WholeXanadoc = [URL of xanadoc]
= classical xanalink connection,
to span of clean content in sourcedoc
FORMAT:
SourceContent= [spanpointer]
= pointer to source content as shown
in a particular xanadoc (if that xanadoc
contains that content, or any part of that content)
TWO-PART FORMAT:
ShowInXanadoc = [xanadoc URL]
[FOLLOWED BY]
SourceContentInXanadoc= [spanpointer]
= pointer to xanalink
FORMAT:
Xanalink= [URL of xanalink]
=30=
span: