Prev Up Next Index
Go backward to 4.1.3 Using Functions in a Constraint Expression
Go up to 4.1 Selecting Data: Using Constraint Expressions
Go forward to 4.1.5 Pattern Matching with Constraint Expressions

4.1.4 Using URLs in a Constraint Expression

The OPeNDAP data access protocol defines a special data type to handle distributed data: URL. This is a scalar data type, much like the String type, intended to hold one OPeNDAP URL. It generally points at some remote dataset or data value. Using this data type, a constraint expression may make the data returned from one OPeNDAP data server dependent on data held at an entirely different site.

In order to accommodate this data type, OPeNDAP defines a special "dereference" operator *. Similar to its function with pointers in C, applying this operator to a URL returns the data specified by that URL. The URL data type itself contains only a character string. It must be dereferenced to produce a reference to the data named by the URL.

Examples

The following example will return all the stations containing oxygen values greater than fifteen:

?station&station.cast.O2>15.0

Similarly, the following constraint expression will yield all the stations in the dataset whose value is greater than that of the oxygen value indicated by the URL:

?station&station.cast.O2>*''http://ocean.edu/etc/nc/data?O2MAX''

Finally, suppose that the dataset itself contained a variable of type URL, and that this URL contained the address of oxygen data stored at some other site. The data descriptor for the dataset might look like the following:

Dataset {
   Sequence{
       .
       .
       .
      URL O2cal;
       .
       .
       .
   } station;
} arabian-sea;

We can now write the previous constraint as:

?station&station.cast.O2>*O2cal

URLs stored in remote datasets may also be used in the projection clause of the constraint expression. Imagine a dataset that consists only of a list of URLs for each square degree of latitude and longitude. A user could query this dataset for the actual list of URLs, or, by using the * operator, could construct a constraint expression that would return the actual data indicated by the URLs in the target dataset.


Tom Sgouros, August 25, 2004

Prev Up Next