DMA Architecture Proposal for

Compound/Structured Documents (CSDocs) Foundation

CSDocs is a set of proposed extensions to DMA 1.0 to support compound/structured documents.

The CSDocs Foundation is the fundamental framework for all further compound-structured document extensions.  It establishes the basic model of DMA compound-structured documents.  It introduces the fundamental elements by which DMA documents are organized in interdependent compound structures. 

This is a draft of in-progress work.  For access to the latest version and related information, visit http://www.infonuovo.com/dma/csdocs/sketch.


Authors:

DMA Technical Committee Compound Structured Document Subcommittee.  Dennis E. Hamilton, editor.

Revision History:

This is Version 0.03 of 2003-03-03

Content

1. Functional Overview/Description

1.1 Purpose

1.2 Approach

1.3 Model Overview

1.3.1 CSRelationship

1.3.2 CSRoot Renditions

1.3.3 Identifying Specific Elements in a CSRelationship

2. Glossary/Nomenclature

3. New/Changed Classes and Properties

3.1 DMA Class Changes

3.1.1 Instance Id Introduction

3.1.2 Instance Id Definition

3.2 DocVersion Changes

3.2.1 New DocVersion Properties

3.2.2 CSRoots Usage

3.2.3 CSComponents Usage

3.2.4 CSRoot Style Usage

3.3 New CSRelationship Class

3.3.1 Restricted Relationship Properties

3.3.2 New CSRelationship Properties

3.3.3 Head Rendition Id Usage

3.3.4 Head Content Element Id Usage

3.3.5 Tail Rendition Id Usage

3.3.6 Tail Content Element Id Usage

4. New/Changed Interfaces

5. New/Changed Types, Values, and Macros

6. Architectural Impacts

6.1 Integration Model

6.2 Query

6.2.1 Implementation Considerations for Query of CSDocs

6.2.2 Interoperability Considerations for Query of CSDocs

6.3 Internationalization/Localization

6.4 Content

6.4.1 Usage Considerations for CSDocs Content

6.4.2 CSDocs Content Interoperability and Safety

6.5 Containment

6.6 Versioning

6.6.1 Using Versioning with CSDocs

6.6.2 CSDocs Versioning Interoperability and Safety Considerations

6.7 Security

6.8 Naming

6.9 Locking and Transactions

6.9.1 Lock Usage Considerations for CSDocs Structures

6.9.2 Lock Implementation Considerations for CSDocs Structures

6.9.3 Interoperability of Locking for CSDocs Structures

7. Compliance & Conformance Issues

8. Sample Usage

9. What Requirements Does This Address?

10. Why Is This a Good Solution?

11. Extant Systems with Similar Features and Related Experiences

12. Impact on Existing Systems

13. Backwards Compatibility

14. Performance Impact

15. Failure Modes/Crash Recovery

16. How Is This Incorporated into the Specification?

17. How Is This Incorporated into the Code and Library Configurations?

18. Reference Materials

18.1 Normative Specifications

18.2 Informative References

18.3 Background Materials

1.3.1.1 Interoperability Considerations

The CSDocs subcommittee, in order to reconcile seemingly-incompatible proposals, adopted a set of technical requirements that were used to focus the movement toward an agreed solution.  The following table identifies the adopted technical requirements and the level of satisfaction provided by the CSDocs Foundation.

Note: There are gaps in the numbering for adopted requirements because not all originally-proposed technical requirements were adopted by the CSDocs subcommittee.

#

Adopted Requirement

Satisfaction by CSDocs Foundation

1 If documents are versionable, compound documents are versionable
  1. The CSDocs Foundation employs DMA DocVersions for all CSRoot and CSComponent objects.  
  2. The DocVersion subclasses that can be parts of CSDocs structures can be independently versionable or not as appropriate to the application and implementation. 
  3. CSDocs Foundation places no limitations on how versioning is applied or specialized for these DocVersion subclasses.
  4. The CSRelationship objects used to stitch together CSDocs structures are not versionable objects, and this is seen as appropriate to CSDocs structures, just as for Containment Relationships.
2 If documents are containable, compound documents are containable.
  1. The CSDocs Foundation employs DMA DocVersions for all CSRoot and CSComponent objects.
  2. The DocVersion subclasses that can be parts of CSDocs structures can be independently containable or not as appropriate to the application and implementation..
  3. CSDocs Foundation places no limitations on how containment is applied or specialized with regard to these DocVersion subclasses.
  4. The CSRelationship objects used to stitch together CSDocs structures are not containable objects, and this is seen as appropriate to CSDocs structures, just as for Containment Relationships and Versioning.
3 Compound documents are searchable together with other documents.
  1. Any class used in CSDocs structures, including dependently-persistent classes that provide internal elements such as renditions and content elements, are eligible to be in a Scope object dmaProp_SearchableClassDescriptions list and have properties that can be employed in a query.
  2. The addition of dmaProp_InstanceId properties enhances the ability to formulate joins on the structure of compound documents and to identify specific elements in query results (i.e., by having dmaProp_InstanceId be a searchable property, usable in joins, and selectable in results)
  3. The CSDocs Foundation takes no position on how content-based search resolves or differentiates content terms found in a CSComponent and content terms attributed to the CSRoot or an overall rendition.
