Proposal 2007-01 : OGC:GetCapabilities harvesting

Date 2007/12/07
Contact(s)  François Prunayre
Last edited

Error: Failed to load processor Timestamp
No macro or processor named 'Timestamp' found

Status Vote passed with all PSC members in favor
Assigned to release Release number, to be determined
Resources Indicate if the required resources are available to complete the proposal

Overview

Use the OGC:GetCapabilities document to produce metadata for services and layers in ISO19119/139 format

  • add metadata of services based on ISO19119 in GeoNetwork.
  • add import XML document functionnality using XSLT stylesheet
  • add harwest WxS GetCapabilities

Proposal Type

  • Type: New functionality
  • App: GeoNetwork
  • Module: Harvester, Metadata Import
  • Other wiki discussions:

Voting History

  • Vote proposed : 20080311
  • Vote passed: 20080326
    • Jeroen Ticheler +1
    • Andrea Carboni +1
    • Patrizia Monteduro +1
    • Emanuele Tajariol +1
    • Francois Prunayre +1
    • Simon Pigot +1
    • Archie Warnock +1

Other votes:

  • Mathieu +1
  • Claudia +1
  • Myunghwa +1 (Working on adding WPS Capabilities harvesting)

Uses cases

  • UC1 : Create metadata using copy/paste the GetCapabilities document of a WxS service (i.e. Create a full ISO19119 MD based on a GetCapabilities request)
  • UC2 : Harvest metadata from a WxS service (i.e. Create a full ISO19119 MD based on a GetCapabilities request, Try to add thumbnails for WMS layers metadata)
  • (Not implemented) UC3 : Update Bbox section of a dataset metadata based on WMS GetCapabilities info (i.e. Update part of MD based on a Request)

Import GetCapabilities document

GeoNetworkImportUC.png

Harvest GetCapabilities document

GeoNetworkHarvestUC.png

Parameters

  • Input parameter : URL of the service for which to create metadata
  • Ouput parameter :
    • ISO19119 metadata xml file to be load into GeoNetwork
    • ISO19139 metadata for each layers of the services
    • (optional) thumbnails

GUI

Import

GeoNetworkImport.png

Harvesting

GUI for harvesting configuration sor OGC services

Mapping

Service

OGC Service supported :

  • WMS 1.0.0
  • WMS 1.1.1
  • WCS 1.0.0
  • WFS 1.0.0
  • WFS 1.1.0

Namespaces :

  • xmlns:wfs="http://www.opengis.net/wfs"
  • xmlns:ows="http://www.opengis.net/ows"
  • xmlns:wcs="http://www.opengis.net/wcs"

Root element:

  • WMS = WMT_MS_Capabilities
  • WFS = wfs:WFT_MS_Capabilities
  • WCS = wcs:WCS_Capabilities
  • Service metadata /gmd:MD_Metadata
  • Service Identfication /gmd:identificationInfo/srv:SV_ServiceIdentification

