Better version of QSD for simplesearch

I like Alan's concept of making the QSD for simplesearch be property
centric rather than 'section' centric.  I started writing it up in
Microsoft Word and I sent it to Saveen to add to the protocol draft.

The writeup (which I enclose below)  has a DTD for the property
descriptions, but does not have a DTD for operator descriptions, not
because I am against that but just because I ran out of time to write it
up.  Sorry.

We can also delete section 11 (data typing) because there's no place else
datatypes get used except in QSD.

----------

1.1. Query Schema for DAV:simplesearch 

The DAV:simplesearch grammar defines a search criteria that is a
Boolean-valued expression, and allows for an arbitrary set of
properties to be includes in the result record.  The result set may be
sorted on a set of property values.  Accordingly the DTD for schema
discovery for this grammar allows the server to express:

? the set of properties that may be searched, with associated data types
? the set of properties that be selected in the result record
? the set of properties that may be sorted

1.1.1. DTD for  simplesearch query schema discovery

<!ELEMENT simplesearchschema	(properties, operators)>
<!ELEMENT properties		(propdesc*)>
<!ELEMENT propdesc		(prop, ANY) >
<!ELEMENT operators		to be provided >

The DAV:properties element holds a list of descriptions of properties.
The DAV:operators element describes the operators that may be used in
a DAV:where element.

1.1.2. DAV:propdesc element

Each instance of a DAV:propdesc element describes the property or
properties in the DAV:prop element it contains.  All subsequent
elements are descriptions that apply to those properties.  All
descriptions are optional and may appear in any order.  Servers SHOULD
support all the descriptions defined here, and MAY define others.

DASL defines four descriptions.  The first, DAV:datatype, provides a
hint about the type of the property value, and may be useful to a user
interface prompting for a value.  The remaing three (DAV:searchable,
DAV:selectable, and DAV:sortable identify portions of the query
(DAV:where, DAV:select, and DAV:sortby, respectively) If a property
has a description for a section, then the server MUST allow the
property to be used in that section. These descriptions are optional.
If a property does not have such a description, or is not described at
all, then the server MAY still allow the property to be used in the
corresponding section.

1.1.3. The DAV:datatype property description

The DAV:datatype element contains a single XML element that provides a
hint about the domain of the property, which may be useful to a user
interface prompting for a value to be used in a query.  The namespace
used for expressing a DASL defined datatype is
"urn:uuid:C2F41010-65B3-11d1-A29F-00AA00C14882/".

<!ELEMENT datatype				(ANY) >

DASL defines the following datatype elements:

name		     contents		example
string
int					12,-259
float					.314159265358979E+1
dateTime.iso8601tz   an ISO 8601 date	1994-11-05T08:15:5Z

1.1.4. The DAV:searchable property description

If this element is present, then the server MUST allow this property
to appear within a DAV:where element if the operator it is used with
allows it.  Allowing a search does not mean that the property is
guaranteed to be defined on every resource in the scope, it only
indicates the servers willingness to check.

<!ELEMENT searchable			EMPTY >

1.1.5. The DAV:selectable property description

This element indicates that the property may appear in the DAV:select element.

<!ELEMENT selectable			EMPTY >

1.1.6. The DAV:sortable property description

This element indicates that the property may appear in the DAV:sortby element

<!ELEMENT sortable				EMPTY >

1.1.7. Example of Query Schema for DAV:simplesearch

<?xml:namespace ns="DAV:" prefix="D">
<?xml:namespace ns="urn:uuid:C2F41010-65B3-11d1-A29F-00AA00C14882/" 
prefix="t"?>
<?xml:namespace ns="http://jennicam.org" prefix="J">
<D:simplesearchschema>
  <D:properties>
    <D:propdesc>
      <D:prop><D:getcontentlength/></D:prop>
      <D:datatype><t:int></D:datatype>
      <D:searchable/><D:selectable/><D:sortable/>
    </D:propdesc>
    <D:propdesc>
      <D:prop><D:getcontenttype/><D:displayname></D:prop>
      <D:searchable/><D:selectable/> <D:sortable/>
    </D:propdesc>
    <D:propdesc>
      <D:prop><J:fstop/></D:prop>
      <D:selectable/>
    </D:propdesc>
  <D:properties>
  <D:operators>
..</D:operators>
</D:simplesearchschema>

This response lists four properties.  All are selectable, and the
first three may be searched.  The datatype is provided for the first,
the others default to string.  All but the last may be used in a sort.

Received on Friday, 24 July 1998 22:42:33 UTC