Skip To Content

Catalog Service

Geoportal Catalog Service

If the Geoportal was a car, the Geoportal Catalog Service would be its engine, controlling other components, managing transactions, and providing the central interface for the discovery, publishing, and validation of metadata. Starting at version 9.3, the Geoportal included 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
where
  • serverName is the name of the geoportal web server
  • port is the geoportal's port number
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 capabilities of the Geoportal CS-W implementation will be described and sample requests and responses included in the sections below. See Geoportal WSDL for information about the web service definition files.

Details of the CS-W Interface

  1. 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 CS-W Operations

    Operation ObligationSupportedBinding

    GetCapabilities

    mandatory

    yes

    KVP+POST+SOAP

    DescribeRecord

    mandatory

    yes

    KVP+POST+SOAP

    GetRecords

    mandatory

    yes

    KVP+POST+SOAP

    GetRecordById

    optional

    yes

    KVP+POST+SOAP

    GetDomain

    optional

    No

    N/A

    Harvest

    optional

    No

    N/A

    Transaction

    optional

    yes

    POST+SOAP

    For each of the supported operations, the Geoportal CS-W implementation supports KVP, POST, and SOAP implementations
  2. 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

    PrefixNamespace URISpecification

    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

  3. 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

    NameAliasesDefinitionData Type Allowed OGC Property FiltersMapping 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: west: /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 "How Lucene Indexing Works" section 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

  4. 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 PredicateGeoportal 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
  5. COMPARISON OPERATORS: Comparison operators are included in a csw:GetRecord request:
    • Between
    • EqualTo
    • GreaterThan
    • GreaterThanEqualTo
    • LessThan
    • LessthanEqualTo
    • Like
    • NotEqualTo
    • NullCheck
  6. 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

  7. 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 SetReturnables

    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.

  1. GetCapabilities: Both KVP, POST, and SOAP requests are supported by the Geoportal CS-W service.

    KVP

    ?REQUEST=GetCapabilities&SERVICE=CSW&version=2.0.2

    POST

    <?xml version="1.0" encoding="UTF-8"?> <csw:GetCapabilities xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" service="CSW" xmlns="http://www.opengis.net/ows"> </csw:GetCapabilities>

    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:GetCapabilities xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" service="CSW" xmlns="http://www.opengis.net/ows"> </csw:GetCapabilities> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

  2. 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

    <?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:DescribeRecord service="CSW" version="2.0.2" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"> </csw:DescribeRecord> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

  3. 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

    N/A

    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

    <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:PropertyIsEqualTo> <ogc:PropertyName>dc:title</ogc:PropertyName> <ogc:Literal>Sample Document</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

    <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:PropertyIsEqualTo> <ogc:PropertyName>dc:title</ogc:PropertyName> <ogc:Literal>Sample Document</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>

    Subject

    KVP

    N/A

    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: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

    <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

    <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

    <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

    <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>

  4. GetRecordById

    KVP

    ?REQUEST=GetRecordById&service=CSW&version=2.0.2&Id=B6A0EC8C-826D-11D8-BADF-080020ECC953

    POST

    <<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>

  5. 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>

  6. 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>

  7. 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 located at http://<host>:<port>/geoportal/csw/service-wsdl.jsp, where <host> is the Geoportal host server, and <port> is the port number. They 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