GROVE - "Graph Representation of Property Values." On the term: "Why it is called a grove? 'Grove' is one of those historical things that just exists in the terminology. You just have to live with it. It was hatched in the middle of a discussion in a standards meeting (July 1985, Trinity College Dublin, if I remember rightly), as a way of discussing a collection of trees. The formal definition ('Graph Representation Of property ValuEs', http://www.ornl.gov/sgml/wg8/docs/n1920/html/clause-3.html , Clause 3.36) is something thought up afterwards, like the many explanations of CALS." [James David Mason, DSSSList, July 21, 1999] See the reconstructed etiology. In HyTime ISO/IEC 10744:1997 "3. Definitions (3.35)": graph representation of property values is 'An abstract data structure consisting of a directed graph of nodes in which each node may be connected to other nodes by labeled arcs.'
Links to formal specifications for "groves"; descriptions and explanations of "groves":
- The relevant formal specifications: ISO/IEC 10744:1997 Annex A.4, "Property Set Definition Requirements (PSDR)" and Annex A.3, "Architectural Form Definition Requirements". But look elsewhere for introduction and tutorial.
- An extract from the DSSSL standard [backup]
- [November 04, 1998] "Introduction to Groves and Property Sets." By Paul Prescod. Alternate title: "Addressing the Enterprise: Why the Web needs Groves." 'July, 1997', updated July 1999 or later. An introduction to the grove paradigm [which] serves several purposes: 1) will become part of the documentation for grove-based software such as pygrove and Jade/DSSSL; 2) intended to clarify in people's minds what the result of parsing an SGML or XML document should look like; 3) Groves were invented to solve the problems that had become revealed at a particular point in the development of the SGML family of standards - XML has reached the same point so the time is right to popularize the grove idea. [local archive copy]
- [August 15, 2002] grove4j. "grove4j is a Java API for the grove data model and related processing framework." Jack Park wrote 2002-08-15: "Just in case Groves make a return, and I think they will, Graham Moore has started a Java implementation ... soon, I think, Graham will have the interface APIs in CVS in order to begin the development. At the same time, I think Eric Freese and others may be bringing up a Python open source Grove engine... All of this got catalyzed by Steven Newcomb's talk at Extreme Markup..."
- [February 10, 2000] XML-DEV Excerpts: Eliot Kimber and Others on "The Power of Groves".
- [April 19, 2000] "Groves Explained." By Fabio Arciniegas A. From XML.com. (April 19, 2000). ["Every so often somebody on an XML mailing list will tell you that groves are the answer to all your problems. But what exactly are they? Unfortunately, there are few resources that clearly explain what groves are, and why they might be usefully applied to XML. Fabio Arciniegas A. presents an introduction to groves and their use; he presents a simple explanation of groves, and why he thinks they deserve more widespread attention in the XML world.'] "Despite valiant efforts from certain quarters of the XML world to promote the idea of groves, they are still perceived in the mainstream as being a complicated, obscure concept. This article tries to clear up some of the mystery surrounding groves by providing a clear exposition of their underlying concepts. The main aim of this article is to show what groves are, though it includes a brief argument as to why we should care about them. Groves are sets of nodes and properties that represent some logical resource -- say an MP3 song or a plain text file. The possible groves that may result from the parsing of a resource are determined by a set of rules called a property set. The process of creating a grove starts with a notation processor. A notation processor is a piece of software that can read (and make sense of) resources in a given source notation (say, MP3). A notation processor reads data in the source notation and creates a grove to represent it. The type of output a notation processor can offer is determined by a property set. A property set defines the classes and properties that will be used to represent the original data (as a grove). A notation processor reads the source notation, identifies the classes and properties specified in the property set, and produces a graph of nodes, called a grove. This process is called the grove construction process. Additionally, we may not want all possible nodes returned. In order to say which nodes we want to include in the output (and which to ignore) we define a grove plan. You can think of a grove plan as a filter for the grove output of a given processor..."
- "Groves Basics: HyTime Annex A.4 Annotations/Presentation," by Fabio Arciniegas A. (March 2000).
- Archive copy of Grove Guide 1.1 in HTML format, by R. Alexander Milowski ([then] Copernican Solutions Incorporated). March 1997. Originally at: Grove Guide 1.1
- [September 08, 1999] Steven R. Newcomb on the Grove Paradigm (1999-09-08)
- [November 04, 1998] Standard Generalized Markup Language (SGML) Property Set - From TechnoTeacher, using the PropGrinder[tm] technology. Defines the classes and properties to be used in the construction of groves from the parsing of SGML documents. Where: 'ESIS corresponds roughly to the combination of baseabs (base abstract), prlgabs0, and instabs (instance abstract).
- ESIS - Standard Generalized Markup Language (SGML) Property Set (relevant modules), from Peter Newcomb: http://www.techno.com/~peter/sgml-esis/
- The SGML property set as published in HyTime Second Edition; replaces the property set published originally in the DSSSL standard. HTML linked version
- Hypermedia/Time-based Structuring Language (HyTime) Property Set Produced using TechnoTeacher's PropGrinder technology. Various other 'Property Set Definition Documents' are available from the HyTime Users Group web site, including the Complete Property Set Package [archive copy], SGML Property Set [archive copy]
- Picture of part of the grove which a conformant SGML parser would produce (viz., a processor conformant to to the DSSSL specification/forthcoming HyTime corrigendum). From Henry S. Thompson, Human Communication Research Centre, University of Edinburgh. [mirror copy]
- "Property Sets and Groves", by W. Eliot Kimber. An Excerpt from Practical Hypermedia: An Introduction to HyTime: "Property Sets and Groves". Also presented at HyTime '96, Seattle, WA, August 20 and 21, 1996. [mirror copy text only (the graphics are quite important, however)]
- [June 23, 1998] PHyLIS: Personal HyTime Link Information System. "The PHyLIS system is a demonstration HyTime engine that provides a generalized grove-based hyperlink and location address management system. By taking advantage of componetized software techniques (e.g., ActiveX), it enables the easy integration of support for interactive hyperlinking among data objects of any types, not just SGML or XML documents. . . [includes several services and also ] a) A general grove node interface by which data sources such as databases and document repositories can be easily integrated with PHyLIS; b) A general grove constructor interface by which grove constructors for any kind of data can be integrated with PHyLIS; c) A general grove renderer interface by which viewers for groves of any sort can be integrated with PHyLIS." See the full announcement, June 22, 1998.
[August 15, 2000] Jonathan Borden (The Open Healthcare Group) has announced the availability of a short working description of an 'XSet' XML EBNF property set description. Background: "ISO Groves and Property Sets are a formal mechanism to unify the addressing schemes of HyTime and DSSSL. Groves allow addressing and linking into multimedia formats which have defined Property Sets: essentially a 'grand unified theory' of addressing. In practice, EBNF grammars are widely used to specify formats including XML, MIME, URIs etc. The XSet production language is proposed as an alternative to ISO Groves to enable grove based processing of formats defined in EBNF." Description: "XSet is an XML property set description of XML 1.0 and XML namespaces. The description is a result of translating the Extended Backus-Naur Form (EBNF) productions into an XML language: the production rule langage (PRL). XSet xml.xml is an RDF description of the productions in XML 1.0 and XML Namespaces. RDF is used to provide metadata about the production set, including that it is 'about' XML 1.0 and 'about' XML Namespaces. RDF adds very little overhead to the property set which is itself a compact description. XSet enables XPath based indexing and addressing of the full fidelity grove of an XML document. Bonsai is a pruning and compression diagram which maps the full XSet specification onto a subset or grove plan. Examples of XSet bonsai are (1) the XML Infoset, (2) the XPath data model, (3) the DOM data model, (4) Common XML and (5) Eric van der Vlist's technique of exposing entities through the SAX model." Jonathan also writes: "On the topic of using XSLT to transform RDF<->Infoset, Dan Conolly has posted links to a couple of nice XSLTs at http://lists.w3.org/Archives/Public/www-rdf-interest/2000Aug/0061.html. . . Eric van der Vlist and I have been having an offline discussion about the similarities between his technique of using a special SAX parser to 'expand' entity declarations into 'Common XML' content. The advantage of this approach is that XPath and XSLT can be used to process the resultant abstract document (which in his example preserves the entity reference). This is very similar to the approach of XSet which logically 'expands' an XML document into a full-fidelity grove. . . A goal is to provide an XSet 'bonsai' or pruning, twisting and compression document which directs the processor as to what level of detail to provide. For example: should it generate 'element' events alone, or add STag, ETag and EmptyElementTag events. XMTP [http://www.openhealth.org/documents/xmtp.htm] is an XSet expansion of a MIME document. In the same way that an XSet expansion of an XML document can be produced by a modified SAX parser, an XMTP expansion of a MIME message can be produced by a MIME parser which emits SAX events. This technique provides a general mechanism for XPath/XPointer addressing of, and XSLT transformation of arbitrary syntaxes expressable in EBNF. This is the essence of the grove paradigm." Dan Connolly's work was presented under the title "XML in RDF in XML via XSLT: An infoset implementation." One stylesheet 'content.xsl' "takes piece of XML content (i.e., stuff matching the content production, like you might find inside a parseType="literal" element in RDF) and represents it in RDF, per the schema in the infoset specification." Connolly will integrated this with the stylesheet rdfp.xsl (RDF parser in XSLT); "This highlights some of the differences between the infoset data model and the XPath data model, since I'm using XPath to destructure the input. I think it also clarifies some stuff about how [the attribute] xml:lang fits into the RDF model, and about how XML Schema datatypes (and structured types, for that matter) fit with RDF..."
- "Groves For Applications." By Graham Moore. "This paper considers the existing use of groves and suggests that there is a missing application of this technology. The missing class is concerned with representing applications, programs with functional intent, and the states within applications as grove models. This paper presents the problems and requirements for representing applications as groves and what it means to link to a node in a grove."
- "How Five Industries Will Benefit from the Grove Paradigm." By Steven R. Newcomb.
- Property Sets - Steven R. Newcomb as Advocate and (Techno)Teacher
- Groves - Explained by Eliot Kimber (August 30, 1996)
- Groves - Explained (Again) by Eliot Kimber, an easier-to-understand version (March 1997)
- Groves - Explained by Derek Denny-Brown (August 30, 1996)
- [April 19, 1998] "The Purpose of Groves." Posting from Steve Newcomb to CTS, April 1998.
- Groves - Explained briefly by Charles Goldfarb
- [October 13, 1998] "An ISO/IEC 10744:1997-conforming Property Set for the Draft XLL Hyperlinking Architecture," by Masatomo Goto (Fujitsu Labs). A property set for XLink "developed order to build the XLink engine he demonstrated at SGML Europe '98." See "Schloss/Newcomb Correspondence on Metadata." ISO/IEC JTC 1/SC34 N1998, from the Metadata Workshop, Paris. June 29, 1998. [local archive copy]
- [May 06, 1998] "PHyLIS: Personal HyTime Link Information System." Author: W. Eliot Kimber, eliot@isogen.com. Status: Version 0.1. Platform: Windows95+ or NT4+. Last update: 5 May 1998. A "toy grove manager called "PHyLIS" (Personal HyTime Linking Information System). . . With it you could test property sets for non-SGML data types and grove constructors for them. . . [currently 980506] 'a toy for demonstration purposes." "The PHyLIS system is a demonstration HyTime engine that provides a generalized grove-based hyperlink and location address management system. It is a HyTime application conforming to International Standard ISO/IEC 10744 Hypermedia/Time-based Structuring Language (HyTime). See the DSSSList description. [local archive copy, text/description only]
- [September 11, 1998] "Xlink and Groves" (alias, "Grove-based XLink Implementations") delivered at the XML Developers' Conference, August 20-21, 1998. Kimber gave a demonstration of PHyLIS, Personal HyTime Link Information System, [which is] an attempt to implement the HyTime standard using componentized software techniques (ActiveX). PHyLIS uses a literal grove-based approach and demonstrates the ability to apply XLink, SGML architecture (AFDR), and HyTime processing to XML documents in a completely standards-based environment. PHyLIS is designed to be an open integration platform that is infinitely extensible." Presentation slides for "Grove-based XLink Implementations" are available online. See www.phylis.com for details, including source code.
- [March 04, 1998] Note from Eliot Kimber to the effect that ISOGEN International Corp. "is funding the extension of Jade's grove constructor to include thesenodes. Once that extension is complete, you'll be able to get to everything you want [e.g., the DTD-related nodes in its grove, which the current Jade engine does not include] using direct grove navigation (node-property, process-node-list, etc).
- [November 03, 1997] Announcement from Eliot Kimber (ISOGEN) for a new tool named "GroveView SGML Document Grove Viewer." Eliot says it "provides an easy-to-use view of SGML document groves [and] might be useful to people creating advanced DSSSL specs or for people trying to better understand groves and the SGML property set." The viewer generates "an interactive tree view of an SGML document grove as created by the SP parser and SGML document grove constructor. The application is an experiment in the use of the groveoa.dll (part of the Jade package from James Clark. It provides an easy-to-use view of SGML document groves...the binaries run under Windows95 or Windows NT 4.0."
- DSSSL ISO/IEC 10179:1996 property definitions (by Arjan Loeffen); [mirror copy]
- James Tauber's notes on groves [December 1996, updated 1997-6-22 or later]
- Groves as trees or graphs. . .part of the XML discussion
- Groves, grove plans, and the "canonical grove representation (CGR)" (in HyTime 2ed)- posting by Eliot Kimber [September 13, 1997]
- Property Set Definition Document Type. - DTD for property sets from clause A.2, Property Set Definition Requirements of ISO/IEC 10744:1997.
- [April 1997] A contribution on "Node properties in Jade," from David Megginson. The overview: "It is important to understand the implications of James's inclusion of the 'node-property' primitive in Jade 0.7 -- we now have direct, low-level access to the grove built from the parse SGML document, and can easily navigate from the root down to each leaf, and back again. . .[I have created] a web page to help [me] understand which classes and properties were supported by the current version of Jade, including the INTRBASE properties that are not part of the SGML grove plan proper." See: "Node Properties in Jade"; [archive copy]; [URL was: "Node Properties in Jade"
- "Managing SGML Architectures and Object Models with Groves." By W. Eliot Kimber (Isogen).
- Announcement from James Clark for a Grove-based SP OLE Automation interface. This interface "provides access to the grove (tree) of an SGML document from Visual Basic or any other language that supports OLE Automation (such as Perl for Win32, or Microsoft's version of Java) . . . binaries only [dlls], source later." The interface supports the following modules from the SGML property set: baseabs, prlgabs0, instabs, basesds0,instsds0, [and] subdcabs.
- [April 19, 1998] CSS Property Set See: R. O'Connor's site. [local archive copy]
- From Russell O'Connor: ps2java. ". . .a series of DSSSL style sheets that create a series of Java interfaces and classes from a property set. ps2java uses (abuses?) Jade's SGML backend to create a list of classes which is split into a series of individual files using an Java program included called Split.
- [November 25, 1997] Announcement for a GC-enabled spgrove application, from Vladimir V. Tsychevski
- Using OLE and SP to process SGML... ["Processing SGML Groves in Python"], by Paul Prescod
- GroveMinder from TechnoTeacher - "The GroveMinder System is an SGML standards-based document management system, capable of locating information in virtually any notation or representation." See the semi-technical or technical presentations.
- "How to use the Grove OLE Automation Class in Visual Basic 5.0." By Larry Robertson. Part of the SP Wizard Documentation
- SP Wizard: Advertised functionality: ". . . a freeware 32 or 16 bit Windows interface using OLE Automation wrappers around NSGMLS and SPAM..." See the database section on Graphical Front Ends for SP, and the announcement from Larry Robertson for "a web page with a sample program and some notes on the Grove OLE Automation class. . ."
- Dave Peterson, "Objects, Classes, Trees, and Groves." <TAG>: The SGML Newsletter 10/8 (August 1997) 9 - 10. See the article's bibliographic entry.
- "Trees, Groves, and SGML." By Dave Peterson. <TAG>: The SGML Newsletter 8/12 (December 1995) 11-12. As of 1998-10-01, the article was available online, from Architag.
- Broken Links to fix:
- Groves - in the DSSSL Standard: http://occam.sjf.novell.com:8080/dsssl/dsssl96/8659
- [January 15, 1998] Announcement from R. Alexander Milowski (Copernican Solutions Incorporated for the public availability of an "Interactive Grove Guide," accessible via the Copernican Solutions Incorporated web site at http://www.copsol.com/sgmlimpl/standards/. "This is a new version of the Grove Guide that is far more complete and has been updated with the SGML property set as defined in the latest HyTime standard. It is also an example of a dynamic down-translation server program written completely in Java (no Scheme!) and it uses the DAE Server and DAE SDK. . . I developed it so I could read and research the SGML property set for DSSSL development. Subsequent to that, it became a nice demo of the DAE SDK and DAE Server."
- Announcement for an online document called a Grove Guide, produced by R. Alexander Milowski of Copernican Solutions, using the SEng/DSSSL environment. "This document lists each class and the properties defined for that class by grove plan module. This is, essentially, the reverse of what is in the DSSSL standard as the 'SGML Property Set'. The document also has some basic linking constructs for navigation of grove plan modules." The document is currently [January 24, 1997] in SGML format, readable using Panorana Free; later it will be produced in HTML format. The Grove Guide may be accessed from the COPSOL page "SGML Implementors: Standards". HTML version: see below.
- JSPI Toolkit from Copernican Solutions - "The JSPI (Java SGML Parsing Interface) Toolkit is an implementation of the DSSSL Developer's Toolkit's grove interface for parsing SGML documents and producing groves with the Java programming language."