Skip to content

Catalog Service

Marten edited this page Oct 26, 2016 · 9 revisions

The Geoportal Catalog Service is a key component for the discovery and publishing of geoportal resources. The geoportal web application includes an implementation of the Open Geospatial Consortium (OGC) Catalog Service for the Web (CS-W) 2.0.2 interface specification. The link to this service will typically follow the format below:

http://serverName:port/geoportal/csw?Request=GetCapabilities&Service=CSW&Version=2.0.2

The geoportal CS-W service makes possible support for arbitrary metadata schemas without complicating the search component of the geoportal. When a metadata document is published to the geoportal, the original metadata is retained unchanged and is used when editing the metadata in the online form or when displaying the full metadata as part of search results. At the same time, the geoportal is able to extract searchable elements into a uniform structure, standardize domain values across metadata standards, determine the topic category codes or content types of the metadata document, select key content for connecting to online resources, and assign a unique identifier to the record. The Details of the CS-W Interface will be described and Sample Requests and Responses included in the sections below. See the Geoportal WSDL section at the end for information about the web service definition files.

Table of Contents

Details of the CS-W Interface

Supported Operations

The geoportal CS-W implementation supports the mandatory CS-W requests as well as the optional GetRecordsById and Transaction. The Transaction requests publish or update entire documents only. The Transaction delete request is based on file identifier alone. Geoportal publisher permissions for executing Transaction requests must be included in the HTTP header in the client application that submits the CS-W request. The client application's header and credentials must follow HTTP Authorization standards. The GetDomain and Harvest operations are not supported at this time. Note: In the table below, the Obligation column indicates if the operation is mandatory or optional. Mandatory operations are required for the service to be minimally compliant with this CS-W specification. Optional operations are not required by the CS-W specification.

Table 1 - Supported Operations
Operation Obligation Supported Binding
GetCapabilities mandatory yes KVP+POST+SOAP
DescribeRecord mandatory yes KVP+POST+SOAP
GetRecords mandatory yes POST+SOAP
GetRecordById optional yes KVP+POST+SOAP
GetDomain optional no N/A
Harvest optional no N/A
Transaction optional yes POST+SOAP

Namespaces

The following table lists the namespace prefix declarations that are used throughout this document and the associated specification and version.

Table 2 - Namespace Prefix Declarations
Prefix Namespace URI Specification
csw http://www.opengis.net/cat/csw/2.0.2 OGC Catalogue Services 2.0.2, Corrigendum 2 Release, OGC 07-006r1
ows http://www.opengis.net/ows OGC Common 1.0.0
ogc http://www.opengis.net/ogc OGC Filter 1.1.0
gml http://www.opengis.net/gml GML 3.0.0
dc http://purl.org/dc/elements/1.1/ Dublin Core
dct http://purl.org/dc/terms Dublin Core terms
gmd http://www.isotc211.org/2005/gmd ISO 19115/19139
SOAP-ENV http://schemas.xmlsoap.org/soap/envelope SOAP Version 1.1
env http://www.w3.org/2003/05/soap-envelope/ SOAP Version 1.2

Core Queryables

The geoportal CS-W implementation supports CS-W core queryable properties, the ones defined in the CSW ISO Application Profile and additional queryables (applicable to ISO metadata only). The geoportal information model is backed by XML documents and a spatial database. Its XML documents contain FGDC, ISO 19139, Dublin Core, or other XML elements and attributes. Below is a table, mapping OGC Catalog Core Queryables to items in the geoportal information model. The remaining queryable properties relying on ISO 19115 and ISO 19119 metadata are faithfully following the names and mappings defined in OpenGIS Catalogue Services Specification 2.0.2 - ISO Metadata Application Profile and Technical Guidance to implement INSPIRE Discovery Services Technical Guidance Version 2.12.

