wiki:proposals/SOSHarvester

Proposal title

Date 2011/05/19
Contact(s) Craig Jones
Last edited
Status draft
Assigned to release Release number, to be determined
Resources Patch available
Ticket # #520

Overview

This proposal is to add an OGC Sensor Observation Service option to the existing OGC WxS Harvester.

This proposal also adds the ability to specify schema specific harvesting for each OGC Service type to the OGC WxS harvester.

Proposal Type

  • Type: Module Change
  • App: GeoNetwork
  • Module: Harvester
  • Documents:
  • Email discussions:
  • Other wiki discussions:

Voting History

  • Vote proposed by Craig Jones on 1st June 2011, result was
    • +1 from Patrizia, Emanuele, Jeroen, Francois, Simon

Motivations

The marine community in Australia is increasingly looking to make use of OGC Sensor Observation services to publish marine data with many services already being made available. The addition of an SOS harvesting option to geonetwork will facilitate the discovery and access of these services via the Australian Oceans Data Network (AODN) by making it a simple process to publish service details to the AODN's service/dataset catalog (the ANZ-MEST/geonetwork) or to contributing catalogs.

Proposal

This proposal adds to the existing OGC WxS harvester. For more details on what this harvester currently does and how it works refer to the existing documentation on this harvester or the original proposal to add this harvester to geonetwork ISO19119impl.

Schema Specific Harvesting

This proposal adds the ability to define schema specific harvesting of OGC WxS GetCapabilities metadata. In particular, the stylesheets to be used to harvest metadata for a particular OGC service type for a particular target output schema are placed in the convert/OGCWxSGetCapabilitiesto19119 directory for the schema or schema plugin. e.g.

For a schema plugin:

  schemaPlugins/iso19139.mcp-1.4/convert/OGCWxSGetCapabilitiesto19119/
    OGCSOSGetCapabilitiesLayer-to-19139.xsl
    OGCSOSGetCapabilities-to-ISO19119_ISO19139.xsl

For one of the core geonetwork schemas:

  xml/schemas/convert/OGCWxSGetCapabilitiesto19119/
    OGCCSWGetCapabilities-to-ISO19119_ISO19139.xsl
    OGCSOSGetCapabilitiesLayer-to-19139.xsl
    OGCSOSGetCapabilities-to-ISO19119_ISO19139.xsl
    OGCWCSGetCapabilitiesLayer-to-19139.xsl
    OGCWCSGetCapabilities-to-ISO19119_ISO19139.xsl
    OGCWFSGetCapabilitiesLayer-to-19139.xsl
    OGCWFSGetCapabilities-to-ISO19119_ISO19139.xsl
    OGCWMSGetCapabilitiesLayer-to-19139.xsl
    OGCWMSGetCapabilities-to-ISO19119_ISO19139.xsl
    OGCWPSGetCapabilities-to-ISO19119_ISO19139.xsl

When a particular OGC Service type is selected in the OGC WxS harvester, all registered schema directories will be scanned to determine which schemas support harvesting metadata for that particular type and the user will be able to select the target schema to use in the harvester:

Schema specific harvesting is also used in the THREDDS and WFS GetFeature harvesters.

SOS GetCapabilities Harvester

This proposal also adds the option to harvest metadata from an OGC Sensor Observation Service GetCapabilities response to the OGC WxS Harvester, in particular an OGC Sensor Observation Service compliant with version 1.0.0 of the specification.

Under this proposal "OGC Sensor Observation service (1.0.0)" will be added to list of possible OGC WxS service types that can be harvested using this harvester:

When this option is selected, the harvester will harvest service metadata from the GetCapabilities statement returned from the specified SOS endpoint using the service metadata stylesheet for the selected target schema.

Additionally, if the "Create metadata for layer elements using GetCapabilities information" option is selected, the harvester will harvest observation offering metadata for each Observation Offering listed in the GetCapabilities response using the observation offering metadata stylesheet for the selected target schema.

An iso19119/iso19139 service metadata stylsesheet and a sample iso19115/iso19139 observation offering metadata stylesheet is included with this proposal (we will be using the iso19139.mcp mapping to be made available in the schema plugin for this profile).

The mappings for the included transformations are as follows:

Service Metadata

