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.
We have decided not to investigate other return types until we have
more need for them.
Some thoughts:
Several possibilities:
"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>
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
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
<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.
<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.