Table 3 - Core Queryable Description and Mapping
Name Aliases Definition Data Type Allowed OGC Property Filters Mapping to Information Model
dc:identifier fileIdentifier, fid, id, identifier, fileID An unambiguous reference to the resource within a given context. string All * ISO 19139: /gmd:MD_Metadata/gmd:fileIdentifier/gco:CharacterString
Dublin Core: /rdf:RDF/rdf:Description/dc:identifier
FGDC: System assigned identifier as FGDC does not include a provision for this.
dct:modified modified, dc:date, date Date on which the resource was last changed. Date formatted string (yyyy-mm-dd) All * are allowed, except for ogc:PropertyIsLike Stored in database. Read from file system information.
ows:BoundingBox geometry, envelope A bounding box for identifying a geographic area of interest. gml:Envelope, gml:Point Set of spatial operators (see section below on spatial queries) Examples are for "West", but use simliar syntax for East, North, and South: ISO 19139: /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal Dublin Core, two options (east = UpperCorner, north = UpperCorner, south = LowerCorner): /rdf:RDF/rdf:Description/ows:WGS84BoundingBox/westbc /rdf:RDF/rdf:Description/ows:WGS84BoundingBox/ows:LowerCorner FGDC: /metadata/idinfo/spdom/bounding/westbc
anyText csw:anyText This queryable represents the catalog entry as a whole. string ogc:PropertyIsLike Those elements that have been marked as having one of the following meanings: title, abstract, keywords, or body. Refer to the Details of Lucene Indexing in the Geoportal topic for the default settings for these meanings and how to modify this.
dc:title title A name given to the resource string All * ISO 19139: /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString Dublin Core: /rdf:RDF/rdf:Description/dc:title FGDC: /metadata/idinfo/citation/citeinfo/title
dc:abstract abstract Overview description of the resource string All * ISO 19139: /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString Dublin Core: /rdf:RDF/rdf:Description/dc:description FGDC: /metadata/idinfo/descript/abstract
dc:subject subject The topic of the content of the resource. Controlled-list. string ogc:PropertyIsEqualTo Accepted values are based on the ISO 19115 topic category codes:
  • farming
  • biota
  • boundaries
  • climatologyMeteorologyAtmosphere
  • economy
  • elevation
  • environment
  • geoscientificInformation
  • health
  • imageryBaseMapsEarthCover
  • intelligenceMilitary
  • inlandWaters
  • location
  • oceans
  • planningCadastre
  • society
  • structure
  • transportation
  • utilitiesCommunication
ISO 19139: /gmd:MD_Metadata/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode Dublin Core: /rdf:RDF/rdf:Description/dc:subject FGDC: /metadata/idinfo/keywords/theme[1]/themekey
dc:type type, dc:format, format The physical or digital manifestation of the resource. string All * are allowed, but only "ogc:PropertyIsEqualTo" makes logical sense. Accepted values are:
  • liveData
  • downloadableData
  • offlineData
  • staticMapImage
  • document
  • application
  • geographicService
  • clearinghouse
  • mapFiles
  • geographicActivities
ISO 19139: determined by choice between ISO19115 or ISO19119 content standards. Dublin Core: /rdf:RDF/rdf:Description/dc:type FGDC: /metadata/distinfo/resdesc

Note: *"All" implies all OGC comparison operators:

  • ogc:PropertyIsEqualTo
  • ogc:PropertyIsNotEqualTo
  • ogc:PropertyIsLessThan
  • ogc:PropertyIsGreaterThan
  • ogc:PropertyIsLessThanOrEqualTo
  • ogc:PropertyIsGreaterThanOrEqualTo
  • ogc:PropertyIsLike

Spatial Queries

Envelope queries are encoded using OGC Filter spatial predicates. The geoportal CS-W API doesn't support every spatial predicate available in the Filter specification.

Table 4 - Supported Spatial Predicates
OGC Filter Spatial Predicate Geoportal CS-W Spatial Predicate
ogc:BBOX Overlaps
ogc:Intersects Overlaps
ogc:Within Within
  • Overlaps: finds metadata documents in which part or all of the metadata document's envelope falls within the specified search box. Anything the search box touches is found.
  • Within: finds metadata documents where the document's envelope falls entirely within the specified search box. The document's spatial envelope can touch the search box boundary.
  • The geometry operands supported for spatial queries are:
    1. gml:Envelope
    2. gml:Point

