= 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 #''' || || == 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 === Links === * '''Documents''': * '''Email discussions''': * '''Other wiki discussions''': === Voting History === * Vote proposed by X on Y, result was +/-n (m non-voting members). ---- == 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 [wiki: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: [[Image(target-schema.png)]] 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: [[Image(SOS-Service-Type-option.png)]] 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 [wiki: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 <>, otherwise, use <> || || Contact || gmd:pointOfContact || cf contact mapping (refer [wiki: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 [wiki: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: {{{ }}} 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 <>, otherwise, use <> || || 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)