Changeset 7958


Ignore:
Timestamp:
23/08/11 12:49:59 (8 years ago)
Author:
sdonegan
Message:

Update the xq to generate Gemini compliant iso metadata - various updates but should produce output that can validate agaianst the Gemini2 schematron. Should also work for UKSSDC data too.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ndgCommon/trunk/ndg/common/xmldb/xquery/atom2NERCiso.xq

    r7916 r7958  
    66Steve Donegan, CEDA RALSpace, 20/10/2010 
    77 
     807/02/11: Update conversions to better 0.7+ DMS and to take into account updated ATOM content as part of CEDA DSR procedures (note 1) 
     922/08/11: Update so can validate in the interim against the Gemini2 schematron.  Note requires changes to imported isoUtilities and also differentiates between 
     10                gml namespaces for atom (old) and DMS (new -"3.2").  Also added support for new NERC keywords.  Note guidance states that emails are non-nillable so must 
     11                ensure emails are always provided - in thise case the ceda helpdesk address 
     12 
    813Notes: 
    914    1. Note georss and gml namespaces changed to match those present in CEDA ATOMs in bora.badc.rl.ac.uk eXist database 
     15     
    1016:) 
    1117(: eXist library :) 
     
    2935declare namespace gco='http://www.isotc211.org/2005/gco'; 
    3036declare namespace gmx='http://www.isotc211.org/2005/gmx'; 
    31 declare namespace gml='http://www.opengis.net/gml'; 
     37declare namespace gml='http://www.opengis.net/gml/3.2'; 
    3238declare namespace xlink='http://www.w3.org/1999/xlink'; 
     39 
     40(: atom uses the old gml namespace so use this when pulling gml elements from atom :) 
     41declare namespace gml_atom='http://www.opengis.net/gml' ; 
     42 
    3343 
    3444(: Keep this in official lib version 
     
    5666declare variable $organisationInfoDir as xs:string := '/db/atoms/resources';  
    5767 
    58 (: Development use only  
     68(: Development use only  BADC  
     69declare variable $targetCollection as xs:string := '/db/atoms/published/'; 
     70declare variable $repositoryIdentifier as xs:string := 'badc.nerc.ac.uk'; 
     71declare variable $localIdentifier as xs:string := 'dataent_12233057970926779'; :) 
     72 
     73(: Development use only  NEODC  
    5974declare variable $targetCollection as xs:string := '/db/atoms/published/'; 
    6075declare variable $repositoryIdentifier as xs:string := 'neodc.nerc.ac.uk'; 
    61 declare variable $localIdentifier as xs:string := 'tag:badc.nerc.ac.uk,2009-12-10:/view/neodc.nerc.ac.uk__ATOM__dataent_12447304699327717'; :) 
    62  
    63 (:Production use only:) 
     76declare variable $localIdentifier as xs:string := 'dataent_11658383444211836'; :) 
     77 
     78(: Development use only  UKSSDC 
     79declare variable $targetCollection as xs:string := '/db/atoms/published/'; 
     80declare variable $repositoryIdentifier as xs:string := 'ukssdc.ac.uk'; 
     81declare variable $localIdentifier as xs:string := 'DE_4be56b6c-ec01-11df-9327-00e081470265';  :) 
     82 
     83(:Production use only :) 
    6484declare variable $targetCollection as xs:string := 'TargetCollection'; 
    6585declare variable $repositoryIdentifier as xs:string := 'RepositoryID'; 
     
    82102 
    83103declare variable $currentDate as xs:string := substring(current-date() cast as xs:string,1,10); 
    84  
    85104 
    86105for $DE in collection($atomCollection)/atom:entry[matches(atom:id, $localIdentifier)] 
     
    307326            (: TODO: CEDA/NERC - is this keyword in a vocab or codelist?/ 
    308327             
    309             UPDATE 14/02/11:yes - use this http://vocab.ndg.nerc.ac.uk/term/N010/0/NDGO0003 - and use new method too.            
     328            UPDATE 23/08/2011: Use the standardised keyword (eventually the pipeline should add this at the MOLES vN level 
     329             
    310330            :) 
    311331            
     
    314334                        element gmd:keyword{ 
    315335                            element gmx:Anchor { 
    316                                 attribute xlink:href {string("http://vocab.ndg.nerc.ac.uk/term/N010/0/")}, 
    317                                  
    318                                 (: use the unknown vocab reference.. this may show up on the portal as an error! :) 
    319                                 attribute xlink:title {string("NDGO0003")}, 
    320                                 string("NERC_DDC") 
     336                                attribute xlink:href {string("http://vocab.ndg.nerc.ac.uk/term/N010/current/NDGO0003")},                                 
     337                                string("Natural Environment Research Council Designated Data Centres") 
    321338                            }                             
    322339                        } 
     
    507524                                     (:TODO: CEDA will need link to this codelist for this element :) 
    508525                                    attribute codeList {'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode'}, 
    509                                     attribute codeListValue {'otherRestictions'}, 
     526                                    attribute codeListValue {'otherRestrictions'}, 
    510527                                    string("otherRestrictions")                         
    511528                                    } 
     
    528545                                     (:TODO: CEDA will need link to this codelist for this element :) 
    529546                                    attribute codeList {'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode'}, 
    530                                     attribute codeListValue {'otherRestictions'}, 
     547                                    attribute codeListValue {'otherRestrictions'}, 
    531548                                    string("otherRestrictions")                         
    532549                                    } 
     
    611628                        return 
    612629                         
    613                             if ((tokenize(string($boundingBox/gml:Envelope/gml:lowerCorner), ' ')[1]="0.0") and (tokenize(string($boundingBox/gml:Envelope/gml:upperCorner), ' ')[1]="0.0") and (tokenize(string($boundingBox/gml:Envelope/gml:lowerCorner), ' ')[2]="0.0") and (tokenize(string($boundingBox/gml:Envelope/gml:upperCorner), ' ')[2]="0.0")) then 
     630                            if ((tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:lowerCorner), ' ')[1]="0.0") and (tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:upperCorner), ' ')[1]="0.0") and (tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:lowerCorner), ' ')[2]="0.0") and (tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:upperCorner), ' ')[2]="0.0")) then 
    614631                             
    615632                                element gmd:geographicElement { 
     
    637654                                } 
    638655                            } 
    639                              
    640656                            else 
    641657                         
     
    644660                                    element gmd:westBoundLongitude { 
    645661                                        element gco:Decimal { 
    646                                              if (ends-with(tokenize(string($boundingBox/gml:Envelope/gml:lowerCorner), ' ')[1],".")) then                                                  
    647                                                  data(substring-before(tokenize(string($boundingBox/gml:Envelope/gml:lowerCorner), ' ')[1],".")) 
     662                                             if (ends-with(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:lowerCorner), ' ')[1],".")) then                                                  
     663                                                 data(substring-before(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:lowerCorner), ' ')[1],".")) 
    648664                                             else 
    649                                                 data(tokenize(string($boundingBox/gml:Envelope/gml:lowerCorner), ' ')[1]) 
     665                                                data(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:lowerCorner), ' ')[1]) 
    650666                                        } 
    651667                                    }, 
    652668                                    element gmd:eastBoundLongitude { 
    653669                                        element gco:Decimal { 
    654                                             if (ends-with(tokenize(string($boundingBox/gml:Envelope/gml:upperCorner), ' ')[1],".")) then                                                  
    655                                                  data(substring-before(tokenize(string($boundingBox/gml:Envelope/gml:upperCorner), ' ')[1],".")) 
     670                                            if (ends-with(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:upperCorner), ' ')[1],".")) then                                                  
     671                                                 data(substring-before(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:upperCorner), ' ')[1],".")) 
    656672                                             else 
    657                                                 data(tokenize(string($boundingBox/gml:Envelope/gml:upperCorner), ' ')[1]) 
     673                                                data(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:upperCorner), ' ')[1]) 
    658674                                         
    659675                                        } 
     
    661677                                    element gmd:southBoundLatitude { 
    662678                                        element gco:Decimal { 
    663                                             if (ends-with(tokenize(string($boundingBox/gml:Envelope/gml:lowerCorner), ' ')[2],".")) then                                                  
    664                                                  data(substring-before(tokenize(string($boundingBox/gml:Envelope/gml:lowerCorner), ' ')[2],".")) 
     679                                            if (ends-with(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:lowerCorner), ' ')[2],".")) then                                                  
     680                                                 data(substring-before(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:lowerCorner), ' ')[2],".")) 
    665681                                             else 
    666                                                 data(tokenize(string($boundingBox/gml:Envelope/gml:lowerCorner), ' ')[2]) 
     682                                                data(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:lowerCorner), ' ')[2]) 
    667683                                         
    668684                                        } 
     
    670686                                    element gmd:northBoundLatitude { 
    671687                                        element gco:Decimal { 
    672                                             if (ends-with(tokenize(string($boundingBox/gml:Envelope/gml:upperCorner), ' ')[2],".")) then                                                  
    673                                                  data(substring-before(tokenize(string($boundingBox/gml:Envelope/gml:upperCorner), ' ')[2],".")) 
     688                                            if (ends-with(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:upperCorner), ' ')[2],".")) then                                                  
     689                                                 data(substring-before(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:upperCorner), ' ')[2],".")) 
    674690                                             else 
    675                                                 data(tokenize(string($boundingBox/gml:Envelope/gml:upperCorner), ' ')[2]) 
     691                                                data(tokenize(string($boundingBox/gml_atom:Envelope/gml_atom:upperCorner), ' ')[2]) 
    676692                                   
    677693                                        } 
     
    895911    
    896912    } 
    897  
     913     
     914 
Note: See TracChangeset for help on using the changeset viewer.