Comparison Operators

Comparison operators are included in a csw:GetRecord request:

  • Between
  • EqualTo
  • GreaterThan
  • GreaterThanEqualTo
  • LessThan
  • LessthanEqualTo
  • Like
  • NotEqualTo
  • NullCheck

Parameters

The following table outlines the parameters for each supported operation.

Table 5- Supported Parameters
Operation Parameter Accepted Values
DescribeRecord typeName csw:Record, csw:SummaryRecord, csw:BriefRecord
outputFormat text/xml, application/xml
GetRecords typeNames csw:Record
outputFormat text/xml, application/xml
outputSchema http://www.opengis.net/cat/csw/2.0.2 http://www.isotc211.org/2005/gmd
resultType results, hits, validate
ElementSetName summary, brief, full
constraintLanguage Filter
GetRecordById ElementSetName summary, brief, full
outputFormat text/xml, application/xml
outputSchema http://www.opengis.net/cat/csw/2.0.2 http://www.isotc211.org/2005/gmd
service CSW, http://www.opengis.net/cat/csw/2.0.2
version 2.0.2
PostEncoding XML

Returnables

For the csw:Record output schema, the records returned contain a selection of the core returnables, of which the subset is dependent on the element set. When request=GetRecordById, outputSchema=original, and ElementSetName=full, the geoportal CS-W interface returns the original metadata document as it was published to the geoportal. For the gmd:MD_Metadata output schema, the records returned contain a selection of ISO metadata elements, of which the subset is dependent on the element set as defined in the OGC CSW ISO Application Profile.

Table 6 - Returnable Properties
Element Set Returnables
brief dc:identifier, dc:title, dc:type, ows:Envelope
summary dc:identifier, dc:title, dc:type, dc:format, ows:Envelope, dc:subject, dct:modified, dc:abstract
full dc:identifier, dc:title, dc:type, ows:Envelope, dc:subject, dct:modified, dc:abstract, dct:references

Sample Requests

This section includes sample requests.

GetCapabilities

For the geoportal CS-W service GetCapabilities, the KVP, POST, and SOAP requests are supported.

KVP ?REQUEST=GetCapabilities&SERVICE=CSW&version=2.0.2
POST <csw:getcapabilities xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" service="CSW" xmlns="http://www.opengis.net/ows"> </csw:getcapabilities>
SOAP <csw:getcapabilities xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" service="CSW" xmlns="http://www.opengis.net/ows"> </csw:getcapabilities>

DescribeRecord

KVP ?REQUEST=DescribeRecord&service=CSW&version=2.0.0
POST <csw:describerecord service="CSW" version="2.0.2" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"></csw:describerecord>
SOAP <csw:describerecord service="CSW" version="2.0.2" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"> </csw:describerecord>

GetRecords

A GetRecords request requires a constraint language and since the geoportal CS-W service doesn't support CQL (Common Query Language), only XML Filter with POST style requests are supported.