4 Component documents of a specified compound documents can be found.
  1. The CSComponents of an individual CSRoot can be located by navigation.
  2. The CSRelationships involving particular CSRoots can be selected by query, given an appropriate set of features in the DocSpace scope.
  3. Navigation can be extended through levels of CSComponents as appropriate to the application of the CSDocs structure. 
  4. The current query model has no predefined operations for arbitrary extension through multiple relationship levels.
4’ The condition for finding first level component documents of a specified compound document can be specified in a query. This is a special case of the provisions that are available in satisfaction of requirement #4.  This requirement is fully satisfiable by an implementation of the model, using DMA 1.0 query functionality.
5 Compound documents that contain a specified component document can be found. This is a symmetrical case to that for requirement #4, and it is satisfied to the same degree by the CSDocs Foundation:
  1. The CSRoots of an individual CSComponent can be located by navigation.
  2. The CSRelationships involving particular CSComponents can be selected by query, given an appropriate set of features in the DocSpace scope.
  3. Navigation can be extended through levels of CSRoots as appropriate to the application of the CSDocs structure.
  4. The current query model has no predefined operations for arbitrary extension through multiple relationship levels.
5’ The condition for finding compound documents that contain a specified first level component document can be specified in a query. This is a special case of the provisions that are available in satisfaction of requirement #5.  This requirement is fully satisfiable by an implementation of the model, using DMA 1.0 query functionality.
6 Any document including a compound document may be a component of compound documents.
  1. There is no CSDocs Foundation limitation on the DMA DocVersions that may be CSComponents. 
  2. Documents that are CSRoots (i.e., have non-empty dmaProp_CSComponents enumerations) are permitted to be CSComponents in the CSDocs Foundation.
  3. Any limitations on these cases are introduced by applications and specific implementations.
8 The root document of a compound document may have its own renditions and content elements.
  1. In the CSDocs Foundation, a CSRoot is an ordinary document and it is expected (though not required) to have renditions and content elements..
  2. The CSDocs Foundation dmaProp_CSRootStyle property is used to disambiguate whether the renditions and content elements of a CSRoot are those of a single "node" of the compound-structured document, of the overall compound-structured information, or some other case introduced by the application or implementation.
9 The order of components can be specified.
  1. CSRelationship objects that extend to the same DocVersions can be ordered in how they are enumerated from CSRoots and CSComponents properties using the relationship IdmaRelationshipOrdering interface, if supported by the application and implementation.
  2. This capability is strengthened when the additional properties of the Stable Cursor proposal are also implemented [StableCursor].
  3. Implementation is at the option of the Document Space.  The CSDocs Foundation simply falls under the existing DMA 1.0 options.
10 If content-based search is available, the compound documents whose components contain search terms can be searched.
  1. Any DocVersion that is part of a CSDocs structure is eligible to be indexed and accessed under the existing CBSearch proposals.  That automatically includes DocVersions that are part of CSDocs structures [CBSearch].
  2. The current CBSearch proposals determine satisfaction of content conditions at the DocVersion level and no difference is proposed as part of the CSDocs Foundation.
  3. The CSDocs Foundation does not address any concerns specific to content-based search.   In particular, it is silent about controlling which elements of what components might be indexed and on how to differentiate content that arises as a consequence of compounding/structuring versus being given by a direct element having those terms.
11 A component may be a specific version of a document, the latest version of a document, the latest released version of a document, the latest version in a specific version series, and so on.
  1. The CSDocs Foundation does not introduce anything additional to the DMA 1.0 Version model. 
  2. Under DMA 1.0 and CSDocs Foundation, CSComponents are always specific DocVersions.
  3. CSDocs Foundation introduces no support for special flavors of components, such as ones that automatically select the latest version of a VersionSeries or other qualified Versionable object in a Configuration of versions.
12 Compound document unaware clients can access the contents of components.
  1. CSComponent DocVersions, and their information, can be found and used by CSDocs unaware clients as if they are ordinary documents.
  2. When the content of CSRoot DocVersions having complete renditions, if any, is accessed, a CSDocs unaware client can access the renditions and content elements without having to be aware that any of the material is a consequence of a CSDocs structure.
13 A URL can be used to access a specific content element (just as a URL can now be used in DMA to access a DocVer).
  1. CSDocs Foundation does not introduce any URL for use in accessing DMA material of any kind via a Web browser or one of the standard URL protocols (HTTP, FTP, etc.).   
  2. CSDocs Foundation, through the introduction of dmaProp_InstanceId, provides a basis for creating unambiguous URL's for DocVersions and internal elements, but no mechanisms or practices are specified in CSDocs Foundation.
