= The Open Geospatial Consortium Catalog Service for the Web 2.0.1 implementation = The OGC-CSW 2.0.1 base specification, based on the ISO application profile, has been implemented in GeoNetwork opensource version 2.1 and serves as the OGC reference implementation for this specification. It complies to all of the created [http://cite.geoenterpriselab.com/teamengine/ CITE tests for CSW 2.0.1] The supported operations and their exact behavior is listed below. Implemented standards: * 04-021r3 : CSW 2.0.1 specification * 04-038r4 : CSW 2.0.1 - ISO application profile The CSW server code has been implemented and is available from the SVN (Subversion) code repository at svn://geonetwork.svn.sourceforge.net/svnroot/geonetwork . The application has passed all [http://cite.geoenterpriselab.com/teamengine/ CITE tests] developed for the CSW 2.0 base specification. A detailed reference of the implemented operations is provided below. A client test application provided with the software can be used to locally test the mandatory and optional operations. == Detailed Implementation Reference per Operation == This section provides details on the implemented behavior of the CSW operations. All requests can be sent using GET/POST or SOAP protocol. {{{ ------------------------------------------------------------------ GetCapabilities (mandatory) service: handled, throws exc if <> 'http://www.opengis.net/cat/csw' or 'CSW' acceptVersions: handled, throws exc if does not contain '2.0.1' sections: handled update sequence: not handled (returned most recent copy) acceptFormats: not handled (only format is 'application/xml') }}} {{{ ------------------------------------------------------------------ DescribeRecord (mandatory) - service: handled, throws exc if <> 'http://www.opengis.net/cat/csw' or 'CSW' - version: handled, throws exc if <> '2.0.1' - typeName: handled - outputFormat: handled, throws exc if <> 'application/xml' (only supported value) - schemaLanguage: handled, throws exc if <> 'http://www.w3.org/XML/Schema' (only supported value) }}} {{{ ------------------------------------------------------------------ GetRecordById (mandatory) service: handled, throws exc if <> 'http://www.opengis.net/cat/csw' or 'CSW' version: handled, throws exc if <> '2.0.1' id list: handled, mapped to uuid elementSetName: handled, throws exc if <> 'brief|summary|full' default is 'summary'. Case sensitive. works for all schemas (iso, fgdc, dublin core) }}} {{{ ------------------------------------------------------------------ GetRecords (mandatory) service: handled, throws exc if <> 'http://www.opengis.net/cat/csw' or 'CSW' version: handled, throws exc if <> '2.0.1' outputFormat: handled, throws exc if <> 'application/xml' startPosition: handled, throws exc if not integer or <1. Default = 1 maxRecords: handled, throws exc if not integer or <1. Default = 10 distributedSearch: handled but not used hopCount: handled but not used, throws exc if not integer or < 0. Default = 2 outputSchema: handled, throws exc if <> 'ogccore'|'profile' elementSetName: handled, throws exc if <> 'brief|summary|full' default is 'summary'. Case insensitive elementName: non handled, handled elementSetName instead resultType: handled, throws exc if <> 'hits'|'results'|'validate'. Default is 'hits'. 'validate' is not handled (throws exc) because it is used only in asynchronous communications (the ISO profile is synch.) costr lang version: handled, throws exc if missing or (for filters) if <> '1.1.0' CQL: supported only: AND, OR (even nested), =, <>, <, >, <=, >= strings containing spaces cannot be used in a query (like 'basic africa') }}} {{{ ------------------------------------------------------------------ GetDomain (optional) not implemented Transaction (optional) not implemented Harvest (optional) not implemented }}} {{{ Filter Implementation Status Geometry operands: gml:Envelope Spatial operators: BBOX (property-name not used) Logical operators: all Comparison operators: =, like, <, >, <=, >=, <>, between Arithmetic operators: none }}} Limitations: * ISO19119 services are not implemented * The CQL is naive and has several limitations (for example it does not handle the bbox) * Type names are not handles because they can be queried using the 'Type' queryable.