Catalogue Service for the Web

Catalogue Service for the Web (CSW), sometimes seen as Catalogue Service - Web, is a standard for exposing a catalogue of geospatial records in XML on the Internet (over HTTP). The catalogue is made up of records that describe geospatial data (e.g. KML), geospatial services (e.g. WMS), and related resources.

CSW is one part (or "profile") of the OGC Catalogue Service, which defines common interfaces to discover, browse, and query metadata about data, services, and other potential resources. Version 2.0 of the specification was released in May 2004. The most recent release is 2.0.2, which was published in 2007. 

The records are in XML according to the standard.  Typically the records include Dublin Core, ISO 19139 or FGDC metadata, encoded in UTF-8 characters. Each record must contain certain core fields including: Title, Format, Type (e.g. Dataset, DatasetCollection or Service), BoundingBox (a rectangle of interest, expressed in latitude and longitude), Coordinate Reference System, and Association (a link to another metadata record).

Operations defined by the CSW standard include:
 GetCapabilities: "allows CSW clients to retrieve service metadata from a server"
 DescribeRecord:  "allows a client to discover elements of the information model supported by the target catalogue service. The operation allows some or all of the information model to be described".
 GetRecords: search for records, returning record IDs
 GetRecordById:  "retrieves the default representation of catalogue records using their identifier"
 GetDomain (optional):  "used to obtain runtime information about the range of values of a metadata record element or request parameter"
 Harvest (optional): create/update metadata by asking the server to 'pull' metadata from somewhere
 Transaction (optional): create/edit metadata by 'pushing' the metadata to the server

Requests can encode the parameters in three different ways:
 GET with URL parameters
 POST with form-encoded payload
 POST with XML payload

Responses are in XML.

Sample interaction 
GeoServer implements many OGC standards, including CSW. An example of the DescribeRecord operation is as follows:
 http://localhost:8080/geoserver/csw?service=CSW&version=2.0.2&request=DescribeRecord&typeName=gmd:MD_Metadata
A (truncated) response:
 <?xml version="1.0" encoding="UTF-8"?>
 <csw:DescribeRecordResponse xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://localhost:8080/geoserver/schemas/csw/2.0.2CSW-discovery.xsd">
 <csw:SchemaComponent targetNamespace="http://www.opengis.net/cat/csw/2.0.2" schemaLanguage="http://www.w3.org/XML/Schema">
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gmd="http://www.isotc211.org/2005/gmd" targetNamespace="http://www.isotc211.org/2005/gmd" elementFormDefault="qualified" version="2012-07-13">
 <!-- ================================= Annotation ================================ -->
 <xs:annotation>
 <xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This identification.xsd schema implements the UML conceptual schema defined in A.2.2 of ISO 19115:2003. It contains the implementation of the following classes: MD_Identification, MD_BrowseGraphic, MD_DataIdentification, MD_ServiceIdentification, MD_RepresentativeFraction, MD_Usage, MD_Keywords, DS_Association, MD_AggregateInformation, MD_CharacterSetCode, MD_SpatialRepresentationTypeCode, MD_TopicCategoryCode, MD_ProgressCode, MD_KeywordTypeCode, DS_AssociationTypeCode, DS_InitiativeTypeCode, MD_ResolutionType.</xs:documentation>
 </xs:annotation>

Versions 
Versions 2.0.0, 2.0.1 and 2.0.2 are subtly different, and different vendors implement them with variations. Typically a CSW server will accept requests in one CSW version only, and it is up to the client to be flexible. e.g. ESRI Geoportal can be configured to harvest documents from CSW servers of a variety of versions and vendor variants  such as "GeoNetwork CSW 2.0.2 APISO".

See also
Web Map Service (WMS)
Web Feature Service (WFS)
Web Coverage Service (WCS)
Web Coverage Processing Service (WCPS)
Web Processing Service (WPS)

References

External links
 OGC Catalogue Service
 OpenGIS Catalogue Service Implementation Specification (PDF)
 Implementations of CSW 2.0.2 registered with OGC
 OGC e-Learning about CSW
 pycsw - Open source Python implementation of CSW
 GeoNetwork - Open source Java implementation of CSW
 OWSLib - Open source Python client for CSW 2.0.2

Web mapping
Open Geospatial Consortium
Metadata standards