14 Anything we propose should be additive to DMA 1.0. The proposal must not remove any existing DMA features. This requirement is entirely satisfied by CSDocs Foundation.
15 A compound document should appear as an ordinary document to a compound-document-unaware application.
  1. This is only true in the sense that the constituents of CSDocs structures are DMA DocVersions and they are usable as DocVersions so long as there are no assumptions placed on the CSDocs Foundation properties that will be present.
  2. A CSComponent that is not a CSRoot will generally appear most like an ordinary DocVersion.
  3. A CSRoot will be more problematic, although a CSRoot that shows no renditions or has complete renditions will be usable as if the compound document were present as a single DocVersion
  4. Because of possible requirements for consistency among a CSRoot and its CSComponents, it is generally unsafe for a CSDocs-unaware client (or any other client) to make arbitrary modifications to them as if independent DocVersions.  The CSDocs Foundation provides no mechanisms for this, although safe practices are discussed (section 13, Backwards Compatibility).
16 Individual content elements must be sharable among an arbitrary number of documents.
  1. CSDocs Foundation allows for a CSComponent DocVer being a component of any number of CSDocs structures and being connected to any number of CSRoot DocVersions, possibly in multiple ways.
  2. CSDocs Foundation permits a CSComponent to be specified down to an individual content element, and that element may be specified as the head element for any number of CSRelationships.
  3. CSDocs Foundation is silent about how content of one CSDocs DocVersion is literally derived or shared from another CSDocs DocVersion, or whether there is or is not such a mechanism available.
  4. A separate proposal has been offered for realizing the sharing of elements as content elements of other documents [VCE].
18 From a compound document you must be able to navigate to all its components. The dmaProp_CSComponents enumeration provides exactly this capability, from one CSRoot level down to the immediate Components level.
19 From a component you must be able to navigate to all the compound documents in which it participates. The dmaProp_CSRoots enumeration provides exactly this capability, from one CSComponent level to the immediately superior CSRoots that employ this CSComponent.
20 A compound document must allow components of different formats (component types). CSDocs Foundation does not restrict the nature of CSComponent DocVersions.  They may have different kinds of renditions, multiple renditions, and a variety of content elements for those renditions, as determined by the application and the implementation.
21 Components of compound documents may be versioned without having to make a new version of the 'parent' compound document. This requirement is not addressed by CSDocs Foundation.  No changes to the existing relationship model nor the existing versioning model have been made to allow anything beyond standard DMA 1.0 behavior:
  1. A CSComponent can be versioned without concern for its being a CSComponent.   However, any checked out working copy of a CSComponent will not be a CSComponent of any CSDocs structure. 
  2. It will also not be a CSRoot of any CSDocs structure using existing DMA 1.0 relationship and versioning support.
22 Queries that restrict searches to first level components of a single compound document must be possible. This requirement appear to be satisfied by the provisions that satisfy requirement #4'.
23 In-place addition and deletion of components of an existing non-versioned compound document must be possible. CSDocs Foundation does not limit the use of already-available provisions for creating and removing relationships, and editing of renditions and content elements, within CSDocs structures.  Whether requirements for consistency of the resulting structure are enforced is a function of the application and implementation.  See section 13, Backwards Compatibility and section 15, Failure Modes/Crash Recovery, for more considerations that may be relevant to practical allowance for this requirement.
24 The proposal will include a set of compound document capabilities for addition to the doc space dmaProp_Capabilities. CSDocs Foundation identifies a single optional capability, DMAC_CSD_FOUNDATION, that is reserved for identifying foundation support whenever the dmaProp_DocSpaceCapabilities list definition is versioned in the future.   (See section 5, New/Changed Types, Values and Macros.)
26 Any DocVer can become a root DocVer on its next revision, or by update-in-place. CSDocs Foundation imposes no limitation in this area.. 
  1. The creation of revisions that are CSRoots whether or not the previous revision was is a matter of application, implementation, and versioning policy.  CSDocs neither adds nor detracts from that variety of possible support.
  2. The in-place creation of a CSRoot from a DocVersion that has an empty CSComponents enumeration is permissible under the general capabilities of DMA, as described in the response to requirement #23.
30 Any DocVer that is a root DocVer can become a non-root DocVer on its next revision or by update-in-place CSDocs Foundation introduces no limitation in this area.  The response to requirement #26 applies fully to this case:
  1. The creation of DocVersions revisions that are CSComponents whether or not the previous revision was is a matter of application, implementation, and versioning policy.   CSDocs neither adds nor detracts from that variety of possible support.
  2. The in-place removal of all CSComponents from a CSRoot (by deletion or modification of the relevant CSRelationship objects) is permissible under the general capabilities of DMA, as described in the response to requirement #23.

DMA requesters designed for operation with CSDocs structures can access and navigate a CSDocs organization more successfully:

In this CSDocs Foundation specification, some practices are suggested for safeguarding against damage to CSDocs structures by DMA 1.0 requesters and CSDocs requesters designed around different interpretations of the CSDocs structures. (See, for example, section 1.3.1.1, Interoperability Considerations and section 6.9.3 Interoperability of Locking for CSDocs Structures.)