Changeset 7884


Ignore:
Timestamp:
11/02/11 14:38:26 (8 years ago)
Author:
sdonegan
Message:

Further updates to xquery to make even better DMS - includes extraction of useful info out of atom:content CDATA element

File:
1 edited

Legend:

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

    r7879 r7884  
    141141    element gmd:dateStamp { 
    142142        element gco:Date { 
    143             data($DE/atom:updated) 
     143            replace(string($DE/atom:updated),"T|Z"," ") 
    144144        } 
    145145    }, 
     
    274274             
    275275            (: Data Format :- Element #:) 
    276             (:TODO: need to get CEDA to evaluate this properly - codelist/vocab?  :) 
    277             element gmd:resourceFormat { 
    278                 element gmd:MD_Format { 
    279                     element gmd:name { 
    280                         element gco:CharacterString { string("Dataset") } 
    281                     } 
    282                 } 
    283             }, 
     276            (:TODO: need to get CEDA to evaluate this properly - codelist/vocab?   
     277             
     278            UPDATE (11/02/11) : can pull format from the atom:content xhtml section 
     279             
     280            :) 
     281             
     282              for $divContent in $DE/atom:content 
     283                let $content := isolib:extractAtomContent(string("cedacat:formats"),$divContent) 
     284                return 
     285                    if (string-length($content) > 0) then 
     286                       
     287                        element gmd:resourceFormat { 
     288                            element gmd:MD_Format { 
     289                                element gmd:name { 
     290                                    element gco:CharacterString { string($content) } 
     291                                }, 
     292                                element gmd:version { 
     293                                    attribute gco:nilReason {"inapplicable"}  
     294                                } 
     295                            } 
     296                        } 
     297                    else (), (: optional element so only fill if theres summat there :) 
    284298             
    285299            (: Keywords - Element 11 :) 
     
    349363             
    350364            (: Conditions applying to access and use - Element 21 :) 
    351             (: TODO: CEDA doesnt record this in ATOM & its Mandatory.  Hardcode for now :) 
    352             element gmd:resourceConstraints { 
    353                 element gmd:MD_Constraints { 
    354                     element gmd:useLimitation { 
    355                         (:TODO: CEDA - this is free text :) 
    356                         element gco:CharacterString { string("Information not yet available in this format.  Please contact ceda@stfc.ac.uk or refer to the CEDA dataset home page")} 
    357                     } 
    358                 } 
    359             }, 
     365            (: TODO: CEDA doesnt record this in ATOM & its Mandatory.  Hardcode for now 
     366             
     367            UPDATE 11/02/11: This information is now held in the atom:content XHTML - use new function to extract text and place it here.. 
     368             
     369            NOTE - similar info to element 20 accessConstraints and all lumped together in the atom:content so use the same here, but if none is detected put "no conditions apply" 
     370                     
     371            :) 
     372           
     373              for $divContent in $DE/atom:content 
     374                let $content := isolib:extractAtomContent(string("cedacat:access-restricted"),$divContent) 
     375                return 
     376                    if (string-length($content) > 0) then 
     377                                          
     378                        element gmd:resourceConstraints { 
     379                            element gmd:MD_Constraints { 
     380                                element gmd:useLimitation { 
     381                                    element gco:CharacterString {data($content)} 
     382                                } 
     383                            } 
     384                        }                     
     385                    
     386                    else 
     387                    
     388                       (: Can't detect any access restrictions so to be safe use otherRestrictions :) 
     389             
     390                        (: element 20 first :) 
     391                        element gmd:resourceConstraints { 
     392                            element gmd:MD_Constraints { 
     393                                element gmd:useLimitation { 
     394                                    element gco:CharacterString {string("no conditions apply")} 
     395                                } 
     396                            } 
     397                        }, 
    360398             
    361399            (: Limitations on Public Access - Element 20 :)             
    362             (: TODO: CEDA doesnt record this in ATOM - & its Mandatory.  Hardcode for now :) 
    363             element gmd:resourceConstraints { 
    364                 element gmd:MD_LegalConstraints { 
    365                     element gmd:accessConstraints { 
    366                         element gmd:MD_RestrictionCode { 
     400            (: TODO: CEDA doesnt record this in ATOM - & its Mandatory.  Hardcode for now  
     401             
     402            UPDATE 11/02/11: This information is now held in the atom:content XHTML - use new function to extract text and place it here.. 
     403             
     404            (operation notes: if text found, then stick in an appropriate codeList value codeList value -  
     405             
     406            :) 
     407             
     408            for $divContent in $DE/atom:content 
     409                let $content := isolib:extractAtomContent(string("cedacat:access-restricted"),$divContent) 
     410                return 
     411                    if (string-length($content) > 0) then 
     412                                       
     413                        (: element 21 now :) 
     414                        element gmd:resourceConstraints { 
     415                            element gmd:MD_LegalConstraints { 
     416                                element gmd:accessConstraints { 
     417                                    element gmd:MD_RestrictionCode { 
    367418                             
    368                              (:TODO: CEDA will need link to this codelist for this element :) 
    369                             attribute codeList {'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode'}, 
    370                             attribute codeListValue {'TBA'}, 
    371                             string("TO BE FINALISED (contact ceda@stfc.ac.uk)") 
    372                          
    373                         } 
    374                     } 
    375                 } 
    376             }, 
     419                                     (:TODO: CEDA will need link to this codelist for this element :) 
     420                                    attribute codeList {'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode'}, 
     421                                    attribute codeListValue {'otherRestictions'}, 
     422                                    string("otherRestrictions")                         
     423                                    } 
     424                                }, 
     425                                element gmd:otherConstraints { 
     426                                    element gco:CharacterString { string($content)} 
     427                                } 
     428                            } 
     429                        } 
     430                    
     431                    else 
     432                    
     433                       (: Can't detect any access restrictions so to be safe use otherRestrictions :) 
     434                                 
     435                        element gmd:resourceConstraints { 
     436                            element gmd:MD_LegalConstraints { 
     437                                element gmd:accessConstraints { 
     438                                    element gmd:MD_RestrictionCode { 
     439                             
     440                                     (:TODO: CEDA will need link to this codelist for this element :) 
     441                                    attribute codeList {'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode'}, 
     442                                    attribute codeListValue {'otherRestictions'}, 
     443                                    string("otherRestrictions")                         
     444                                    } 
     445                                }, 
     446                                element gmd:otherConstraints { 
     447                                    element gco:CharacterString { string("Please refer to the dataset homepage for further information")} 
     448                                } 
     449                            } 
     450                        }, 
    377451             
    378452            (: Spatial Resolution - Element 18 :) 
     
    524598                        } 
    525599                    }                        
    526              } (: /extent:)  
    527           }    
     600             }, (: /extent:)  
     601           
     602           
     603          (: supplementalInformation - can pull some info out of the atom:content and put here..:) 
     604           
     605          for $divContent in $DE/atom:content 
     606                let $content := isolib:extractAtomContent(string("cedacat:citation"),$divContent) 
     607                return 
     608                    if (string-length($content) > 0) then 
     609           
     610                      element gmd:supplementalInformation { 
     611                        element gco:CharacterString {string($content)} 
     612                      } 
     613                   else () 
     614               
     615          } 
    528616    },  (: /identificationInfo :) 
    529617     
     
    580668                (: Scope -required by ISO19115 :) 
    581669                element gmd:scope { 
    582                     element gmd:level { 
    583                         element gmd:MD_ScopeCode { 
     670                    element gmd:DQ_Scope { 
     671                        element gmd:level { 
     672                            element gmd:MD_ScopeCode { 
    584673                         
    585                             (: TODO: as part of CEDA creep towards INSPIRE conformity, this codelist should be listed:) 
    586                             attribute codeList {'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#MD_ScopeCode'}, 
    587                             attribute codeListValue {'dataset'}, 
    588                             string("dataset") 
     674                                (: TODO: as part of CEDA creep towards INSPIRE conformity, this codelist should be listed:) 
     675                                attribute codeList {'http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#MD_ScopeCode'}, 
     676                                attribute codeListValue {'dataset'}, 
     677                                string("dataset") 
     678                            } 
    589679                        } 
    590680                    } 
Note: See TracChangeset for help on using the changeset viewer.