Anytext
KVP http://gptogc.esri.com/geoportal/csw?request=getRecords&service=CSW&startPosition=1&maxRecords=10&resultType=results&elementSetName=full&outputFormat=application/xml&outputschema=http://www.isotc211.org/2005/gmd&constraintLanguage=Filter&Constraint=%3Cogc:Filter%3E%3Cogc:Overlaps%3E%3Cogc:PropertyName%3Eows:BoundingBox%3C/ogc:PropertyName%3E%3Cgml:Envelope%3E%3Cgml:lowerCorner%3E-90%20-180%3C/gml:lowerCorner%3E%3Cgml:upperCorner%3E90%2090%3C/gml:upperCorner%3E%3C/gml:Envelope%3E%3C/ogc:Overlaps%3E%3C/ogc:Filter%3E&namespace=xmlns(gml=http://www.opengis.net/gml),xmlns(ogc=http://www.opengis.net/ogc)
POST
<csw:GetRecords xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" version="2.0.2" service="CSW" resultType="results" startPosition="1" maxRecords="10"><csw:Query typeNames="csw:Record" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml"><csw:ElementSetName>full</csw:ElementSetName><csw:Constraint version="1.1.0"><ogc:Filter><ogc:And><ogc:PropertyIsLike wildCard="*" escape="\" singleChar="?"><ogc:PropertyName>AnyText</ogc:PropertyName> <ogc:Literal>data</ogc:Literal></ogc:PropertyIsLike><ogc:PropertyIsEqualTo> <ogc:PropertyName>dc:type</ogc:PropertyName><ogc:Literal>liveData</ogc:Literal> </ogc:PropertyIsEqualTo> <ogc:PropertyIsEqualTo><ogc:PropertyName>dc:subject</ogc:PropertyName> <ogc:Literal>imageryBaseMapsEarthCover</ogc:Literal></ogc:PropertyIsEqualTo> <ogc:BBOX> <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName><gml:Envelope><gml:lowerCorner>-118.3 32.1</gml:lowerCorner> <gml:upperCorner>-87.1 45.2</gml:upperCorner></gml:Envelope></ogc:BBOX></ogc:And> </ogc:Filter></csw:Constraint></csw:Query></csw:GetRecords>
SOAP
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:GetRecords
     xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
     version="2.0.2"
     service="CSW"
     resultType="results"
     startPosition="1"
     maxRecords="10">
      <csw:Query
       typeNames="csw:Record"
       xmlns:ogc="http://www.opengis.net/ogc"
       xmlns:gml="http://www.opengis.net/gml">
        <csw:ElementSetName>full</csw:elementsetname>
        <csw:Constraint version="1.1.0"> 
          <ogc:Filter>
            <ogc:And>
              <ogc:PropertyIsLike
               wildCard="*"
               escape="\" 
               singleChar="?">
                <ogc:PropertyName>AnyText</ogc:propertyname>
                <ogc:Literal>data</ogc:literal>
              </ogc:propertyislike>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>dc:type</ogc:propertyname>
                <ogc:Literal>liveData</ogc:literal>
              </ogc:propertyisequalto>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>dc:subject</ogc:propertyname>
                <ogc:Literal>imageryBaseMapsEarthCover</ogc:literal>
              </ogc:propertyisequalto>
              <ogc:BBOX>
                <ogc:PropertyName>ows:BoundingBox</ogc:propertyname>
                <gml:Envelope>
                  <gml:lowerCorner>-118.3 32.1</gml:lowercorner>
                  <gml:upperCorner>-87.1 45.2</gml:uppercorner>
                </gml:envelope>
              </ogc:bbox>
            </ogc:and>
          </ogc:filter>
        </csw:constraint>
      </csw:query>
    </csw:getrecords>
  </soap-env:body>
</soap-env:envelope>
Title
KVP N/A
POST
<?xml version="1.0" encoding="UTF-8"?>
<csw:GetRecords
 xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
 version="2.0.2"
 service="CSW"
 resultType="results"
 startPosition="1"
 maxRecords="10">
  <csw:Query
   typeNames="csw:Record"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:gml="http://www.opengis.net/gml"> 
    <csw:ElementSetName>full</csw:elementsetname>
    <csw:Constraint version="1.1.0">
      <ogc:Filter> 
        <ogc:PropertyIsLike
         wildCard="*"
         escape="\"
         singleChar="?">
          <ogc:PropertyName>dc:title</ogc:propertyname>
          <ogc:Literal>Sample Document</ogc:literal> 
        </ogc:propertyislike>
      </ogc:filter>
      </csw:constraint>
    <ogc:SortBy>
      <ogc:SortProperty> 
        <ogc:PropertyName>dc:title</ogc:propertyname>
        <ogc:SortOrder>ASC</ogc:sortorder>
      </ogc:sortproperty> 
    </ogc:sortby>
  </csw:query> 
