Network Working Group M.T. Rose
Internet-Draft M.R. Gazzetta
Expires: July 22, 2000 Invisible Worlds, Inc.
January 22, 2000
Blocks eXtensible eXchange Service
draft-mrose-blocks-service-00.txt
Status of this Memo
This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026 except that the right to
produce derivative works is not granted. (If this document becomes
part of an IETF working group activity, then it will be brought into
full compliance with Section 10 of RFC2026.)
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on July 22, 2000.
Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved.
Abstract
Blocks[1] is an architecture for managing metadata. The architecture
supports two models: the Blocks exchange model organizes information
into navigation spaces, whilst the Blocks convergence model allows
for bulk synchronization and knowledge management.
This memo describes how to provision a Blocks service.
To subscribe to the Blocks discussion list, send e-mail[9]; there is
also a developers' site[10].
Rose & Gazzetta Expires July 22, 2000 [Page 1]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . 3
2. Defining Object Types . . . . . . . . . . . . . . . . 4
2.1 Pre-defined Blocks . . . . . . . . . . . . . . . . . . 5
2.1.1 Commonly-used Properties . . . . . . . . . . . . . . . 5
2.1.2 Scripts . . . . . . . . . . . . . . . . . . . . . . . 7
3. Naming Objects . . . . . . . . . . . . . . . . . . . . 8
4. Creating and Storing Objects . . . . . . . . . . . . . 9
5. Retrieving, Evaluating, and Publishing Objects . . . . 10
5.1 CGI-based Builders . . . . . . . . . . . . . . . . . . 10
5.1.1 CGI Parameters . . . . . . . . . . . . . . . . . . . . 10
5.1.1.1 Retrieval Parameters . . . . . . . . . . . . . . . . . 10
5.1.1.1.1 Union Parameters . . . . . . . . . . . . . . . . . . . 10
5.1.1.1.2 Tag Parameters . . . . . . . . . . . . . . . . . . . . 10
5.1.1.1.2.1 Normalization . . . . . . . . . . . . . . . . . . . . 11
5.1.1.1.2.2 Boolean Expressions . . . . . . . . . . . . . . . . . 12
5.1.1.1.3 Text Parameters . . . . . . . . . . . . . . . . . . . 13
5.1.1.1.4 Block Parameters . . . . . . . . . . . . . . . . . . . 14
5.1.1.1.5 Miscellaneous Parameters . . . . . . . . . . . . . . . 14
5.1.1.2 Evaluation Parameters . . . . . . . . . . . . . . . . 15
5.1.1.2.1 Evaluation Scripts . . . . . . . . . . . . . . . . . . 15
5.1.1.3 Publication Parameters . . . . . . . . . . . . . . . . 16
5.1.1.3.1 Publication Scripts . . . . . . . . . . . . . . . . . 16
5.1.1.4 URL Parameters . . . . . . . . . . . . . . . . . . . . 16
5.2 Well-known Scripts . . . . . . . . . . . . . . . . . . 17
5.2.1 Evaluation Scripts . . . . . . . . . . . . . . . . . . 17
5.2.1.1 evaluate.null.1 . . . . . . . . . . . . . . . . . . . 17
5.2.1.2 evaluate.doc.*.generic.1 . . . . . . . . . . . . . . . 17
5.2.1.3 evaluate.sort.1 . . . . . . . . . . . . . . . . . . . 17
5.2.2 Publication Scripts . . . . . . . . . . . . . . . . . 18
5.2.2.1 publish.doc.edgar.spacescript and
publish.doc.spacescript20 . . . . . . . . . . . . . . 18
5.2.2.2 publish.debug.1 . . . . . . . . . . . . . . . . . . . 18
6. The BXXS DTD . . . . . . . . . . . . . . . . . . . . . 19
References . . . . . . . . . . . . . . . . . . . . . . 22
Authors' Addresses . . . . . . . . . . . . . . . . . . 23
A. The RFC space DTD . . . . . . . . . . . . . . . . . . 24
B. Reference Blocks Structure Specification . . . . . . . 27
C. The BANANA DTD . . . . . . . . . . . . . . . . . . . . 28
D. An Example of a Delegation Request . . . . . . . . . . 31
Full Copyright Statement . . . . . . . . . . . . . . . 33
Rose & Gazzetta Expires July 22, 2000 [Page 2]
Internet-Draft Blocks eXtensible eXchange Service January 2000
1. Introduction
This document describes how to provision a Blocks service.
Service provisioning consists of several activities:
o defining the structure of the object types for exchange;
o defining the naming hierarchy used for objects;
o configuring mixers to create objects and store them in one or
more BXXP servers; and,
o configuring builders to perform the retrieve-evaluate-publish
paradigm.
Rose & Gazzetta Expires July 22, 2000 [Page 3]
Internet-Draft Blocks eXtensible eXchange Service January 2000
2. Defining Object Types
The SEP datastore DTD (c.f., [2]'s Section 7) defines the rules used
for structuring objects in an SEP datastore. In brief:
o each object must be a well-formed XML document[3];
o the root element of each object must contain a "name" attribute;
and,
o each element in the object, termed a property, may contain either
character data or subordinate elements, but not both.
The SEP datastore DTD describes both a generic syntax and a specific
syntax for an object type. The specific syntax uses a syntactic
minimization technique to increase readability and reduce size. For
this reason, use of a specific syntax is recommended.
For example, Appendix A uses an XML Document Type Definition (DTD)
to define the "rfc" object type. The DTD has four parts:
o a comment describing how to reference the DTD for inclusion in an
XML application;
o a collection of data type definitions (XML entities) used when
defining an object type (e.g., "DAY");
o a definition of an entity that corresponds to the object type
being defined (i.e., "RFCSPACE.BLOCK"); and,
o the definition of the object type.
By organizing a DTD in this fashion, object types are systematically
described and XML validators may be used during the development
process.
Rose & Gazzetta Expires July 22, 2000 [Page 4]
Internet-Draft Blocks eXtensible eXchange Service January 2000
2.1 Pre-defined Blocks
Section 6 defines the BXXS DTD, which defines commonly-used
properties used in object types, along with an important object type.
2.1.1 Commonly-used Properties
The BXXS DTD defines several elements known as the "generic" content
set:
title: a brief textual name for an object, e.g.,
Request for Comments 2629
description: a (possibly) multi-line description of an object;
image: an iconic representation of an object, having several
attributes:
src: a URI[4] to the corresponding image;
alt: an very brief textual name for the icon (optional);
height: the height in pixels of the icon (optional); and,
width: the width in pixels of the icon (optional), e.g.,
organization: a textual name for the organization "responsible" for
the object (if the length of this string is greater than 42
characters, then an abbreviated value should be placed in the
element's "abbrev" attribute), e.g.,
Invisible Worlds,
Incorporated
Rose & Gazzetta Expires July 22, 2000 [Page 5]
Internet-Draft Blocks eXtensible eXchange Service January 2000
address: contact information for the entity "responsible" for the
object, consisting of several optional elements:
postal: a postal address containing one or more "street"
elements, followed by any combination of "city", "region"
(state or province), "code" (zipcode or postal code), and
"country" elements, e.g.,
1179 North MacDowell Boulevard
M/S 40
Petaluma
CA
94954-6559
US
phone: a telephone number for voice purposes, e.g.,
+1 707 789 3700
facsimile: a telephone number for facsimile purposes;
email: an email address[5], e.g.,
postmaster@example.com
uri: a URI[4], e.g.,
http://example.com/
The flexibility in postal addresses is provided to allow for
different national formats. Note however, that although the order of
the "city", "region", "code", and "country" elements isn't
specified, at most one of each may be present. Regardless, these
elements must not be re-ordered during processing by an XML
application (e.g., display applications must preserve the ordering
of the information contained in these elements). Finally, the value
of the "country" element should be a two-letter code from ISO 3166.
Rose & Gazzetta Expires July 22, 2000 [Page 6]
Internet-Draft Blocks eXtensible eXchange Service January 2000
When defining a new object type (e.g., "rfc" in Appendix A), the
"%generic.content;" entity is included in the content model to allow
automatic inclusion of:
o an optional "title" element;
o an optional "description" element;
o zero or more "image" elements;
o an optional "organization" element; and,
o an optional "address" element in each object.
2.1.2 Scripts
An "xscript" object type consists of one or more "remote.props"
element along with generic content.
Each of the script's "remote.props" elements has the same semantic
content -- they differ only in the scripting language used to
implement the semantics. The two attributes in a "remote.props"
element are:
uri: a URI to the actual script; and,
language: the language the script is written in.
In addition, each "remote.props" element has zero or more "property"
elements, an optional "title" element, and an optional "description"
element. The "property" elements, if present, are used to pass
additional information to the URI (e.g., POST parameters for the
"http:" method).
As with all object types, the SEP requires that the "xscript"
element have a "name" attribute at its top-level, e.g.,
Rose & Gazzetta Expires July 22, 2000 [Page 7]
Internet-Draft Blocks eXtensible eXchange Service January 2000
3. Naming Objects
The Blocks naming structure is hierarchical, with labels separated
by dots, and read left-to-right, e.g.,
net.ipv4.207.67.199.3
doc.rfc.2629
The "Blocks Assigned Names and Numbers Allocator" (BANANA) is
responsible for assigning meaning to the most-significant (leftmost)
labels in a name. The prefix "private" is always available for
experimental uses, though collisions in naming within this space are
possible.
Until the Blocks convergence model is published and its service
provisioned, allocation of the Blocks namespace is done manually by
the BANANA using a mechanism of email-based requests for delegation
of authority. The BANANA DTD (Appendix C) defines the "soa.request"
document type, which should be mailed as an "text/xml" MIME
attachment to [11]. As the allocator will be an automated process in
the future, requests that require human intervention may be sent to
[12].
Once the BANANA has assigned a prefix to a developer, care should be
given to how blocks are named under that prefix. Although the SEP
allows for agressive searching within a high-level naming scope
(e.g., "doc.rfc"), if additional hierarchy is meaningfully applied,
then searching can be more focused.
For example, in the doc.rfc space, additional blocks are defined as
a mapping between RFC numbers as assigned by the RFC editor. This
naming convention (e.g., doc.rfc.2629) scales because of the limited
number of objects for which metadata are stored. However, for the
doc.edgar space which consists of metadata extracted from the SEC
EDGAR filing stream, a 3-level name space would be impractical,
containing over 500,000 objects at the third level. In the case of
doc.edgar, more meaning was added to the naming hierarchy by using
the year as the third level, a "CIK" (which is a unique
identification for a particular filer) as the fourth level, and
using a unique sequence number for the fifth (and final) level of
naming.
Synchronization of replicas of a particular portion of the Blocks
namespace and schema management are both addressed in the Blocks
convergence model. Until publication of those documents, relevant
schema information in the form of DTDs can be found at [13] with
directories conforming to the Blocks namespace, e.g., if you are
looking for relevant DTDs about doc.edgar, go look at [14].
Rose & Gazzetta Expires July 22, 2000 [Page 8]
Internet-Draft Blocks eXtensible eXchange Service January 2000
4. Creating and Storing Objects
Configuration of a mixer to create objects is a local matter. Once a
object is created (or modified), the mixer uses the Simple Exchange
Profile to store or update the object in one or more Blocks servers.
Rose & Gazzetta Expires July 22, 2000 [Page 9]
Internet-Draft Blocks eXtensible eXchange Service January 2000
5. Retrieving, Evaluating, and Publishing Objects
Builders take many forms. Web-based development with browsers as the
end-user's interface suggests CGI scripts as an important target
application of the architecture outlined above.
5.1 CGI-based Builders
This section defines the "space" interface for CGI-based builders.
5.1.1 CGI Parameters
There are four sets of parameters, prefixed by either "retrieve.",
"evaluate.", "publish.", or "url.".
5.1.1.1 Retrieval Parameters
There are five kinds of retrieval parameters: union, tag, text,
block, and miscellaneous.
5.1.1.1.1 Union Parameters
If you have a well-formed SEP "" query (c.f., [2]'s Section
5), then use "retrieve.union".
5.1.1.1.2 Tag Parameters
If you want to retrieve based on XML content, use the retrieve.tag.*
parameters. This searches a subtree of blocks, on each element you
specify and merge the results from each search.
So, the first two tag parameters are:
1. retrieve.tag.subtrees, which contains a list of subtrees to
search separated by spaces (e.g., "doc.rfcs gloss.rfcs"); and,
2. retrieve.tag.merge, which says how to merge results, i.e., "and"
or "or" (the default)
Next, you specify how to search the XML content. Searching is
case-insensitive. There are three (or five) ways to do this:
1. retrieve.tag.[Ee].*, which looks for text inside an element's
character data, either exactly (retrieve.tag.E.*) or contained
within (retrieve.tag.e.*);
2. retrieve.tag.[Aa].*, which looks for text inside a particular
attribute value, either exactly (retrieve.tag.A.*) or contained
within (retrieve.tag.a.*); or,
Rose & Gazzetta Expires July 22, 2000 [Page 10]
Internet-Draft Blocks eXtensible eXchange Service January 2000
3. retrieve.tag.x.*, which looks for text inside any attribute
value in a particular.
These parameters may occur multiple times (with results combined
according to the value of retrieve.tag.merge parameter). Because it
may be inconvenient to specify these parameters multiple times,
these special parameters may be used instead:
1. retrieve.tag.[Ll].*, which is analagous to retrieve.tag.[Ee].*;
and,
2. retrieve.tag.[Uu].*, which is analagous to retrieve.tag.[Aa].*.
These special parameters should occur at most once. Their values are
space-separated strings, each of which is treated as a value for
retrieve.tag.[Ee] or retrieve.tag.[Aa], respectively.
To specify a partial containment hierarchy, use the solidus
character to separate the element names, e.g.,
"retrieve.tag.a.doc.props/doc.title" or
"retrieve.tag.e.doc.author/fullname".
5.1.1.1.2.1 Normalization
If a parameter has the name of retrieve.tag.n.*, then it defines how
the text for that tag should be normalized (e.g.,
"retrieve.tag.n.conformed.name" determines how the value of
"retrieve.tag.e.conformed.name" should be normalized).
At present, there is only one defined value:
1: normalizes user-input for use with conformed names, e.g., removes
words like "INC.", replaces hyphens with spaces, and so on.
Rose & Gazzetta Expires July 22, 2000 [Page 11]
Internet-Draft Blocks eXtensible eXchange Service January 2000
5.1.1.1.2.2 Boolean Expressions
If the parameter retrieve.tag.boolean is not present, then the
retrieve.tag.merge parameter determines how the results from
searching for each retrieve.tag.[aex] parameter is merged.
If retrieve.tag.boolean is present, then it contains an infix
boolean expression describing how to merge the search results, e.g.,
"(Q1 OR Q2) AND Q3", where "Qx" is defined using two parameters,
retrieve.tag.k.Qx and retrieve.tag.v.Qx. The value of
retrieve.tag.k.* is the name of a retrieve.tag parameter, whilst the
value of retrieve.tag.v.* is the associated value to match for, e.g.,
retrieve.tag.boolean = "(Q1 OR Q2) AND Q3"
retrieve.tag.k.Q1 = "retrieve.tag.e.conformed.name"
retrieve.tag.v.Q1 = "AMAZON.COM"
retrieve.tag.k.Q2 = "retrieve.tag.e.conformed.name"
retrieve.tag.v.Q2 = "Message Media, Inc."
retrieve.tag.v.Q3 = "retrieve.tag.a.type"
retrieve.tag.v.q3 = "10-K"
In the case where you want to use a single value in different terms
you would use retrieve.tag.r.* as well, e.g.,
retrieve.tag.boolean = "(Q1 OR Q2) AND Q3"
retrieve.tag.k.Q1 = "retrieve.tag.e.conformed.name"
retrieve.tag.v.Q1 = "AMAZON.COM"
retrieve.tag.k.Q2 = "retrieve.tag.e.conformed.name"
retrieve.tag.r.Q2 = "retrieve.tag.v.Q1"
retrieve.tag.k.Q3 = "retrieve.tag.a.type"
retrieve.tag.v.Q3 = "10-K"
Note that value of the retrieve.tar.r term MUST be the name of a
retrieve.tag.v.* term defined for the boolean.
Rose & Gazzetta Expires July 22, 2000 [Page 12]
Internet-Draft Blocks eXtensible eXchange Service January 2000
5.1.1.1.3 Text Parameters
If you want to retrieve based on a fulltext searching, use:
o retrieve.text.full, which specifies a value consisting of one or
more words separated by spaces;
o retrieve.text.subtree, which contains a single subtree to direct
the search; and,
o retrieve.text.merge, which says how to merge results, i.e., "and"
or "or" (the default)
The retrieve.text.full parameter may occur multiple times (with
results combined according to the value of retrieve.text.merge
parameter).
Rose & Gazzetta Expires July 22, 2000 [Page 13]
Internet-Draft Blocks eXtensible eXchange Service January 2000
5.1.1.1.4 Block Parameters
If you always want the retrieval to include certain blocks (or don't
want to search at all), simply specify the blocks you're interested
in, separated by spaces:
o retrieve.blocks, e.g., "doc.rfc.2629 doc.rfc.2223"
o retrieve.blocks.element, e.g., "rfc".
The latter parameter, if present, specifies the top-level XML
element of the block, and often speeds performance.
5.1.1.1.5 Miscellaneous Parameters
o retrieve.maxhits: the maximum number of blocks to return
o retrieve.offset: where to start returning hits from (starting at
0); and,
o retrieve.server: the domain name (or IP address) of the BXXP
server to use.
Finally, three parameters are set prior to execution of the first
evaluation script:
o retrieve.names: a list containing the names, in order, of the
matches returned (upto retrieve.maxhits names starting at
position retrieve.offset);
o retrieve.allhits: the actual number of matches generated during
the retrieval process; and,
o space.query: the actual query given to the builder, regardless of
whether it was issued via a GET or POST.
To provide a "scrolling" interface, invoke the builder with a
reasonable value for retrieve.maxhits and a zero-valued
retrieve.offset. When the publication script runs, if:
retrieve.offset+retrieve.maxhits < retrieve.allhits
then create a "more" button which invokes the builder with an
identical set of parameters except that retrieve.offset is
incremented by the value of retrieve.maxhits.
Rose & Gazzetta Expires July 22, 2000 [Page 14]
Internet-Draft Blocks eXtensible eXchange Service January 2000
5.1.1.2 Evaluation Parameters
One or more Tcl[8] scripts are executed to evaluate the relationship
between the retrieved blocks:
o evaluate.scripts, e.g., evaluate.doc.rfc.generic.1; or,
o evaluate.uris, e.g., http://example.com/evaluate.tcl
As usual, separate the scripts or URIs with spaces in the value of
these parameters. Note that "evaluate.uris" is consulted only if
"evaluate.scripts" is not present.
Section 5.2.1 contains a list of commonly used evaluation scripts.
5.1.1.2.1 Evaluation Scripts
Each script is evaluated in a safe-interpreter. "Safe" filesystem
and socket access are allowed.
Prior to invoking the script, the options, env, and blocks arrays
are initialized. Upon completion of the script, the relates array is
read.
The options array contains an entry for each argument supplied to
the script, e.g.,
set options(publish.script) publish.doc.rfc.generic.1
The env array contains an entry for each environment variable
available to the script, e.g.,
set env(HTTP_SERVER) www.example.com
The blocks array contains an entry for each block retrieved by the
script. The syntax of this entry varies depending on the builder
version. The reference specification is described in Appendix B.
Finally, at completion, the relates array should contain an entry
for each block. The syntax of each entry is a serialized array, e.g.,
set relates(doc.rfc.1234) \
{score 1 superiors {doc.rfc.5678 doc.rfc.3456} luminance 1}
The semantics of each entry is dependent on how the publication
script will use it.
Rose & Gazzetta Expires July 22, 2000 [Page 15]
Internet-Draft Blocks eXtensible eXchange Service January 2000
5.1.1.3 Publication Parameters
A Tcl script will be executed to generate output:
o publish.script, e.g., publish.doc.rfc.generic.1; or,
o publish.uri, e.g., http://example.com/publish.tcl
Note that "publish.uri" is consulted only if "publish.script" is not
present.
The "publish.mime" parameter specifies the content-type generated by
the publication script, defaulting to "text/html". A publication
script producing some other type of output, should modify this
parameter accordingly.
The "publish.cookies" parameter, if created by the publication
script, contains a serialized array of cookies. Each element of the
array is a serialized array containing a "value", and optionally:
"domain", "expires", "path", and "secure".
5.1.1.3.1 Publication Scripts
Section 5.2.2 contains a list of well-known publishing scripts.
A publication script is evaluated in a safe-interpreter. "Safe"
filesystem and socket access are allowed.
Prior to invoking the script, the options, env, blocks, and relates
arrays are initialized. Upon completion of the script, the result is
returned to the browser.
5.1.1.4 URL Parameters
The builder uses HTTP to access the evaluation and publication
scripts references by the "evaluate.scripts", "evaluate.uris",
"publish.script", and "publish.uri" parameters. Because these URLs
may reside on sites with password protection, two additional
parameters are provided:
o *.username, which specifies a username for basic authentication
for the HTTP server at a given domain name (e.g., use a parameter
of "url.example.com.username" to specify the username for basic
authentication for http://example.com).
o *.password, which specifies the corresponding password.
Rose & Gazzetta Expires July 22, 2000 [Page 16]
Internet-Draft Blocks eXtensible eXchange Service January 2000
5.2 Well-known Scripts
5.2.1 Evaluation Scripts
5.2.1.1 evaluate.null.1
To specify that no evaluation is to be performed on the returned
blocks, use the evaluate.null.1 script.
5.2.1.2 evaluate.doc.*.generic.1
These scripts looks for a parameter called evaluate.luminance that
contains a list of URLs. Each URL references a .txt file that is
available via the http: method. Each line of the file starts with a
block name (e.g., "doc.rfc.2629") followed by an even number of
name/value pairs. All items are separated by spaces, e.g.,
doc.rfc.2629 luminance 100
Currently, valid luminance evaluations can be performed on edgar and
rfc documents.
5.2.1.3 evaluate.sort.1
This script sorts the returned blocks according to the following
options:
o user.evaluate.generic.sort.type, one of 'dictionary', 'ascii',
'integer', 'real' or 'calendar';
o user.evaluate.generic.sort.order, either 'ascending' or
'descending';
o user.evaluate.generic.sort.e, an element on whose text to sort;
and,
o user.evaluate.generic.sort.a, an attribute on whose value to sort;
Of course, only one of the user.evaluate.generic.sort.* options may
be specified for a given evaluation script.
Rose & Gazzetta Expires July 22, 2000 [Page 17]
Internet-Draft Blocks eXtensible eXchange Service January 2000
5.2.2 Publication Scripts
5.2.2.1 publish.doc.edgar.spacescript and publish.doc.spacescript20
These scripts specify use of SpaceScript as server-side blocks data
publication language. SpaceScript itself is described in a separate
document[7].
Options to be specified when using SpaceScript are:
o user.publish.spacescript.url, the location of the template that
contains SpaceScript code; and,
o user.publish.page.nav.url, the location of a template to be used
as page navigation tool.
5.2.2.2 publish.debug.1
This script displays the contents of the retrieved blocks without
further processing.
Rose & Gazzetta Expires July 22, 2000 [Page 18]
Internet-Draft Blocks eXtensible eXchange Service January 2000
6. The BXXS DTD
Rose & Gazzetta Expires July 22, 2000 [Page 19]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Rose & Gazzetta Expires July 22, 2000 [Page 20]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Rose & Gazzetta Expires July 22, 2000 [Page 21]
Internet-Draft Blocks eXtensible eXchange Service January 2000
References
[1] Rose, M.T. and C. Malamud, "Blocks: Architectural Precepts",
Draft Memo, January 2000.
[2] Rose, M.T., "The Blocks Simple Exchange Profile", Draft Memo,
January 2000.
[3] World Wide Web Consortium, "Extensible Markup Language (XML)
1.0", W3C XML, February 1998,
.
[4] Berners-Lee, T., Fielding, R.T. and L. Masinter, "Uniform
Resource Identifiers (URI): Generic Syntax", RFC 2396, August
1998.
[5] Crocker, D., "Standard for the format of ARPA Internet text
messages", RFC 822, STD 11, Aug 1982.
[6] Rose, M.T., "The Blocks eXtensible eXchange Protocol", Draft
Memo, January 2000.
[7] Gazzetta, M.R., "SpaceScript 2.0", Draft Memo, January 2000.
[8] Ousterhout, J., "Tcl and the Tk Toolkit", ISBN 020163337X, May
1994, .
[9] mailto:blocks-request@invisible.net
[10] http://mappa.mundi.net/
[11] mailto:banana@invisible.net
[12] mailto:top-banana@invisible.net
[13] http://xml.resource.org/
[14] http://xml.resource.org/doc/edgar/
Rose & Gazzetta Expires July 22, 2000 [Page 22]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Authors' Addresses
Marshall T. Rose
Invisible Worlds, Inc.
1179 North McDowell Boulevard
Petaluma, CA 94954-6559
US
Phone: +1 707 789 3700
EMail: mrose@invisible.net
URI: http://invisible.net/
Marco R. Gazzetta
Invisible Worlds, Inc.
1179 North McDowell Boulevard
Petaluma, CA 94954-6559
US
Phone: +1 707 789 3700
EMail: marcog@invisible.net
URI: http://invisible.net/
Rose & Gazzetta Expires July 22, 2000 [Page 23]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Appendix A. The RFC space DTD
Rose & Gazzetta Expires July 22, 2000 [Page 24]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Rose & Gazzetta Expires July 22, 2000 [Page 25]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Rose & Gazzetta Expires July 22, 2000 [Page 26]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Appendix B. Reference Blocks Structure Specification
Each element of the blocks array is a list. The first item of the
list is the name of the element. The second item of the list are any
attributes (represented as a serialized array). The remaining items,
three through N, of the list are the element's children. Each child
is stored in the same list format. If the element contains text,
then it has exactly one child and the name of that child is
".pcdata".
For example:
some text
is represented as:
{ outer { name1 value1 name2 value2 }
{ middle {} {.pcdata {} "some text"} }
{ middle {} {inner {} } } }
Later versions of the builder store the blocks data in separate
form. To gain access to it, evaluate and publish scripts have to use
a set of API functions called BuilderAPI. This approach provides a
powerful way of separating data storage from data usage and allows
the retrieve step to be fully independent of the subsequent evaluate
and publish steps.
Rose & Gazzetta Expires July 22, 2000 [Page 27]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Appendix C. The BANANA DTD
Rose & Gazzetta Expires July 22, 2000 [Page 28]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Rose & Gazzetta Expires July 22, 2000 [Page 29]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Rose & Gazzetta Expires July 22, 2000 [Page 30]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Appendix D. An Example of a Delegation Request
Invisible Worlds, Inc.
1179 North MacDowell Boulevard
Petaluma
CA
94954-6559
US
+1 707 789 3700
+1 707 389 3710
carl@invisible.net
http://invisible.net/
EDGARspace consists of a structured set of metadata extracted from
the flow of filings to the U.S. Securities and Exchange Commission.
Raw filings are converted to XML, metadata for the space is extracted
from the underlying XML file, from lookup tables (e.g., CIK to ticker
and home page mapping), through derived remote pointers, and through
calculations on other metadata sets. The collections are maintained
by Invisible Worlds.
Rose & Gazzetta Expires July 22, 2000 [Page 31]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Block names in doc.edgar are based on accession numbers, a unique
identification for each underlying document in the SEC filing stream
which is created through a combination of the CIK identifier for
the filer, the date, and a sequence number.
For an SEC accession number of 0000950123-99-000456, this is
transformed into a Block name by flipping the position of the date
and making it Y2K compliant, adding the CIK of the filer stripped of
leading zeros, and then adding the sequence number stripped of
leading zeros to get:
doc.edgar.1999.950123.456
Rose & Gazzetta Expires July 22, 2000 [Page 32]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Full Copyright Statement
Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph
are included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Invisible Worlds expressly disclaims any and all warranties
regarding this contribution including any warranty that (a) this
contribution does not violate the rights of others, (b) the owners,
if any, of other rights in this contribution have been informed of
the rights and permissions granted to IETF herein, and (c) any
required authorizations from such owners have been obtained. This
document and the information contained herein is provided on an "AS
IS" basis and INVISIBLE WORLDS DISCLAIMS ALL WARRANTIES, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE
OFTHE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT WILL INVISIBLE WORLDS BE LIABLE TO ANY OTHER PARTY
INCLUDING THE IETF AND ITS MEMBERS FOR THE COST OF PROCURING
SUBSTITUTE GOODS OR SERVICES, LOST PROFITS, LOSS OF USE, LOSS OF
DATA, OR ANY INCIDENTAL, CONSEQUENTIAL, INDIRECT, OR SPECIAL DAMAGES
WHETHER UNDER CONTRACT, TORT, WARRANTY, OR OTHERWISE, ARISING IN ANY
WAY OUT OF THIS OR ANY OTHER AGREEMENT RELATING TO THIS DOCUMENT,
WHETHER OR NOT SUCH PARTY HAD ADVANCE NOTICE OF THE POSSIBILITY OF
SUCH DAMAGES.
Rose & Gazzetta Expires July 22, 2000 [Page 33]
Internet-Draft Blocks eXtensible eXchange Service January 2000
Acknowledgement
Funding for the RFC editor function is currently provided by the
Internet Society.
Rose & Gazzetta Expires July 22, 2000 [Page 34]