Difference between revisions of "DAP Capabilities"

From OPeNDAP Documentation
(Server-side functions.)
(Server-side functions.)
Line 25: Line 25:
 
=== Server-side functions.===
 
=== Server-side functions.===
 
We need to develop XML machine readable description of server side functions.
 
We need to develop XML machine readable description of server side functions.
Here's a straw man for geogrid:  
+
Here's a straw man for geogrid, grid, linear_scale, and version:  
  
 
     <dap:ServerSideFunctions>
 
     <dap:ServerSideFunctions>
 
         <dap:ServerSideFunction>
 
         <dap:ServerSideFunction>
 
             <dap:Name>geogrid</dap:Name>
 
             <dap:Name>geogrid</dap:Name>
 +
            <dap:Description>
 +
                The geogrid() function applies a constraint given in latitude and
 +
                longitude to a DAP Grid variable. The arguments to the function are:
 +
                geogrid(variable, top, left, bottom, right[, expression ...]) The
 +
                variable is the data to be sub-sampled. The Top, left, bottom, right
 +
                are the latitude and longitude coordinates of the northwesterm and
 +
                southeastern corners of the selection box. The expressions consist of
 +
                one or more quoted relational expressions.  Each relational expression
 +
                is applied to the grid using the server's constraint evaluator and the
 +
                resulting grid is returned. The expressions may use constants and the
 +
                grid's map vectors but may not use any other variables. In particular,
 +
                you cannot use the grid values themselves. Two forms of expression are
 +
                provided: "var relop const" and "const relop var relop const" Where relop
 +
                stands for one of the relational operators, like = and > For example:
 +
                grid(sst,"20>TIME>=10") and grid(sst,"20>TIME","TIME>=10") are both legal
 +
                and, in this case, also equivalent.
 +
            </dap:Description>
 
             <dap:Parameter occurrence="1" presence="required" >
 
             <dap:Parameter occurrence="1" presence="required" >
 
                 <dap:Name>variable</dap:Name>
 
                 <dap:Name>variable</dap:Name>
                 <dap:Type>Float</dap:Type>
+
                 <dap:Type>String</dap:Type>
 
                 <dap:Description>The name of the Grid variable to subsample.</dap:Description>
 
                 <dap:Description>The name of the Grid variable to subsample.</dap:Description>
 
             </Parameter>
 
             </Parameter>
Line 60: Line 77:
 
                 <dap:Description>A Relational Expression</dap:Description>
 
                 <dap:Description>A Relational Expression</dap:Description>
 
             </Parameter>
 
             </Parameter>
 +
        </dap:ServerSideFunction>
 +
        <dap:ServerSideFunction>
 +
            <dap:Name>grid</dap:Name>
 
             <dap:Description>
 
             <dap:Description>
                 The geogrid() function applies a constraint given in latitude and
+
                 The grid() function takes a DAP Grid variable and zero or more relational  
                longitude to a DAP Grid variable. The arguments to the function are:
+
                expressions.  Each relational expression  
                geogrid(variable, top, left, bottom, right[, expression ...]) The
 
                variable is the data to be sub-sampled. The Top, left, bottom, right
 
                are the latitude and longitude coordinates of the northwesterm and
 
                southeastern corners of the selection box. The expressions consist of
 
                one or more quoted relational expressions.  Each relational expression  
 
 
                 is applied to the grid using the server's constraint evaluator and the  
 
                 is applied to the grid using the server's constraint evaluator and the  
 
                 resulting grid is returned. The expressions may use constants and the  
 
                 resulting grid is returned. The expressions may use constants and the  
