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.2where
- serverName is the name of the geoportal web server
- port is the geoportal's port number
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 CS-W Operations
For each of the supported operations, the Geoportal CS-W implementation supports KVP, POST, and SOAP implementationsOperation Obligation Supported Binding 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
- 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: 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
- 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:
- gml:Envelope
- 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: 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>
- 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>
- 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>
- 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>
- 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 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