Dataset Query Capabilities - Issues


Issues:

Related Resources:


What is Returned

Currently, a resulting queryURL can return a THREDDS catalog. DQC documents could be used to build queryURLs that reference non-THREDDS services, e.g., an OPeNDAP server. The results of dereferencing a queryURL in these cases would be dependent on the service and, currently, can not be represented in the DQC document other than with an "other" value in the returns attribute of the query element. How a queries returns type is indicated may need to be expanded if the DQC is used in other contexts.

Further Discussion of Return Type

We have decided not to investigate other return types until we have more need for them.

Some thoughts:

DODS File Server (DFS) Thoughts

Several possibilities:


Selectors That Require Multiple Values

"How to Indicate a Selector Requires More than One Value" OR "Replacement Strings/Macros vs Selection Items"

Reasons we might want selectionItem type functionality:

Example for range where either a point or a range may be selected:

<selectFromRange title="Select Date Range" required="false"
min="17193600.0" max="157680000.0" units="seconds since 1999-01-01">
<selectionItemOR id="dateRange" template="{dateRange}">
<selectionItemAND>
<selectionItem id="min" template="minDate={min}" />
<selectionItem id="max" template="maxDate={max}" />
</selectionItemAND>
<selectionItem id="point" template="pointDate={point}" />
</selectionItemOR>
</selectFromRange>

Macros (Replacement Strings)

Currently, selectors that require multiple values are indicated by the template containing multiple replacement strings (or macros), e.g., template="min={min}max={max}". The set of allowed replacement strings is defined (in the spec only) for each selector that requires multiple values. Which combinations of the replacement strings are also defined only in the spec. For instance, the selectFromRange element defines {min}, {max}, {units}, {point}, and {proximity} where there are two possibilities for use. Either {min} and {max} may be used or {point} and {proximity} may be used (though {proximity} is optional). In both cases {units} may be used.

Pros

Cons

Selection Items

Alternate:

For selectors that require a single value to make a selection, this can work the same as above except that the template macro name or parameter name are defined by selection id value. However, if a selectionItem element is present, then all is the same as above except that the selectionItem id value defines the template macro name or parameter name.

For selectors that require multiple values to make a selection, selectionItem elements are required for each of the required values. The id of each selectionItem element is used to define the template macro names or parameter names.

An example DQC that shows the above methods and this method is available at DqcExample-twoDFS.xml

selectionItem element

<xsd:element name="selectionItem" type="" abstract="true" />
<xsd:complexType name="selectionItemType">
<xsd:attribute name="id" type="xsd:token" use="required"/>
</xsd:complexType>

The selectionItem element ... Possible element to indicate that multiple values are required for the containing selector.

selectFromRange2 element

<xsd:element name="selectFromRange2" type="qc:selectFromRange2Type" substitutionGroup="qc:selector" />
<xsd:complexType name="selectFromRange2Type">
<xsd:complexContent>
<xsd:extension base="qc:selectorType">
<xsd:sequence>
<xsd:choice>
<xsd:sequence>
<xsd:element ref="qc:selectedMin" />
<xsd:element ref="qc:selectedMax" />
</xsd:sequence>
<xsd:sequence>
<xsd:element ref="qc:selectedPoint" />
<xsd:element ref="qc:selectedProximity" minOccurs="0" />
</xsd:sequence>
</xsd:choice>
<xsd:element ref="qc:selectedUnits" minOccurs="0" maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="min" type="xsd:float" />
<xsd:attribute name="max" type="xsd:float" />
<xsd:attribute name="units" type="xsd:float" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:element name="selectedMin" type="qc:selectedFloatValueType" substitutionGroup="qc:selectionItem" />
<xsd:element name="selectedMax" type="qc:selectedFloatValueType" substitutionGroup="qc:selectionItem" />
<xsd:element name="selectedPoint" type="qc:selectedFloatValueType" substitutionGroup="qc:selectionItem" />
<xsd:element name="selectedProximity" type="qc:selectedProximityValueType" substitutionGroup="qc:selectionItem" />
<xsd:element name="selectedUnits" type="qc:selectedStringValueType" substitutionGroup="qc:selectionItem" />

<xsd:complexType name="selectedFloatValueType">
<xsd:complexContent>
<xsd:extension base="qc:selectionItemType">
<xsd:attribute name="value" type="xsd:float" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="selectedStringValueType">
<xsd:complexContent>
<xsd:extension base="qc:selectionItemType">
<xsd:attribute name="value" type="xsd:string" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="selectedProximityValueType">
<xsd:complexContent>
<xsd:extension base="qc:selectionItemType">
<xsd:attribute name="value" type="qc:proximityType" default="closest" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<xsd:simpleType name="proximityType">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="closest" />
<xsd:enumeration value="closestAbove" />
<xsd:enumeration value="closestBelow" />
</xsd:restriction>
</xsd:simpleType>

Example:

<selectFromRange name="DateRange" description="The date range ..." required="false"
min="-5.0" max="0.0" units="days since present">
<selectedMin id="minDate" />
<selectedMax id="maxDate" />
</selectDateRange>

LOOK Note the propposed way of specing the reletive time.