GetCapabilities request/response
These is the structure of a CSW GetCapabilities request:
or its POST counterpart:
<?xml version="1.0" encoding="UTF-8"?>
<csw:GetCapabilities
service="CSW"
xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
xmlns:ows="http://www.opengis.net/ows"
>
<ows:AcceptVersions>
<ows:Version>2.0.2</ows:Version>
</ows:AcceptVersions>
<ows:AcceptFormats>
<ows:OutputFormat>application/xml</ows:OutputFormat>
</ows:AcceptFormats>
</csw:GetCapabilities>
Expected response is something like:
<?xml version="1.0" encoding="UTF-8"?>
<csw:Capabilities
version="2.0.2"
xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
xmlns:gml="http://www.opengis.net/gml"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:ows="http://www.opengis.net/ows"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd">
<ows:ServiceIdentification>
<ows:Title />
<ows:Abstract />
<ows:Keywords>
<!-- Keywords are automatically added by GeoNetwork
according to catalogue content. -->
<ows:Keyword>Global</ows:Keyword>
<ows:Keyword>watersheds</ows:Keyword>
<ows:Keyword>Biology</ows:Keyword>
<ows:Keyword>water resources</ows:Keyword>
<ows:Keyword>endangered plant species</ows:Keyword>
<ows:Keyword>Africa</ows:Keyword>
<ows:Keyword>Eurasia</ows:Keyword>
<ows:Keyword>endangered animal species</ows:Keyword>
<ows:Keyword>Antarctic ecosystem</ows:Keyword>
<ows:Keyword>AWRD</ows:Keyword>
<ows:Type>theme</ows:Type>
</ows:Keywords>
<ows:ServiceType>CSW</ows:ServiceType>
<ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>
<ows:Fees />
<ows:AccessConstraints />
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>GeoNetwork opensource</ows:ProviderName>
<ows:ProviderSite xlink:href="http://localhost:8080/geonetwork" />
<ows:ServiceContact>
<ows:IndividualName />
<ows:PositionName />
<ows:ContactInfo>
<ows:Phone>
<ows:Voice />
<ows:Facsimile />
</ows:Phone>
<ows:Address>
<ows:DeliveryPoint />
<ows:City />
<ows:AdministrativeArea />
<ows:PostalCode />
<ows:Country />
<ows:ElectronicMailAddress />
</ows:Address>
<ows:HoursOfService />
<ows:ContactInstructions />
</ows:ContactInfo>
<ows:Role />
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
<ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="sections">
<ows:Value>ServiceIdentification</ows:Value>
<ows:Value>ServiceProvider</ows:Value>
<ows:Value>OperationsMetadata</ows:Value>
<ows:Value>Filter_Capabilities</ows:Value>
</ows:Parameter>
<ows:Constraint name="PostEncoding">
<ows:Value>XML</ows:Value>
</ows:Constraint>
</ows:Operation>
<ows:Operation name="DescribeRecord">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
<ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw">
<ows:Constraint name="PostEncoding">
<ows:Value>XML</ows:Value>
<ows:Value>SOAP</ows:Value>
</ows:Constraint>
</ows:Post>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="typeName">
<ows:Value>csw:Record</ows:Value>
<ows:Value>gmd:MD_Metadata</ows:Value>
</ows:Parameter>
<ows:Parameter name="outputFormat">
<ows:Value>application/xml</ows:Value>
</ows:Parameter>
<ows:Parameter name="schemaLanguage">
<ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>
</ows:Parameter>
<ows:Parameter name="typeName">
<ows:Value>csw:Record</ows:Value>
<ows:Value>gmd:MD_Metadata</ows:Value>
</ows:Parameter>
<ows:Constraint name="PostEncoding">
<ows:Value>XML</ows:Value>
</ows:Constraint>
</ows:Operation>
<ows:Operation name="GetDomain">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
<ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="GetRecords">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
<ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw">
<ows:Constraint name="PostEncoding">
<ows:Value>XML</ows:Value>
<ows:Value>SOAP</ows:Value>
</ows:Constraint>
</ows:Post>
</ows:HTTP>
</ows:DCP>
<!-- FIXME : Gets it from enum or conf -->
<ows:Parameter name="resultType">
<ows:Value>hits</ows:Value>
<ows:Value>results</ows:Value>
<ows:Value>validate</ows:Value>
</ows:Parameter>
<ows:Parameter name="outputFormat">
<ows:Value>application/xml</ows:Value>
</ows:Parameter>
<ows:Parameter name="outputSchema">
<ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
<ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
</ows:Parameter>
<ows:Parameter name="typeNames">
<ows:Value>csw:Record</ows:Value>
<ows:Value>gmd:MD_Metadata</ows:Value>
</ows:Parameter>
<ows:Parameter name="CONSTRAINTLANGUAGE">
<ows:Value>FILTER</ows:Value>
<ows:Value>CQL_TEXT</ows:Value>
</ows:Parameter>
<ows:Constraint name="PostEncoding">
<ows:Value>XML</ows:Value>
</ows:Constraint>
<ows:Constraint name="SupportedISOQueryables">
<ows:Value>Operation</ows:Value>
<ows:Value>Format</ows:Value>
<ows:Value>OrganisationName</ows:Value>
<ows:Value>Type</ows:Value>
<ows:Value>ServiceType</ows:Value>
<ows:Value>DistanceValue</ows:Value>
<ows:Value>ResourceLanguage</ows:Value>
<ows:Value>RevisionDate</ows:Value>
<ows:Value>OperatesOn</ows:Value>
<ows:Value>GeographicDescriptionCode</ows:Value>
<ows:Value>AnyText</ows:Value>
<ows:Value>Modified</ows:Value>
<ows:Value>PublicationDate</ows:Value>
<ows:Value>ResourceIdentifier</ows:Value>
<ows:Value>ParentIdentifier</ows:Value>
<ows:Value>Identifier</ows:Value>
<ows:Value>CouplingType</ows:Value>
<ows:Value>TopicCategory</ows:Value>
<ows:Value>OperatesOnIdentifier</ows:Value>
<ows:Value>ServiceTypeVersion</ows:Value>
<ows:Value>TempExtent_end</ows:Value>
<ows:Value>Subject</ows:Value>
<ows:Value>CreationDate</ows:Value>
<ows:Value>OperatesOnName</ows:Value>
<ows:Value>Title</ows:Value>
<ows:Value>DistanceUOM</ows:Value>
<ows:Value>Denominator</ows:Value>
<ows:Value>AlternateTitle</ows:Value>
<ows:Value>Language</ows:Value>
<ows:Value>TempExtent_begin</ows:Value>
<ows:Value>HasSecurityConstraints</ows:Value>
<ows:Value>KeywordType</ows:Value>
<ows:Value>Abstract</ows:Value>
</ows:Constraint>
<ows:Constraint name="AdditionalQueryables">
<ows:Value>SpecificationDate</ows:Value>
<ows:Value>ConditionApplyingToAccessAndUse</ows:Value>
<ows:Value>AccessConstraints</ows:Value>
<ows:Value>MetadataPointOfContact</ows:Value>
<ows:Value>SpecificationDateType</ows:Value>
<ows:Value>Classification</ows:Value>
<ows:Value>OtherConstraints</ows:Value>
<ows:Value>Degree</ows:Value>
<ows:Value>Lineage</ows:Value>
<ows:Value>SpecificationTitle</ows:Value>
</ows:Constraint>
</ows:Operation>
<ows:Operation name="GetRecordById">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
<ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw">
<ows:Constraint name="PostEncoding">
<ows:Value>XML</ows:Value>
<ows:Value>SOAP</ows:Value>
</ows:Constraint>
</ows:Post>
</ows:HTTP>
</ows:DCP>
<ows:Parameter name="outputSchema">
<ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
<ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
</ows:Parameter>
<ows:Parameter name="outputFormat">
<ows:Value>application/xml</ows:Value>
</ows:Parameter>
<ows:Parameter name="resultType">
<ows:Value>hits</ows:Value>
<ows:Value>results</ows:Value>
<ows:Value>validate</ows:Value>
</ows:Parameter>
<ows:Parameter name="ElementSetName">
<ows:Value>brief</ows:Value>
<ows:Value>summary</ows:Value>
<ows:Value>full</ows:Value>
</ows:Parameter>
<ows:Constraint name="PostEncoding">
<ows:Value>XML</ows:Value>
</ows:Constraint>
</ows:Operation>
<ows:Operation name="Transaction">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
<ows:Post xlink:href="http://localhost:8080/geonetwork/srv/en/csw" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<!--
<ows:Operation name="Harvest">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="http://$HOST:$PORT$SERVLET/srv/en/csw" />
<ows:Post xlink:href="http://$HOST:$PORT$SERVLET/srv/en/csw" />
</ows:HTTP>
</ows:DCP>
</ows:Operation>
-->
<ows:Parameter name="service">
<ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>
</ows:Parameter>
<ows:Parameter name="version">
<ows:Value>2.0.2</ows:Value>
</ows:Parameter>
<ows:Constraint name="IsoProfiles">
<ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>
</ows:Constraint>
<ows:Constraint name="PostEncoding">
<ows:Value>SOAP</ows:Value>
</ows:Constraint>
</ows:OperationsMetadata>
<ogc:Filter_Capabilities>
<ogc:Spatial_Capabilities>
<ogc:GeometryOperands>
<ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>
<ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>
<ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>
<ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>
</ogc:GeometryOperands>
<ogc:SpatialOperators>
<ogc:SpatialOperator name="BBOX" />
<ogc:SpatialOperator name="Equals" />
<ogc:SpatialOperator name="Overlaps" />
<ogc:SpatialOperator name="Disjoint" />
<ogc:SpatialOperator name="Intersects" />
<ogc:SpatialOperator name="Touches" />
<ogc:SpatialOperator name="Crosses" />
<ogc:SpatialOperator name="Within" />
<ogc:SpatialOperator name="Contains" />
<!--
<ogc:SpatialOperator name="Beyond"/>
<ogc:SpatialOperator name="DWithin"/>
The 'SpatialOperator' element can have a GeometryOperands child -->
</ogc:SpatialOperators>
</ogc:Spatial_Capabilities>
<ogc:Scalar_Capabilities>
<ogc:LogicalOperators />
<ogc:ComparisonOperators>
<ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>
<ogc:ComparisonOperator>Like</ogc:ComparisonOperator>
<ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>
<ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>
<ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>
<ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>
<ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>
<ogc:ComparisonOperator>Between</ogc:ComparisonOperator>
<ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>
<!-- FIXME : Check NullCheck operation is available -->
</ogc:ComparisonOperators>
</ogc:Scalar_Capabilities>
<ogc:Id_Capabilities>
<ogc:EID />
<ogc:FID />
</ogc:Id_Capabilities>
</ogc:Filter_Capabilities>
</csw:Capabilities>
