Semantic Generation Of WCS Catalogs
Introduction
A WCS service must maintain a catalog of Coverages. In the Hyrax WCS service the implementation of this catalog is identified at server start-up from the DispatchHandler's configuration element in the olfs.xml file. This page documents the work on the development and usage of a catalog implementation that utilizes semantic web technologies to generate the WCS catalog content from existing (and probably supplemented) metadata from within the existing OPeNDAP data framework.
Technologies
RDF
OWL
SWRL & SEQRL
Implementations
Sesame RDF Datastore
Swift OWLIM
Ontologies
Processing Scheme
Catalog Implementation
WCS DispatchHandler Configuration
The Hyrax WCS service is made of a collection 4 implementations of the opendap.coreServlet.DispatchHandler interface.
- HTTP GET: opendap.wcs.v1_1_2.DispatchHandler
- HTTP POST (For posting unadorned XML WCS requests): opendap.wcs.v1_1_2.PostHandler
- HTTP POST (For posting SOAP envelopes containg WCS requests): opendap.wcs.v1_1_2.SoapHandler
- HTTP POST (For handling WCS requests posted from an HTML form): opendap.wcs.v1_1_2.FormHandler
The service is enabled by creating an entry for each service component in the olfs.xml file.
The primary DispatchHandler is opendap.wcs.v1_1_2.DispatchHandler. It is required for the WCS service and it's Handler declaration contains the configuration information for the service. In it's Handler declaration the location of the ServiceIdentification, ServiceProvider, and OperationsMetadata documents are identified, along with a WCS catalog implementation to be used by the service.
To "turn on" the service Handler declarations must appear in the olfs.xml opendap.wcs.v1_1_2.DispatchHandler Configuration
Example Configuration
<?xml version="1.0" encoding="UTF-8"?> <OLFSConfig> <DispatchHandlers> <HttpGetHandlers> <Handler className="opendap.bes.BESManager"> <BES> <prefix>/</prefix> <host>localhost</host> <port>10002</port> <ClientPool maximum="10" /> </BES> </Handler> <Handler className="opendap.coreServlet.BotBlocker"> <IpMatch>65\.55\.[012]?\d?\d\.[012]?\d?\d</IpMatch> </Handler> <Handler className="opendap.wcs.v1_1_2.DispatchHandler"> <prefix>WCS</prefix> <ServiceIdentification>/absolute/path/to/the/document/ServiceIdentification.xml</ServiceIdentification> <ServiceProvider>/absolute/path/to/the/document/ServiceProvider.xml</ServiceProvider> <OperationsMetadata>/absolute/path/to/the/document/OperationsMetadata.xml</OperationsMetadata> <WcsCatalog className="opendap.wcs.v1_1_2.RdfOwlCatalog"> <RDFServer>/absolute/path/to/the/directory/containing/the/wcs:CoverageDescription/documents/coverages/dir</RDFServer> </WcsCatalog> </Handler> <Handler className="opendap.threddsHandler.StaticCatalogDispatch"> <prefix>thredds</prefix> <useMemoryCache>true</useMemoryCache> </Handler> <Handler className="opendap.bes.DapDispatchHandler" /> <Handler className="opendap.bes.DirectoryDispatchHandler" /> <Handler className="opendap.coreServlet.SpecialRequestDispatchHandler" /> <Handler className="opendap.bes.VersionDispatchHandler" /> <Handler className="opendap.bes.FileDispatchHandler" > <AllowDirectDataSourceAccess /> </Handler> <Handler className="opendap.bes.BESThreddsDispatchHandler" /> </HttpGetHandlers> <HttpPostHandlers> <Handler className="opendap.wcs.v1_1_2.PostHandler" > <prefix>WCS/post</prefix> </Handler> <Handler className="opendap.wcs.v1_1_2.SoapHandler" > <prefix>WCS/soap</prefix> </Handler> <Handler className="opendap.wcs.v1_1_2.FormHandler" > <prefix>WCS/form</prefix> </Handler> <Handler className="opendap.coreServlet.SOAPRequestDispatcher" > <OpendapSoapDispatchHandler>opendap.bes.SoapDispatchHandler</OpendapSoapDispatchHandler> </Handler> </HttpPostHandlers> </DispatchHandlers> </OLFSConfig>