</csw:getrecords>
SOAP
<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:GetRecords
     xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
     version="2.0.2"
     service="CSW"
     resultType="results"
     startPosition="1"
     maxRecords="10">
      <csw:Query
       typeNames="csw:Record"
       xmlns:ogc="http://www.opengis.net/ogc"
       xmlns:gml="http://www.opengis.net/gml">
        <csw:ElementSetName>full</csw:elementsetname>
        <csw:Constraint version="1.1.0">
          <ogc:Filter>
            <ogc:PropertyIsLike
             wildCard="*"
             escape="\"
             singleChar="?">
              <ogc:PropertyName>dc:title</ogc:propertyname>
              <ogc:Literal>Sample Document</ogc:literal>
            </ogc:propertyislike>
          </ogc:filter>
        </csw:constraint>
        <ogc:SortBy>
          <ogc:SortProperty>
            <ogc:PropertyName>dc:title</ogc:propertyname>
            <ogc:SortOrder>ASC</ogc:sortorder>
          </ogc:sortproperty>
        </ogc:sortby>
      </csw:query>
    </csw:getrecords>
  </soap-env:body>
</soap-env:envelope>
Subject
KVP N/A
POST
<?xml version="1.0" encoding="UTF-8"?> 
<csw:GetRecords
 xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
 version="2.0.2"
 service="CSW"
 resultType="results"
 startPosition="1"
 maxRecords="10">
  <csw:Query
   typeNames="csw:Record"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:gml="http://www.opengis.net/gml">
    <csw:ElementSetName>full</csw:elementsetname>
    <csw:Constraint version="1.1.0">
      <ogc:Filter>
        <ogc:PropertyIsEqualTo>
          <ogc:PropertyName>dc:subject</ogc:propertyname>
          <ogc:Literal>imageryBaseMapsEarthCover</ogc:literal>
        </ogc:propertyisequalto>
      </ogc:filter>
    </csw:constraint>
    <ogc:SortBy>
      <ogc:SortProperty>
        <ogc:PropertyName>dc:title</ogc:propertyname>
        <ogc:SortOrder>ASC</ogc:sortorder>
      </ogc:sortproperty>
    </ogc:sortby>
  </csw:query>
</csw:getrecords>
SOAP
<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:GetRecords
     xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
     version="2.0.2"
     service="CSW"
     resultType="results"
     startPosition="1"
     maxRecords="10">
      <csw:Query
       typeNames="csw:Record"
       xmlns:ogc="http://www.opengis.net/ogc"
       xmlns:gml="http://www.opengis.net/gml">
        <csw:ElementSetName>full</csw:elementsetname>
        <csw:Constraint version="1.1.0">
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>dc:subject</ogc:propertyname>
              <ogc:Literal>imageryBaseMapsEarthCover</ogc:literal>
            </ogc:propertyisequalto>
          </ogc:filter>
        </csw:constraint>
        <ogc:SortBy>
          <ogc:SortProperty>
            <ogc:PropertyName>dc:title</ogc:propertyname>
            <ogc:SortOrder>ASC</ogc:sortorder>
          </ogc:sortproperty>
        </ogc:sortby>
      </csw:query>
    </csw:getrecords>
  </soap-env:body>
</soap-env:envelope>
Modified
KVP N/A
POST
<?xml version="1.0" encoding="UTF-8"?> 
<csw:GetRecords
 xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
 version="2.0.2"
 service="CSW"
 resultType="results"
 startPosition="1" maxRecords="10">
  <csw:Query
   typeNames="csw:Record"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:gml="http://www.opengis.net/gml">
    <csw:ElementSetName>full</csw:elementsetname>
    <csw:Constraint version="1.1.0">
      <ogc:Filter>
        <ogc:PropertyIsGreaterThan>
          <ogc:PropertyName>dct:modified</ogc:propertyname>
          <ogc:Literal>2000-01-01</ogc:literal>
        </ogc:propertyisgreaterthan>
      </ogc:filter>
    </csw:constraint>
    <ogc:SortBy>
      <ogc:SortProperty>
        <ogc:PropertyName>dc:title</ogc:propertyname>
        <ogc:SortOrder>ASC</ogc:sortorder>
      </ogc:sortproperty>
    </ogc:sortby>
  </csw:query>
