ANN: XML and Databases article

Ronald Bourret rbourret at ito.tu-darmstadt.de
Wed Sep 8 17:32:07 BST 1999


Steven R. Newcomb wrote:

> I learned some interesting things from this article, for which I'm
> grateful.  Recommended reading!

Thanks!

> I was disappointed that the grove paradigm
> (http://www.prescod.net/groves/shorttut/) was never mentioned, nor was
> GroveMinder (http://www.techno.com).  The grove paradigm offers an
> ISO-defined meta-DOM to all notations, including XML.

I've read Paul's tutorial and the GroveMinder summary on the Web, so let's 
see if I've got this straight.  A grove is basically a property set, broken 
down into classes, each of which has properties. There are probably 
relationships between those classes. For example, a grove for XML could 
have classes for elements, attributes, entities, and so on, where the 
element class points to the attribute class. A grove for a relational 
database would have classes for tables, columns, etc., where the table 
class points to the column class.

(In this sense, the XML information set has much in common with groves, as 
it is a property set. Similarly, the DOM could be viewed as an API for a 
grove.  The XML information set is not a grove because [why? The only 
reason I can think of is that it is not been expressed in grove notation]. 
The DOM is not an API for a grove because it's a bit wishy-washy in places 
-- for example, four characters of PCDATA could be one node or four, so 
it's not built on a rigid enough data model.)

The nice thing about groves is that all groves, regardless of what they are 
built on, have certain commonalities, such as addressability, so you can 
perform certain common functions with them.

GroveMinder is generic grove middleware. It has plug-ins, called Minders (I 
think of them as drivers), that can build groves over different property 
sets. For example, there is one Minder for SGML/XML documents and a 
different Minder for relational databases. (There can actually be different 
property sets for a "type" of data. For example, one property set for XML 
might include entities and another might not, specifying that each entity 
is replaced by its value. A different Minder is needed for each property 
set.)

One thing GroveMinder can do is store a grove in its own database. (Note 
that this is separate from the database addressed by the relational 
database Minder -- it has a structure designed to store groves.) Thus, 
GroveMinder can store an XML document in a database as a grove and is what 
I, in my article, called a content management systems. That is, it can 
store and retrieve an XML document as a document.

Some questions:

1) Is it possible to combine groves of different types? For example, can I 
take a grove representing a table in a relational database and stuff it 
into a grove for an XML document, for example as the content of an element? 
 If so, does the table grove retain its table-ness, or is it converted to 
one or more XML elements?  Both cases seem reasonable, although the latter 
would presumably require a special converter. If the latter case is true, 
then GroveMinder might also fit what I call data transfer middleware, 
depending on how the conversion is done.

2) Are groves themselves relevant at a high level in a discussion of XML 
and databases? It strikes me that, like SAX and the DOM, they are a useful 
tool in implementing software that stores/retrieves XML documents (or data 
from those documents) in a database but are not directly relevant to the 
discussion itself. Instead, they are most relevant to the user in that they 
are likely to weigh heavily in the feature set exposed by a content 
management system or (possibly) data transfer system.

3) This isn't directly related to XML/databases, but what other common 
functionality do all groves have? For example, can I write an application 
that navigates groves, regardless of their source (I think the answer is 
yes)? Can I combine groves of different types or convert painlessly -- that 
is, without writing any additional code -- from one type to another (I 
think the answer is no -- additional code is needed)? Can I hyperlink from 
one grove to another (I think the answer is yes)? And so on.

-- Ron


xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at ic.ac.uk
Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ and on CD-ROM/ISBN 981-02-3594-1
To (un)subscribe, mailto:majordomo at ic.ac.uk the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at ic.ac.uk the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at ic.ac.uk)





More information about the Xml-dev mailing list