[Esip-discovery] open search extensions
jeff mcwhirter
jeffmc at unavco.org
Tue Jan 25 00:04:43 EST 2011
Hi all,
I'd like to open up a discussion of the Open Search efforts within
ESDSWG/ESIP. I am fairly new to this community so please forgive me if
some of these issues and ideas have been discussed already.
At UNAVCO we have a NASA ROSES grant (GSAC) where we are working on
defining a common web service and html API for querying geodesy data
repositories. We currently have 3 implementations of these GSAC
repositories running at UNAVCO, Scripp's SOPAC and (soon) NASA's CDDIS
sites. We also have a 4th implementation of a federated repository that
can search across multiple external repositories and will soon have a
5th implementation in a stand-alone repository for 3rd party sites.
Here is UNAVCO's implementation:
http://facility.unavco.org/gsacws/gsacapi/site/form
As part of this work we have developed a facility for repositories to
describe their query capabilities. This is similar to the Open Search
initiative but it is a more flexible and richer mechanism. You can see
the auto-generated API documentation here:
http://facility.unavco.org/gsacws/gsacapi/repository/info
and a write up on this here:
http://facility.unavco.org/data/gsacws/development/capabilities.html
It should be noted that the above site form as well as the resource
query forms:
http://facility.unavco.org/gsacws/gsacapi/resource/form
are completely generated via reading the declarative specification of
the capabilities of the underlying repository.
The basic idea is that a data repository describes a query end point URL
and a set of possible URL arguments. The key differentiation between
this approach and Open Search is the introduction of a type mechanism.
As described in the above documentation each search parameter has a type
associated with it. Based on the type a front-end can assemble the
appropriate search interface. So, for example, our site searches have
parameters such as site code (string), name (string), type
(enumeration), bounds (spatial bounds), etc.
As we describe in the write up, while Open Search has the ability to
have extensions these are still essentially hard-coded and front ends
need to have explicit knowledge of those extensions to produce search
interfaces. With the capabilities/type approach the only "hard-coding"
required of a front end is for the front end to understand the type
system. This provides much greater flexibility in defining what can be
searched for. For example, in our resource (i.e., file) search interface
there are actually 2 different dates that can be searched for - the data
date and the archive publish date.
What this has enabled us to do is to develop a generic layer called the
GSAC Service Layer (GSL). The GSL (a Java servlet) reads a set of
capabilities from an underyling repository implementation and generates
the appropriate interfaces. Likewise, in our implementation of a
federated search repository the system reads the capabilities from a set
of external repositories and merges those capabilities together.
While the goal of having open search interfaces is important the
text-search oriented focus of the Open Search spec is perhaps too
limited for the complexities inherent within geoscience data systems.
While our major focus has been on development we'd like to see if some
of these ideas can gain traction in the broader ESIP/ESDWSG communities
and would welcome discussion and feedback.
Thanks,
-Jeff
More information about the Esip-discovery
mailing list