Line 76: Line 91:
 
                 grid(sst,"20>TIME>=10") and grid(sst,"20>TIME","TIME>=10") are both legal  
 
                 grid(sst,"20>TIME>=10") and grid(sst,"20>TIME","TIME>=10") are both legal  
 
                 and, in this case, also equivalent.
 
                 and, in this case, also equivalent.
 +
            </dap:Description>
 +
            <dap:Parameter occurrence="1" presence="required" >
 +
                <dap:Name>variable</dap:Name>
 +
                <dap:Type>String</dap:Type>
 +
                <dap:Description>The name of the Grid variable to subsample.</dap:Description>
 +
            </Parameter>
 +
            <dap:Parameter occurrence="*" presence="required" >
 +
                <dap:Name>expression</dap:Name>
 +
                <dap:Type>String</dap:Type>
 +
                <dap:Description>A Relational Expression</dap:Description>
 +
            </Parameter>
 +
        </dap:ServerSideFunction>
 +
        <dap:ServerSideFunction>
 +
            <dap:Name>linear_scale</dap:Name>
 +
            <dap:Description>
 +
                The linear_scale() function applies the familiar y = mx + b equation to data.
 +
                It has three forms: linear_scale(var), linear_scale(var,scale_factor,add_offset)
 +
                linear_scale(var,scale_factor,add_offset,missing_value) If only the name of a
 +
                variable is given, the function looks for the COARDS/CF-1.0 scale_factor,
 +
                add_offset and missing_value attributes. In the equation, 'm' is scale_factor,
 +
                'b' is add_offset and data values that match missing_value are not scaled. If
 +
                add_offset cannot be found, it defaults to zero; if missing_value cannot be
 +
                found, the test for it is not performed. In the second and third form, if the
 +
                given values conflict with the dataset's attributes, the given values override.
 +
            </dap:Description>
 +
            <dap:Parameter occurrence="1" presence="required" >
 +
                <dap:Name>var</dap:Name>
 +
                <dap:Type>String</dap:Type>
 +
                <dap:Description>The name of the Grid variable to subsample.</dap:Description>
 +
            </Parameter>
 +
            <dap:Parameter occurrence="1" presence="required" >
 +
                <dap:Name>scale_factor</dap:Name>
 +
                <dap:Type>Float</dap:Type>
 +
                <dap:Description>The "m" in "y = mx + b"</dap:Description>
 +
            </Parameter>
 +
            <dap:Parameter occurrence="1" presence="required" >
 +
                <dap:Name>add_offset</dap:Name>
 +
                <dap:Type>String</dap:Type>
 +
                <dap:Description>The "b" in "y = mx + b"</dap:Description>
 +
            </Parameter>
 +
            <dap:Parameter occurrence="1" presence="required" >
 +
                <dap:Name>missing_value</dap:Name>
 +
                <dap:Type>Float</dap:Type>
 +
                <dap:Description>A data values that match missing_value are not scaled.</dap:Description>
 +
            </Parameter>
 +
        </dap:ServerSideFunction>
 +
        <dap:ServerSideFunction>
 +
            <dap:Name>version</dap:Name>
 +
            <dap:Description>
 +
                The version function provides a list of the server-side processing functions
 +
                available on a given server along with their versions. For information on a
 +
                specific function, call it with no arguments or look at this page.
 
             </dap:Description>
 
             </dap:Description>
 
         </dap:ServerSideFunction>
 
         </dap:ServerSideFunction>

Revision as of 19:47, 5 March 2010

1 Overview

Develop a definition of what a DAP servers Capabilities response should ;ook like.


2 What is a Capabilities response?

In the world of OGC it's a document that contains a description of the ownership (ows:ServiceProvider), service identification (ows:ServiceIdentification), service access (ows:OperationsMetadata), and holdings (*:Contents) of the server.


3 What are we doing now that's similar?

  • Ownership Nothing similar. Data providers can (but none that I have seen have) configure the OLFS to replace the standard documentation found through the Documentation link on every contents.html page. Otherwise they might get an email address about weho to write of the BES sends one in an error. The OLFS saves propagates the email address support@opendap.org from 14 different places in the code through a number of HTML responses . These could be modified by determined Hyrax installer, but it would be a hassle and wouldn't persist between installs. We have no structured response in this regard.
  • Service Identification Nothing similar. In the current version of Hyrax we return an list of the DAP versions the server supports in a larger XML document containing the names and version numbers of the software components running on the server.
  • Service Access Nothing similar
  • Holdings Currently we provide a linked list of holdings through THREDDS catalogs. Our THREDDS catalogs do not contain any THREDDS metadata, (or WCS metadata for that matter)


4 How might a DAP Capabilities response look

4.1 Ownership

   <dap:Contact>
       <dap:Email>name@org.org</dap:Email>
   <dap:/Contact>

4.2 Server-side functions.