Element ISO19119 equivalent Service type GetCapabilities element Note Agreement
Service metadata
Identifier /gmd:fileIdentifier/gco:CharacterString WFS 1.1.0 //wfs:GetCapabilities/wfs:DCPType/wfs:HTTP/wfs:Get/@onlineResource + @version Service url + version
WFS 1.0.0 //ows:Operation[@name='GetCapabilities']/ows:DCP/ows:HTTP/ows:Get/@xlink:href + @version
WMS //GetCapabilities//OnlineResource[1]/@xlink:href + @version
WCS //wcs:GetCapabilities//wcs:OnlineResource[1]/@xlink:href + @version
Language /gmd:language/gco:characterString « eng » Default value « eng »
CharacterSet? /gmd:CharacterSet/gmd:MD_CharacterSetCode « utf8 »
Contact /gmd:contact cf contact mapping
Date stamp /gmd:dateStamp/gco:DateTime Harvesting/Import? date
Standard name /gmd:metadataStandardName/gco:CharacterString « ISO 19119/2005 »
Standard version /gmd:metadataStandardVertsion/gco:CharacterString « 1.0 »
Service Identfication
Title /gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString WFS 1.1.0 ows:ServiceIdentification/ows:Title
WFS 1.0.0 wfs:Service/wfs:Title
WMS Service/Title?
WCS wcs:Service/wcs:label
Date /gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:dateTime
Abstract /gmd:abstract/gco:CharacterString WFS 1.1.0 ows:ServiceIdentification/ows:Abstract
WFS 1.0.0 wfs:Service/wfs:Abstract
WMS Service/Abstract?
WCS wcs:Service/wcs:description
Status /gmd:status/gmd:MD_ProgressCode « Completed »
Contact /gmd:pointOfContact cf contact mapping
Keyword /gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString WFS 1.1.0 /ows:keywords/ows:Keyword « theme » for type
WFS 1.0.0 /wfs:Keywords/wfs:Keywords
WMS /KeywordList/Keyword
WCS /wcs:keywords/wcs:keyword
Topic Category /gmd:topicCategory/gmd:MD_TopicCategoryCode User input
Service type /srv:serviceType/gco:LocalName codeSpace="www.w3c.org" WFS 1.1.0 « OGC:WFS » user input
WFS 1.0.0 « OGC:WFS »
WMS « OGC:WMS »
WCS « OGC:WCS »
Service version /srv:serviceTypeVersion/gco:CharacterString /ROOT/@version eg. « 1.0.0 »
Fees /srv:accessProperties/gmd:MD_StandardOrderProcess/gmd:fees/gco:CharacterString WFS 1.1.0 /ows:Fees
WFS 1.0.0 /wfs:Fees
WMS /Fees
WCS /wcs:Fees
AccessConstraint /gmd:resourceConstraints/gmd:MD_Constraints/gmd:useLimitation WFS 1.1.0 /ows:AccessConstraints
WFS 1.0.0 /wfs:AccessConstraints
WMS /AccessConstraints
WCS /wcs:AccessConstraints
Operations /srv:containsOperations/srv:SV_OperationMetadata/srv:operationName/gco:CharacterString WFS 1.1.0 /ows:OperationsMetadata/* cf mapping on operation
WFS 1.0.0 /wfs:Capability/wfs:Request/*
WMS /Capability/Request/*
WCS /wcs:Capability/wcs:Request/*
OperatesOn /srv:operatesOn/gmd:MD_DataIdentification/@uuidref WFS 1.1.0 metadata uuid for generated layer/coverage/featuretype metadata
WFS 1.0.0
WMS
WCS
Bounding box /srv:SV_ServiceIdentification/srv:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox WFS 1.1.0 math:min(//ows:WGS84BoundingBox/ows:LowerCorner / UpperCorner)
WFS 1.0.0 math:min(//wfs:LatLongBoundingBox/@minx)
WMS math:min(//LatLonBoundingBox/@minx)
WCS math:min(//wcs:lonLatEnvelope/gml:pos[1 / 2])
CRS referenceSystemInfo/MD_ReferenceSystem/referenceSystemIdentifier/RS_Identifier/code 4326 if available if not the first one
Status /srv:SV_ServiceIdentification/status/MD_ProgressCode « completed »
dataQualityInfo gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode codeListValue="service"

Link between data and service:

<srv:operatesOn>
        <gmd:MD_DataIdentification uuid='identifier' xlink:href="link to xml document" xlink:title="Layer description"/>
</srv:operatesOn>

Data

Root element:

  • WMS = WMT_MS_Capabilities/Capability/Layer
  • WFS = wfs:WFS_Capabilities/wfs:FeatureTypeList/wfs:FeatureType
  • WCS = wcs:WCS_Capabilities/wcs:ContentMetadata/wcs:CoverageOfferingBrief
  • Data metadata root node = /gmd:MD_Metadata
  • Layer identification node = gmd:identificationInfo/srv:SV_ServiceIdentification
  • Distribution node = gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource
  • Data quality node = gmd:dataQualityInfo/gmd:DQ_DataQuality
  • Projection node = gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier
Element ISO19115 equivalent Service type GetCapabilities element Note
Service metadata
Identifier /gmd:fileIdentifier/gco:CharacterString uuid
Language /gmd:language/gco:characterString « eng » Default « eng »
CharacterSet /gmd:CharacterSet/gmd:MD_CharacterSetCode « utf8 »
Contact /gmd:contact cf contact mapping
Date stamp /gmd:dateStamp/gco:DateTime Harvesting/import date
Standard name /gmd:metadataStandardName/gco:CharacterString « ISO 19115:2003/19139 »
Standard version /gmd:metadataStandardVersion/gco:CharacterString « 1.0 »
Layer identification
Title /gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString WFS 1.1.0 /wfs:FeatureType/wfs:Title
WFS 1.0.0 /wfs:FeatureType/wfs:Title
WMS /Layer/Title
WCS /wcs:CoverageOfferingBrief/wcs:label
Date /gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:dateTime
Abstract /gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString WFS 1.1.0 /wfs:FeatureType/wfs:Abstract
WFS 1.0.0
WMS /Layer/Abstract
WCS /wcs:CoverageOfferingBrief/wcs:Description
LatLonBoundingBox /gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/ gmd:westBoundLongitude|gmd:eastBoundLongitude|gmd:southBoundLatitude|gmd:northBoundLatitude/gco:Decimal //ows:WGS84BoundingBox/ows:LowerCorner / UpperCorner
WFS 1.0.0 math:min(//wfs:LatLongBoundingBox/@minx
WMS //LatLonBoundingBox/@minx
WCS //wcs:lonLatEnvelope/gml:pos[1 / 2]
Status /gmd:status/gmd:MD_ProgressCode « Completed »
Contact /gmd:pointOfContact cf contact mapping
spatialRepresentationType /gmd:spatialRepresentationType/gmd:MD_SpatialRepresentationTypeCode WFS codeListValue="vector"
WCS codeListValue="grid"
Scale /gmd:spatialResolution/gmd:MD_Resolution/gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator/gco:Integer WMS /Layer/MinScaleDenominator + MaxScaleDenominator
Topic Category /gmd:topicCategory/gmd:MD_TopicCategoryCode User input
Projection
/gmd:code/gco:CharacterString 4326 if available if not the first one
Distribution
URL /gmd:linkage/gmd:URL WFS 1.1.0 //ows:Operation[@name='GetFeature']/ows:DCP/ows:HTTP/ows:Get/@xlink:href
WFS 1.0.0 //wfs:GetFeature/wfs:DCPType/wfs:HTTP/wfs:Get/@onlineResource
WMS //GetMap/DCPType/HTTP/Get/OnlineResource/@xlink:href
WCS //wcs:GetCoverage/wcs:DCPType/wcs:HTTP/wcs:Get/wcs:OnlineResource/@xlink:href
Protocol /gmd:protocol/gco:CharacterString WFS 1.1.0 "OGC:WFS-1.1.0-http-get-feature" mime-type ou liste GeoNetwork
WFS 1.0.0 "OGC:WFS-1.0.0-http-get-feature"
WMS "OGC:WMS-1.1.1-http-get-map"
WCS "OGC:WCS-1.0.0-http-get-coverage"
Name /gmd:name/gco:CharacterString WFS 1.1.0 //wfs:FeatureType/wfs:Name
WFS 1.0.0 //wfs:FeatureType/wfs:Name
WMS /Layer/Name
WCS /wcs:CoverageOfferingBrief/wcs:name
Description /gmd:description/gco:CharacterString WFS 1.1.0 //wfs:FeatureType/wfs:Title
WFS 1.0.0 //wfs:FeatureType/wfs:Title
WMS //Layer/Title
WCS //wcs:CoverageOfferingBrief/wcs:description
Data Quality
Topic /gmd:scope/gmd:DQ_Scope/gmd:level/gmd:MD_ScopeCode « dataset »

Contact

Root element:

  • WMS = WMT_MS_Capabilities/Service/contactInformation/ContactPersonPrimary
  • WFS = wfs:WFS_Capabilities/wfs:Service/wfs:contactInformation/wfs:ContactPerson
  • WCS = wcs:WCS_Capabilities/wcs:Service/wcs:contactInformation/wcs:ContactPerson
Element ISO19115 equivalent Service type GetCapabilities element Note
Name /gmd:individualName/gco:CharacterString WFS 1.1.0 ows:ProviderName
WFS 1.0.0 ContactPerson?
WMS ContactPerson?
WCS wcs:individualName
Organisation /gmd:organisationName/gco:CharacterString WFS 1.1.0 ContactOrganization
WFS 1.0.0 ContactOrganization
WMS ContactOrganization
WCS wcs:organisationName
Position Name /gmd:positionName/gco:CharacterString WFS 1.1.0 ContactPosition
WFS 1.0.0 ContactPosition
WMS ContactPosition
WCS wcs:positionName
Role /gmd:role/gmd:CI_RoleCode « pointOfContact »
Phone gmd:phone/gmd:CI_Telephone
Voice /gmd:voice/gco:CharacterString ContactVoiceTelephone
Fax /gmd:facsim/gco:CharacterString ContactFacsimileTelephone
Address gmd:address/gmd:CI_Address
Delivery point /gmd:deliveryPoint/gco:CharacterString ContactAddress/Address
Administrative /gmd:administrativeArea/gco:CharacterString wMS ContactAddress/StateOrProvince
City /gmd:city/gco:CharacterString WFS 1.1.0 City
WFS 1.0.0 City
WMS City
WCS wcs:address/wcs:city
PostCode /gmd:postalCode/gco:CharacterString WFS 1.1.0 ContactAddress/PostCode
Country /gmd:country/gco:CharacterString WFS 1.1.0 ContactAddress/Country
WCS wcs:address/wcs:country
Email /gmd:electronicMailAddress/gco:CharacterString eMailAdd
WFS 1.0.0 eMailAdd
WMS eMailAdd
WCS wcs:address/wcs:electronicMailAddress

Operation

Root element

  • WMS = Capability/Request/?*
  • WFS 1.0.0 = wfs:Capability/wfs:Request/*
  • WFS 1.1.0 = ows:OperationsMetadata/*
  • WCS = wcs:Capability/wcs:Request/*
  • Identification = /MD_Metadata/srv:SV_ServiceIdentification
  • Operation = /MD_Metadata/srv:SV_ServiceIdentification/srv:containsOperations/srv:SV_OperationMetadata/
Element ISO19119 equivalent Service type GetCapabilities element Note
Identification
Coupling type /srv:couplingType « tight »
Operation
Name /srv:operationName/gco:CharacterString WFS 1.1.0 @name
WFS 1.0.0 name(.)
WMS name(.)
WCS name(.)
DCP /srv:DCP/srv/DCPList if (name(.)='Get' or name(.)='wfs:Get' or name(.)='wcs:Get' or name(.)='ows:Get') "HTTP-GET"
else if (name(.)='Post' or name(.)='wfs:Post' or name(.)='wcs:Post' or name(.)='ows:Post') "HTTP-POST"
else "Webservice"
URL /srv:connectPoint/gmd:CI_OlineRessource/gmd:linkage/gmd:URL WFS 1.1.0 ..//ows:Get[1]/@xlink:href
WFS 1.0.0 ..//wfs:OnlineResource[1]/@xlink:href
WMS ..//OnlineResource[1]/@xlink:href
WCS ..//wcs:OnlineResource[1]/@xlink:href
Protocol /srv:connectPoint/gmd:CI_OlineRessource/gmd:protocol/gco:CharacterString WFS 1.1.0 ows:Parameter[@name='AcceptFormats']/ows:Value
WFS 1.0.0 wfs:Format
WMS Format
WCS none
Function /srv:connectPoint/gmd:CI_OlineRessource/gmd:function « Information »
coupledResource srv:coupledResource/srv:SV_CoupledResource/srv:OperationName/srv:identifier For each layer and each operation
Operation name srv:coupledResource/srv:SV_CoupledResource/srv:OperationName
Layer id srv:coupledResource/srv:SV_CoupledResource/srv:identifier defined on harvest/import
Layer name srv:coupledResource/srv:SV_CoupledResource/gco:ScopedName layer name on the service

Compatibility Issues

Need an update on Jeeves project (adding one method for XSL transformation with params)

Tests

Harvesting capability has been tested with the following OGC WxS implementation:

  • Mapserver
  • Geoserver

Attachments