Element ISO19119 equivalent GetCapabilities element Note
Service metadata
Identifier gmd:fileIdentifier/gco:CharacterString ows:Operation[@name='GetCapabilities']/ows:DCP/ows:HTTP/ows:Get/@xlink:href + @version Uuid generated from Service url + version
Language gmd:language/gco:characterString « eng » User Input. Default value « eng »
CharacterSet gmd:CharacterSet/gmd:MD_CharacterSetCode « utf8 »
HierarchyLevelCode gmd:hierarchyLevel/gmd:MD_ScopeCode codeListValue="service"
Contact gmd:contact cf contact mapping (refer ISO19119impl)
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 »
CRS gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/referenceSystemIdentifier/RS_Identifier/code sos:ObservationOffering/gml:srsName 4326 if available if not the first one
transferOptions gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine ows:OperationsMetadata/ows:Operation[@name='GetCapabilities']/ows:DCP/ows:HTTP/ows:Get/@xlink:href
dataQualityInfo leave blank none
Service Identfication
Title gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString ows:ServiceIdentification/ows:Title
Date gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:dateTime codeListValue=”revision” Harvesting/Import date
Abstract gmd:abstract/gco:CharacterString ows:ServiceIdentification/ows:Abstract
Status gmd:status/gmd:MD_ProgressCode « onGoing » or « completed » if any gml:endPosition/@indeterminatePosition='now' assign <<onGoing>>, otherwise, use <<completed>>
Contact gmd:pointOfContact cf contact mapping (refer ISO19119impl)
Keyword gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString ows:keywords/ows:Keyword « theme » for type
Service type srv:serviceType/gco:LocalName codeSpace="www.w3c.org" « OGC:SOS »
Service version srv:serviceTypeVersion/gco:CharacterString /ROOT/@version eg. « 1.0.0 »
Fees srv:accessProperties/gmd:MD_StandardOrderProcess/gmd:fees/gco:CharacterString ows:Fees
AccessConstraint gmd:resourceConstraints/gmd:MD_Constraints/gmd:useLimitation ows:AccessConstraints
Operations srv:containsOperations/srv:SV_OperationMetadata/srv:operationName/gco:CharacterString ows:OperationsMetadata/* cf mapping on operation (refer ISO19119impl)
OperatesOn srv:operatesOn/gmd:MD_DataIdentification/@uuidref metadata uuid for generated MD for ObservationOffering
Bounding box srv:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox sos:ObservationOffering/gml:boundedBy/gml:Envelope max upper(nw) and lower (se) of lat/lon values on ObOffering envelopes re-projected to WGS84
Temporal extent srv:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent sos:ObservationOffering/sos:time min begin time and max end time of TimePeriods/TimeInstants on ObOffering times

Link between data and service:

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

Root element:

  • SOS = sos:Capabilities/sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering
  • Data metadata root node = /gmd:MD_Metadata
  • Service identification node = gmd:identificationInfo/srv:SV_ServiceIdentification

Observation Offering Metadata

Element ISO19115 equivalent GetCapabilities element Notes
Dataset metadata
Identifier gmd:fileIdentifier/gco:CharacterString « uuid » Random uuid
Language gmd:language/gco:characterString « eng » User Input. Default value « eng »
CharacterSet gmd:CharacterSet/gmd:MD_CharacterSetCode « utf8 »
HierarchyLevelCode gmd:hierarchyLevel/gmd:MD_ScopeCode codeListValue="dataset"
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:metadataStandardVertsion/gco:CharacterString « 1.0 »
CRS gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/referenceSystemIdentifier/RS_Identifier/code gml:srsName
dataQualityInfo leave blank none
Data Identification
Title gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString gml:name[1]
Identifier gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:MD_identifier/gmd:code/(gmx:Anchor|gco:CharacterString) gml:name if gml:name has a codeSpace attribute use gmx:Anchor with href set to the codeSpace URI otherwise use gco:CharacterString
Date gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:dateTime codeListValue=”revision” Harvesting/Import date
Abstract gmd:abstract/gco:CharacterString gml:description
Purpose gmd:purpose/gco:CharacterString sos:intendedApplication Concatenate multiple intended applications into one string separated by ','
Status gmd:status/gmd:MD_ProgressCode « onGoing » or « completed » if gml:endPosition/@indeterminatePosition='now' assign <<onGoing>>, otherwise, use <<completed>>
Contact gmd:pointOfContact cf contact mapping
Keywords (theme) gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString sos:observedProperty gmd:MD_KeywordTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode" codeListValue="theme"
Keywords (place) gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString sos:featureOfInterest gmd:MD_KeywordTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode" codeListValue="place"
Topic Category gmd:topicCategory/gmd:MD_TopicCategoryCode User Input
Bounding box gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox gml:boundedBy/gml:Envelope upper(nw) and lower (se) of lat/lon values on Observation Offering envelopes re-projected to WGS84
Temporal extent gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent sos:time
Sensor mcp:sensor/xlink:href sos:procedure
Distribution
HTTP Get endpoint gmd:linkage/gmd:URL ows:Operation[@name='GetObservation']/ows:DCP/ows:HTTP/ows:Post/@xlink:href
gmd:protocol/gco:CharacterString « OGC:SOS-1.0.0-http-get-observation »
gmd:name/gco:CharacterString gml:name[1] Name of the observation offering
gmd:description:gcoCharacterString gml:description
HTTP Post endpoint gmd:linkage/gmd:URL ows:Operation[@name='GetObservation']/ows:DCP/ows:HTTP/ows:Post/@xlink:href
gmd:protocol/gco:CharacterString « OGC:SOS-1.0.0-http-post-observation »
gmd:name/gco:CharacterString gml:name[1] Name of the observation offering
gmd:description:gcoCharacterString gml:description
GetObservation requests for each response format gmd:linkage/gmd:URL ows:Operation[@name='GetObservation']/ows:DCP/ows:HTTP/ows:Get/@xlink:href/ + sos:observedProperty/@xlink:href + sos:responseFormat One online resource section for each possible response format
gmd:protocol/gco:CharacterString « OGC:SOS-1.0.0-http-get-observation »
gmd:name/gco:CharacterString gml:name[1] + ' (' + sos:responseFormat + ')' Name of the observation offering + response format
gmd:description:gcoCharacterString gml:description

Root element:

  • SOS = sos:Capabilities/sos:Contents/sos:ObservationOfferingList/sos:ObservationOffering
  • Data metadata root node = /gmd:MD_Metadata
  • Identification node = gmd:identificationInfo/gmd:MD_DataIdentification
  • Distribution node = gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource

Backwards Compatibility Issues

None that I can see

New libraries added

No new libraries required

Risks

Participants

  • Vitor Gonçalves - initial SOS Service to iso19119/iso19139 stylesheet
  • Kate Roberts - mappings/review
  • Simon Pigot - review
  • Craig Jones - observation offering mapping/code (Marine and Climate Data Discovery and Access Project (MACDDAP)
Last modified 13 years ago Last modified on 06/13/11 18:33:01

Attachments (2)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.