</csw:getrecords>
SOAP
<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:GetRecords
     xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
     version="2.0.2"
     service="CSW"
     resultType="results"
     startPosition="1"
     maxRecords="10">
      <csw:Query
       typeNames="csw:Record"
       xmlns:ogc="http://www.opengis.net/ogc"
       xmlns:gml="http://www.opengis.net/gml">
        <csw:ElementSetName>full</csw:elementsetname>
        <csw:Constraint version="1.1.0">
          <ogc:Filter> 
            <ogc:PropertyIsGreaterThan>
              <ogc:PropertyName>dct:modified</ogc:propertyname>
              <ogc:Literal>2000-01-01</ogc:literal>
            </ogc:propertyisgreaterthan>
          </ogc:filter>
        </csw:constraint>
        <ogc:SortBy>
          <ogc:SortProperty>
            <ogc:PropertyName>dc:title</ogc:propertyname>
            <ogc:SortOrder>ASC</ogc:sortorder>
          </ogc:sortproperty>
        </ogc:sortby>
      </csw:query>
    </csw:getrecords>
  </soap-env:body>
</soap-env:envelope>
Envelope
KVP N/A
POST
<?xml version="1.0" encoding="UTF-8"?> 
<csw:GetRecords
 xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
 version="2.0.2"
 service="CSW"
 resultType="results"
 startPosition="1"
 maxRecords="10">
  <csw:Query
   typeNames="csw:Record"
   xmlns:ogc="http://www.opengis.net/ogc"
   xmlns:gml="http://www.opengis.net/gml">
    <csw:ElementSetName>full</csw:elementsetname>
    <csw:Constraint version="1.1.0">
      <ogc:Filter>
        <ogc:BBOX>
          <ogc:PropertyName>ows:BoundingBox</ogc:propertyname>
          <gml:Envelope>
            <gml:lowerCorner>-118.3 32.1</gml:lowercorner>
            <gml:upperCorner>-87.1 45.2</gml:uppercorner>
          </gml:envelope>
        </ogc:bbox>
      </ogc:filter>
    </csw:constraint>
    <ogc:SortBy>
      <ogc:SortProperty>
        <ogc:PropertyName>dc:title</ogc:propertyname>
        <ogc:SortOrder>ASC</ogc:sortorder>
      </ogc:sortproperty>
    </ogc:sortby>
  </csw:query>
</csw:getrecords>
SOAP
<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:GetRecords
     xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
     version="2.0.2"
     service="CSW"
     resultType="results"
     startPosition="1"
     maxRecords="10">
      <csw:Query
       typeNames="csw:Record"
       xmlns:ogc="http://www.opengis.net/ogc"
       xmlns:gml="http://www.opengis.net/gml">
        <csw:ElementSetName>full</csw:elementsetname>
        <csw:Constraint version="1.1.0">
         <ogc:Filter>
           <ogc:BBOX>
             <ogc:PropertyName>ows:BoundingBox</ogc:propertyname>
               <gml:Envelope>
                 <gml:lowerCorner>-118.3 32.1</gml:lowercorner>
                 <gml:upperCorner>-87.1 45.2</gml:uppercorner>
               </gml:envelope>
             </ogc:bbox>
           </ogc:filter>
         </csw:constraint>
         <ogc:SortBy>
           <ogc:SortProperty>
             <ogc:PropertyName>dc:title</ogc:propertyname>
             <ogc:SortOrder>ASC</ogc:sortorder>
           </ogc:sortproperty>
         </ogc:sortby>
       </csw:query>
     </csw:getrecords>
   </soap-env:body>
</soap-env:envelope>

GetRecordById

KVP ?REQUEST=GetRecordById&service=CSW&version=2.0.2&Id=B6A0EC8C-826D-11D8-BADF-080020ECC953
POST
<?xml version="1.0" encoding="UTF-8"?> 
<csw:GetRecordById 
 xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" 
 version="2.0.2" 
 service="CSW">
  <csw:Id>B6A0EC8C-826D-11D8-BADF-080020ECC953</csw:id>