We need to develop XML machine readable description of server side functions. Here's a straw man for geogrid, grid, linear_scale, and version:

   <dap:ServerSideFunctions>
       <dap:ServerSideFunction>
           <dap:Name>geogrid</dap:Name>
           <dap:Description>
               The geogrid() function applies a constraint given in latitude and 
               longitude to a DAP Grid variable. The arguments to the function are:
               geogrid(variable, top, left, bottom, right[, expression ...]) The 
               variable is the data to be sub-sampled. The Top, left, bottom, right 
               are the latitude and longitude coordinates of the northwesterm and 
               southeastern corners of the selection box. The expressions consist of 
               one or more quoted relational expressions.  Each relational expression 
               is applied to the grid using the server's constraint evaluator and the 
               resulting grid is returned. The expressions may use constants and the 
               grid's map vectors but may not use any other variables. In particular, 
               you cannot use the grid values themselves. Two forms of expression are 
               provided: "var relop const" and "const relop var relop const" Where relop 
               stands for one of the relational operators, like = and > For example: 
               grid(sst,"20>TIME>=10") and grid(sst,"20>TIME","TIME>=10") are both legal 
               and, in this case, also equivalent.
           </dap:Description>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>variable</dap:Name>
               <dap:Type>String</dap:Type>
               <dap:Description>The name of the Grid variable to subsample.</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>top</dap:Name>
               <dap:Type>Float</dap:Type>
               <dap:Description>Latitude Coordinate</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>left</dap:Name>
               <dap:Type>Float</dap:Type>
               <dap:Description>Longitude Coordinate</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>bottom</dap:Name>
               <dap:Type>Float</dap:Type>
               <dap:Description>Latitude Coordinate</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>right</dap:Name>
               <dap:Type>Float</dap:Type>
               <dap:Description>Longitude Coordinate</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="*" presence="optional" >
               <dap:Name>expression</dap:Name>
               <dap:Type>String</dap:Type>
               <dap:Description>A Relational Expression</dap:Description>
           </Parameter>
       </dap:ServerSideFunction>
       <dap:ServerSideFunction>
           <dap:Name>grid</dap:Name>
           <dap:Description>
               The grid() function takes a DAP Grid variable and zero or more relational 
               expressions.  Each relational expression 
               is applied to the grid using the server's constraint evaluator and the 
               resulting grid is returned. The expressions may use constants and the 
               grid's map vectors but may not use any other variables. In particular, 
               you cannot use the grid values themselves. Two forms of expression are 
               provided: "var relop const" and "const relop var relop const" Where relop 
               stands for one of the relational operators, like = and > For example: 
               grid(sst,"20>TIME>=10") and grid(sst,"20>TIME","TIME>=10") are both legal 
               and, in this case, also equivalent.
           </dap:Description>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>variable</dap:Name>
               <dap:Type>String</dap:Type>
               <dap:Description>The name of the Grid variable to subsample.</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="*" presence="required" >
               <dap:Name>expression</dap:Name>
               <dap:Type>String</dap:Type>
               <dap:Description>A Relational Expression</dap:Description>
           </Parameter>
       </dap:ServerSideFunction>
       <dap:ServerSideFunction>
           <dap:Name>linear_scale</dap:Name>
           <dap:Description>
               The linear_scale() function applies the familiar y = mx + b equation to data. 
               It has three forms: linear_scale(var), linear_scale(var,scale_factor,add_offset)
               linear_scale(var,scale_factor,add_offset,missing_value) If only the name of a 
               variable is given, the function looks for the COARDS/CF-1.0 scale_factor, 
               add_offset and missing_value attributes. In the equation, 'm' is scale_factor, 
               'b' is add_offset and data values that match missing_value are not scaled. If 
               add_offset cannot be found, it defaults to zero; if missing_value cannot be 
               found, the test for it is not performed. In the second and third form, if the 
               given values conflict with the dataset's attributes, the given values override.
           </dap:Description>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>var</dap:Name>
               <dap:Type>String</dap:Type>
               <dap:Description>The name of the Grid variable to subsample.</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>scale_factor</dap:Name>
               <dap:Type>Float</dap:Type>
               <dap:Description>The "m" in "y = mx + b"</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>add_offset</dap:Name>
               <dap:Type>String</dap:Type>
               <dap:Description>The "b" in "y = mx + b"</dap:Description>
           </Parameter>
           <dap:Parameter occurrence="1" presence="required" >
               <dap:Name>missing_value</dap:Name>
               <dap:Type>Float</dap:Type>
               <dap:Description>A data values that match missing_value are not scaled.</dap:Description>
           </Parameter>
       </dap:ServerSideFunction>
       <dap:ServerSideFunction>
           <dap:Name>version</dap:Name>
           <dap:Description>
               The version function provides a list of the server-side processing functions
               available on a given server along with their versions. For information on a 
               specific function, call it with no arguments or look at this page.
           </dap:Description>
       </dap:ServerSideFunction>
   </dap:ServerSideFunctions>

4.3 Holdings

         <dap:CatalogRoot xlink:href="/opendap/catalog.xml" >


4.4 Services

   <dap:Services>
   
       <dap:ServiceIdentification name="hyrax" base="/opendap/hyrax/" >
         <dap:ServiceType>DAP</dap:ServiceType>
         <dap:Version>2.0</dap:Version>
         <dap:Version>3.1</dap:Version>
         <dap:Version>3.2</dap:Version>
         <dap:CatalogRoot xlink:href="/opendap/catalog.xml" >
       <dap:ServiceIdentification>
       
       <dap:ServiceIdentification name="hyrax-WCS" base="/opendap/WCS/" >
         <dap:ServiceType>WCS</dap:ServiceType>
         <dap:Version>1.1.2</dap:Version>
         <dap:CatalogRoot xlink:href="/opendap/WCS?service=WCS&version=1.1.2&request=GetCapabilities" >
       <dap:ServiceIdentification>
       
   </dap:Services>