How NOT to support structure query

While I was composing my previous email, I thought of two other
alternatives.  I don't like either one,  but I want to list them anyway so
we can say we considered all the options.  besides, maybe it will lead to
some better idea.

Since Saveen proposed four solutions, I number these 5 and 6.

5 - do nothing.  Applications that want to store list valued data must
themselves coerce it into a string, e.g. "Goland, Y;Harding, T;Fischer, B".
 Then the current DASL operators are sufficient.  With a suitable regular
expression, one can even distinguish between a string being used as a first
or last name.

One problem with this approach is that it imposes the burden of selecting a
suitable delimiter on the application author.  Delimiters might vary from
one property to another.   How could a second application wishing to query
the property discover the delimiter?  It also means that applications may
need to encode characters that resemble the delimiter.

A second problem is that it requires an application author to forgo much of
the expressive power of XML, since it makes it impossible to use XML markup
on the elements within the list itself, e.g. to give the author name
structure or to distinguish different types of authors.  I could not express

<dc:Creator>
  <x:person>
   <x:lname>Goland</x:lname>
   <x:fname>Y</x:fname>
  </x:person>
  <x:corporate>Coalition for Networked Resources</x:corporate>
</dc:Creator>

A final objection is that it leaves unsolved Saveen's original problem.

6 - Define property value comparison as applying to an XML character
stream, as it would appear on the wire.  Then I could search for "Goland"
within this character stream.  (For that matter, I could search for
"me>Go", which also occurs in this stream.)

This seems to me to be an abomination for several reasons.  I mention it
only for completeness, so I can dismiss it, because otherwise someone will
propose it seriously.

For one thing, XML is a syntax for data on the wire, not a storage format.
A DASL server might use an underlying RDBMS for storage, so this approach
would require regenerating the XML at query time.  For another, the precise
form of the XML on the wire is variable, at least with regards to the
namespace used.  A query could not reliably test for <D:collection/> since
the server is free to use any namespace prefix it wants.  Finally, many
plausible queries would be nightmares of regular expressionism.

Received on Saturday, 4 July 1998 00:07:35 UTC