</csw:getrecordbyid>
SOAP
<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:GetRecordById
     xmlns:csw=http://www.opengis.net/cat/csw/2.0.2
     version="2.0.2"
     service="CSW">
      <csw:Id>B6A0EC8C-826D-11D8-BADF-080020ECC953</csw:id>
    </csw:getrecordbyid>
  </soap-env:body>
</soap-env:envelope>

Transaction Insert

POST
<?xml version="1.0" encoding="UTF-8"?>
<csw:Transaction
 service="CSW"
 version="2.0.2"
 xmlns:csw="http://www.opengis.net/cat/csw/2.0.2">
  <csw:Insert> 
    <!-- metadata document is inserted here without xml prolog -->
  </csw:insert>
</csw:transaction>
SOAP
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope 
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:Transaction 
     service="CSW" 
     version="2.0.2" 
     xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"> 
      <csw:Insert>
        <!-- metadata document is inserted here without xml prolog --> 
      </csw:insert>
    </csw:transaction>
  </soap-env:body>
</soap-env:envelope>

Transaction Update

The update request supports replacing entire documents only.

POST
<?xml version="1.0" encoding="UTF-8"?> 
<csw:Transaction 
 service="CSW" 
 version="2.0.2" 
 xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"> 
  <csw:Update>
    <!-- metadata document is inserted here without xml prolog --> 
  </csw:update>
</csw:transaction>
SOAP
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope 
 SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:Transaction 
     service="CSW" 
     version="2.0.2" 
     xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"> 
      <csw:Update>
        <!-- metadata document is inserted here without xml prolog -->
      </csw:update>
    </csw:transaction>
  </soap-env:body>
</soap-env:envelope>

Transaction Delete

The delete request supports deleting entire documents only based on the identifier. The identifiers are returned in the GetRecords response. The workflow is to find records that match certain criteria using the GetRecords request and then delete the returned records based on the dc:identifier.

POST
<?xml version="1.0" encoding="UTF-8"?>
<csw:Transaction 
 service="CSW" version="2.0.2" 
 xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" 
 xmlns:dc="http://www.purl.org/dc/elements/1.1/" 
 xmlns:ogc="http://www.opengis.net/ogc">
  <csw:Delete>
    <csw:Constraint version="2.0.2">
      <ogc:Filter>
        <ogc:PropertyIsEqualTo>
          <ogc:PropertyName>dc:identifier</ogc:propertyname>
          <ogc:Literal>A0522EE9-8C45-4399-8B73-7CCFC2BB9F60</ogc:literal>
        </ogc:propertyisequalto>
      </ogc:filter>
    </csw:constraint>
  </csw:delete>
</csw:transaction>
SOAP
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" 
 xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/1999/XMLSchema">
  <SOAP-ENV:Body>
    <csw:Transaction service="CSW" 
     version="2.0.2" 
     xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
     xmlns:dc="http://www.purl.org/dc/elements/1.1/"
     xmlns:ogc="http://www.opengis.net/ogc">
      <csw:Delete>
        <csw:Constraint version="2.0.2">
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>dc:identifier</ogc:propertyname>
              <ogc:Literal>A0522EE9-8C45-4399-8B73-7CCFC2BB9F60</ogc:literal>
            </ogc:propertyisequalto>
          </ogc:filter>
        </csw:constraint>
      </csw:delete>
    </csw:transaction>
  </soap-env:body>
</soap-env:envelope>

Geoportal WSDL

The wsdl associated with the geoportal CS-W SOAP endpoints is based upon the OGC example located at http://schemas.opengis.net/csw/2.0.2/examples/wsdl/2.0.2/. The geoportal wsdl files associated with its CS-W SOAP endpoints are stored in the \\geoportal\csw directory, and are the following:

  • http-binding.wsdl
  • kvp-binding.wsdl
  • responses.wsdl
  • service-wsdl.jsp
  • soap-binding.wsdl
  • xml-interfaces.wsdl
Clone this wiki locally