Changeset 7212


Ignore:
Timestamp:
16/07/10 12:20:32 (9 years ago)
Author:
sdonegan
Message:

Updated dif to iso with info on data originator to work with latest medin style (v4.2.0) discovery ingest

File:
1 edited

Legend:

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

    r6850 r7212  
    1 (:Development DIF2ISO xquery - designed to convert most important DIF elements and produce a "stub" iso:) 
     1(:Development DIF2ISO xquery - designed to convert most important DIF elements and produce a "stub" iso:) 
    22 
    33(: NOTE: stored these directly into eXist - taken from current head ndgCommon - 26/11/09 :) 
     
    4343(: Loop through the dif and pick the important stuff we need to produce a stub iso :) 
    4444for $DIF in collection($targetCollection)/dif:DIF[dif:Entry_ID=$input_entry_id] 
    45 return 
    4645element gmd:MD_Metadata { 
    4746 
     47    (: add various namespaces 
     48    attribute xmlns:gco {"http://www.isotc211.org/2005/gco"}, :)     
     49     
     50    (: 
     51    attribute xmlns:gmx {"http://www.isotc211.org/2005/gmx"}, 
     52    attribute xmlns:gml{"http://www.opengis.net/gml/3.2"}, 
     53    attribute xmlns:xlink {"http://www.w3.org/1999/xlink"},   
     54    attribute xmlns:geonet {"http://www.fao.org/geonetwork"}, 
     55    :) 
    4856    (: Unique Identifier :) 
    4957    element gmd:fileIdentifier { 
     
    5462         
    5563      }, (: /gmd:fileIdentifier :) 
    56  
    57       (: Also need to put unique identifier as defined in MEDIN profile into gmd:MD_MetadataData/gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString :) 
    58  
    5964       
    6065       (: ************* ISO Author information **************** - several places in DIF to get this :) 
     
    6974                  } 
    7075               }, 
    71               element gmd:role { 
     76              element role { 
    7277                  element gmd:CI_RoleCode { 
    7378                      attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_RoleCode"}, 
     
    7984      }(: /gmd:contact :) 
    8085      (: if there's an originating centre in the dif, stuff it in here :) 
     86      (: NOTE: 17/07/2010 Mandatory MEDIN element so if originator not known just use distributor for now :) 
    8187      else (), 
    8288      if (exists($DIF/dif:Originating_Center)) then 
     
    8793                      data($DIF/dif:Originating_Center) 
    8894              },              
    89               element gmd:role { 
     95              element role { 
    9096                  element gmd:CI_RoleCode { 
    9197                      attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_RoleCode"}, 
     
    98104      }  
    99105      (:Pick up any contacts in the datacentre//role axis - note just take the first one for simplicity, for now :)       
    100       else (), 
     106      else  
     107      if (exists($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name)) then 
     108      for $creatorID in $DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name 
     109      return 
     110      element gmd:contact { 
     111          element gmd:CI_ResponsibleParty { 
     112              element   gmd:individualName { 
     113                  element gco:CharacterString { 
     114                      data($creatorID) 
     115                  } 
     116               }, 
     117              element role { 
     118                  element gmd:CI_RoleCode { 
     119                      attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_RoleCode"}, 
     120                      attribute codeListValue {"CI_RoleCode_originator"}, 
     121                      string('originator') 
     122                  } 
     123              } 
     124           } 
     125      } else () 
     126       
     127      , 
    101128      (: 
    102129      NOTE- here is the main information on the holding data centre 
     
    114141                  } 
    115142               }, 
    116                element gmd:organisationName { 
     143               element organisationName { 
    117144                   element gco:CharacterString { 
    118145                      data($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Short_Name) 
    119146                    } 
    120147               }, 
    121                element gmd:contactInfo { 
     148               element contactInfo { 
    122149                   element gmd:CI_Contact { 
    123150                        if (exists($DIF/dif:Data_Center/dif:Personnel/dif:Phone) or exists($DIF/dif:Data_Center/dif:Personnel/dif:Fax)) then 
    124                            element gmd:phone { 
     151                           element phone { 
    125152                               element gmd:CI_Telephone { 
    126153                                   if(exists($DIF/dif:Data_Center/dif:Personnel/dif:Phone)) then 
    127                                        element gmd:voice { 
     154                                       element voice { 
    128155                                           element gco:CharacterString { 
    129156                                              data($DIF/dif:Data_Center/dif:Personnel/dif:Phone) 
     
    132159                                     else (), 
    133160                                     if(exists($DIF/dif:Data_Center/dif:Personnel/dif:Fax)) then 
    134                                        element gmd:facsimile { 
     161                                       element facsimile { 
    135162                                           element gco:CharacterString { 
    136163                                              data($DIF/dif:Data_Center/dif:Personnel/dif:Fax) 
     
    141168                        } else ()  
    142169                    },(:/phone:) 
    143                     element gmd:address { 
     170                    element address { 
    144171                        element gmd:CI_Address { 
    145172                         
    146173                            (:NOTE: in stubISO - first line of address is ALWAYS data centre longname (or if its not available, the short name again) :) 
    147174                            if (exists($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name)) then 
    148                             element gmd:deliveryPoint { 
     175                            element deliveryPoint { 
    149176                                element gco:CharacterString { 
    150177                                              data($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name) 
     
    155182                            for $Address in $DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Address 
    156183                            return 
    157                                 element gmd:deliveryPoint { 
     184                                element deliveryPoint { 
    158185                                    element gco:CharacterString { 
    159186                                             data($Address) 
    160187                                    } 
    161188                                }, 
    162                              element gmd:city { 
     189                             element city { 
    163190                                 element gco:CharacterString { 
    164191                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:City) 
    165192                                    } 
    166193                             }, 
    167                              element gmd:postalCode { 
     194                             element postalCode { 
    168195                                 element gco:CharacterString { 
    169196                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Postal_Code) 
    170197                                    } 
    171198                             }, 
    172                              element gmd:country { 
     199                             element country { 
    173200                                  element gco:CharacterString { 
    174201                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Country) 
    175202                                    } 
    176203                             }, 
    177                              element gmd:electronicMailAddress { 
     204                             element electronicMailAddress { 
    178205                                  element gco:CharacterString { 
    179206                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Email) 
     
    183210                    } (:/address:) 
    184211               }, (:/contactInfo:) 
    185               element gmd:role { 
     212              element role { 
    186213                  element gmd:CI_RoleCode { 
    187214                      attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_RoleCode"}, 
     
    199226      NOTE: this is the datestamp of the dif=>iso conversion 
    200227      :) 
    201       element gmd:dateStamp { 
     228      element dateStamp { 
    202229           
    203230          element gco:DateTime {data($thisDateTime)}               
     
    210237      NOTE: this is the name of the standard we have converted dif TO i.e. ndg_isoStub 
    211238       
    212       (: Need to rememeber this stubSO was converted from DIF :) 
     239      TODO: rationalise list of standards & profiles (not done 01/12/09) 
    213240       
    214241      :) 
    215       element gmd:metadataStandardName { 
    216           element gco:CharacterString { string('GCMD DIF')} 
     242      element metadataStandardName { 
     243          element gco:CharacterString { string('NDG_StubISO19139')} 
    217244      },  
    218       element gmd:metadataStandardVersion { 
    219           element gco:CharacterString { string('9.4')} 
     245      element metadataStandardVersion { 
     246          element gco:CharacterString { string('v0.1')} 
    220247      },   
    221248      (: ************* END metadataStandardName ******************* :) 
     
    227254      :) 
    228255      if (exists($DIF/dif:Data_Set_Citation/dif:Online_Resource)) then 
    229           element gmd:dataSetURI { 
     256          element dataSetURI { 
    230257              element gco:CharacterString { 
    231258              data ($DIF/dif:Data_Set_Citation/dif:Online_Resource) 
     
    237264         where $DescriptionVal = 'URI' 
    238265         return 
    239           element gmd:dataSetURI { 
     266          element dataSetURI { 
    240267              element gco:CharacterString { 
    241268                  data ($RelatedURL/dif:URL) 
     
    257284                    }, 
    258285                    (: Creation date : note use codeList value! :) 
    259                     element gmd:date { 
     286                    element date { 
    260287                        element gmd:CI_Date { 
    261                             element gmd:date { 
     288                            element date { 
    262289                                element gco:DateTime { 
    263290                                    data($DIF/dif:DIF_Creation_Date) 
    264291                                } 
    265292                             }, 
    266                             element gmd:dateType { 
     293                            element dateType { 
    267294                                    element gmd:CI_DateTypeCode { 
    268295                                        attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode"}, 
     
    273300                            } (::) 
    274301                        }, (:/date :) 
    275                         element gmd:date { 
     302                        element date { 
    276303                            element gmd:CI_Date { 
    277                                 element gmd:date { 
     304                                element date { 
    278305                                        element gco:DateTime { 
    279306                                            data($DIF/dif:DIF_Revision_History) 
    280307                                         } 
    281308                                 }, 
    282                                  element gmd:dateType { 
     309                                 element dateType { 
    283310                                      element gmd:CI_DateTypeCode { 
    284311                                                attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode"}, 
    285312                                                attribute codeListValue {"CI_DateTypeCode"}, 
    286313                                                string('revision')  
    287                                             }                                         
     314                                            } 
     315                                         
    288316                                 } 
    289317                            } 
    290                         }, 
    291                         (: According to MEDIN profile also need to put unqiue file identifier here :) 
    292                         element gmd:identifier { 
    293                             element gmd:RS_Identifier { 
    294                                 element gmd:code { 
    295                                     element gco:CharacterString { data ( $DIF/dif:Entry_ID )} 
    296                                 } 
    297                             }                         
    298                         } (: /identifier :) 
    299                    (: } :) 
     318                        } 
     319                    (:}:) 
    300320                } 
    301321            }, 
     
    305325                    data ($DIF/dif:Summary) 
    306326                 } 
    307              } 
     327             }, 
     328              
     329             
     330            (: pointOf Contact info in here :) 
     331              
     332              if (exists($DIF/dif:Data_Center)) then 
     333              (:for $roleID in $DIF/dif:Data_Center 
     334         return:) 
     335          
     336             element gmd:pointOfContact { 
     337              element gmd:CI_ResponsibleParty { 
     338                  element   gmd:individualName { 
     339                      element gco:CharacterString { 
     340                      data($DIF/dif:Data_Center/dif:Personnel/dif:Role) 
     341                  } 
     342               }, 
     343               element organisationName { 
     344                   element gco:CharacterString { 
     345                      data($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Short_Name) 
     346                    } 
     347               }, 
     348               element contactInfo { 
     349                   element gmd:CI_Contact { 
     350                        if (exists($DIF/dif:Data_Center/dif:Personnel/dif:Phone) or exists($DIF/dif:Data_Center/dif:Personnel/dif:Fax)) then 
     351                           element phone { 
     352                               element gmd:CI_Telephone { 
     353                                   if(exists($DIF/dif:Data_Center/dif:Personnel/dif:Phone)) then 
     354                                       element voice { 
     355                                           element gco:CharacterString { 
     356                                              data($DIF/dif:Data_Center/dif:Personnel/dif:Phone) 
     357                                                } 
     358                                       } 
     359                                     else (), 
     360                                     if(exists($DIF/dif:Data_Center/dif:Personnel/dif:Fax)) then 
     361                                       element facsimile { 
     362                                           element gco:CharacterString { 
     363                                              data($DIF/dif:Data_Center/dif:Personnel/dif:Fax) 
     364                                                } 
     365                                       } 
     366                                     else ()                                      
     367                               }                            
     368                        } else ()  
     369                    },(:/phone:) 
     370                    element address { 
     371                        element gmd:CI_Address { 
     372                         
     373                            (:NOTE: in stubISO - first line of address is ALWAYS data centre longname (or if its not available, the short name again) :) 
     374                            if (exists($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name)) then 
     375                            element deliveryPoint { 
     376                                element gco:CharacterString { 
     377                                              data($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name) 
     378                                } 
     379                            } 
     380                            else (), 
     381                            (: Now the rest of the address - delimit with commas to save some elements!:) 
     382                            for $Address in $DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Address 
     383                            return 
     384                                element deliveryPoint { 
     385                                    element gco:CharacterString { 
     386                                             data($Address) 
     387                                    } 
     388                                }, 
     389                             element city { 
     390                                 element gco:CharacterString { 
     391                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:City) 
     392                                    } 
     393                             }, 
     394                             element postalCode { 
     395                                 element gco:CharacterString { 
     396                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Postal_Code) 
     397                                    } 
     398                             }, 
     399                             element country { 
     400                                  element gco:CharacterString { 
     401                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Country) 
     402                                    } 
     403                             }, 
     404                             element electronicMailAddress { 
     405                                  element gco:CharacterString { 
     406                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Email) 
     407                                    } 
     408                             } 
     409                        } 
     410                    } (:/address:) 
     411               }, (:/contactInfo:) 
     412              element role { 
     413                  element gmd:CI_RoleCode { 
     414                      attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_RoleCode"}, 
     415                      attribute codeListValue {"CI_RoleCode_distributor"}, 
     416                      string('distributor') 
     417                  } 
     418              } 
     419           }  
     420         
     421              
     422             } (: /pointOfContact :) 
     423             else (), 
     424              
     425             (: Originating data centre - Mandatory :) 
     426             if (exists($DIF/dif:Originating_Center)) then 
     427      element gmd:pointOfContact { 
     428          element gmd:CI_ResponsibleParty { 
     429              element   gmd:organisationName { 
     430                  element gco:CharacterString { 
     431                      data($DIF/dif:Originating_Center) 
     432              },              
     433              element role { 
     434                  element gmd:CI_RoleCode { 
     435                      attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_RoleCode"}, 
     436                      attribute codeListValue {"CI_RoleCode_originator"}, 
     437                      string('originator') 
     438                  } 
     439              } 
     440           } 
     441      } (: /gmd:pointOfContact :) 
     442       }      
     443        
     444       else       
     445      (: otherwise take it from the Data_Centre field - should be there in CEDA records 
     446      else (), :) 
     447       
     448      if (exists($DIF/dif:Data_Center)) then 
     449              (:for $roleID in $DIF/dif:Data_Center 
     450         return:) 
     451         element gmd:pointOfContact { 
     452          element gmd:CI_ResponsibleParty { 
     453              element   gmd:individualName { 
     454                  element gco:CharacterString { 
     455                      data($DIF/dif:Data_Center/dif:Personnel/dif:Role) 
     456                  } 
     457               }, 
     458               element organisationName { 
     459                   element gco:CharacterString { 
     460                      data($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Short_Name) 
     461                    } 
     462               }, 
     463               element contactInfo { 
     464                   element gmd:CI_Contact { 
     465                        if (exists($DIF/dif:Data_Center/dif:Personnel/dif:Phone) or exists($DIF/dif:Data_Center/dif:Personnel/dif:Fax)) then 
     466                           element phone { 
     467                               element gmd:CI_Telephone { 
     468                                   if(exists($DIF/dif:Data_Center/dif:Personnel/dif:Phone)) then 
     469                                       element voice { 
     470                                           element gco:CharacterString { 
     471                                              data($DIF/dif:Data_Center/dif:Personnel/dif:Phone) 
     472                                                } 
     473                                       } 
     474                                     else (), 
     475                                     if(exists($DIF/dif:Data_Center/dif:Personnel/dif:Fax)) then 
     476                                       element facsimile { 
     477                                           element gco:CharacterString { 
     478                                              data($DIF/dif:Data_Center/dif:Personnel/dif:Fax) 
     479                                                } 
     480                                       } 
     481                                     else ()                                      
     482                               }                            
     483                        } else ()  
     484                    },(:/phone:) 
     485                    element address { 
     486                        element gmd:CI_Address { 
     487                         
     488                            (:NOTE: in stubISO - first line of address is ALWAYS data centre longname (or if its not available, the short name again) :) 
     489                            if (exists($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name)) then 
     490                            element deliveryPoint { 
     491                                element gco:CharacterString { 
     492                                              data($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name) 
     493                                } 
     494                            } 
     495                            else (), 
     496                            (: Now the rest of the address - delimit with commas to save some elements!:) 
     497                            for $Address in $DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Address 
     498                            return 
     499                                element deliveryPoint { 
     500                                    element gco:CharacterString { 
     501                                             data($Address) 
     502                                    } 
     503                                }, 
     504                             element city { 
     505                                 element gco:CharacterString { 
     506                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:City) 
     507                                    } 
     508                             }, 
     509                             element postalCode { 
     510                                 element gco:CharacterString { 
     511                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Postal_Code) 
     512                                    } 
     513                             }, 
     514                             element country { 
     515                                  element gco:CharacterString { 
     516                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Contact_Address/dif:Country) 
     517                                    } 
     518                             }, 
     519                             element electronicMailAddress { 
     520                                  element gco:CharacterString { 
     521                                             data($DIF/dif:Data_Center/dif:Personnel/dif:Email) 
     522                                    } 
     523                             } 
     524                        } 
     525                    } (:/address:) 
     526               }, (:/contactInfo:) 
     527              element role { 
     528                  element gmd:CI_RoleCode { 
     529                      attribute codeList {"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/gmxCodelists.xml#CI_RoleCode"}, 
     530                      attribute codeListValue {"CI_RoleCode_originator"}, 
     531                      string('originator') 
     532                  } 
     533              } 
     534           }  
     535         
     536              
     537             } (: /pointOfContact :) 
     538             else () 
     539              
    308540        }, (: /MD_DataIdentification :) 
    309        
    310541       
    311542      (: ************* Keyword **********************:) 
     
    389620                                   } 
    390621                                }, 
    391                                 element gmd:southBoundLatitude { 
     622                                element gmd:southBoundLongitude { 
    392623                                  element gco:Decimal { 
    393624                                      data(inputParse:fix-coord($boundingbox/dif:Southernmost_Latitude)) 
    394625                                   } 
    395626                                }, 
    396                                  element gmd:northBoundLatitude { 
     627                                 element gmd:northBoundLongitude { 
    397628                                  element gco:Decimal { 
    398629                                      data(inputParse:fix-coord($boundingbox/dif:Northernmost_Latitude)) 
     
    450681      :) 
    451682      if (exists ($DIF/dif:Parameters) or exists ($DIF/dif:Related_URL)) then 
    452            element gmd:distributionInfo { 
     683           element distributionInfo { 
    453684              element gmd:MD_Distribution { 
    454685                  element gmd:distributionFormat { 
     
    461692                  for $Parameters in $DIF/dif:Parameters 
    462693                   return               
    463                        element gmd:transferOptions {  
     694                       element transferOptions {  
    464695                          element gmd:MD_DigitalTransferOptions { 
    465                                element gmd:onLine { 
     696                               element onLine { 
    466697                                   element gmd:CI_OnlineResource { 
    467                                        element gmd:linkage { 
     698                                       element linkage { 
    468699                                           element gmd:URL { 
    469700                                               data($Parameters/dif:Topic)  (: this should take the topic URL to the GCMD list :) 
    470701                                           } 
    471702                                       }, 
    472                                        element gmd:name { 
     703                                       element name { 
    473704                                           element gco:CharacterString { 
    474705                                               data ($Parameters/dif:Category) (: this should take the Category to the GCMD list :) 
    475706                                           } 
    476707                                       }, 
    477                                       element gmd:description { 
     708                                      element description { 
    478709                                          element gco:CharacterString { 
    479710                                               data ($Parameters/dif:Term) (: this should take the Term to the GCMD list :) 
    480711                                           } 
    481712                                      }, 
    482                                       element gmd:function { 
     713                                      element function { 
    483714                                          element gmd:CI_onLineFunctionCode { 
    484715                                              string('DIF:PARAMETERS') 
     
    497728                      for $Related_URL in $DIF/dif:Related_URL 
    498729                       return               
    499                            element gmd:transferOptions { 
     730                           element transferOptions { 
    500731                              element gmd:MD_DigitalTransferOptions { 
    501                                element gmd:onLine { 
     732                               element onLine { 
    502733                                   element gmd:CI_OnlineResource { 
    503                                        element gmd:linkage { 
     734                                       element linkage { 
    504735                                           element gmd:URL { 
    505736                                               data($Related_URL/dif:URL)  (: this should take the topic URL to the GCMD list :) 
    506737                                           } 
    507738                                       }, 
    508                                        element gmd:name { 
     739                                       element name { 
    509740                                           element gco:CharacterString { 
    510741                                               data ($Related_URL/dif:URL_Content_Type) (: this should take the Category to the GCMD list :) 
    511742                                           } 
    512743                                       }, 
    513                                       element gmd:description { 
     744                                      element description { 
    514745                                          element gco:CharacterString { 
    515746                                               data ($Related_URL/dif:Description) (: this should take the Term to the GCMD list :) 
    516747                                           } 
    517748                                      }, 
    518                                       element gmd:function { 
     749                                      element function { 
    519750                                          element gmd:CI_onLineFunctionCode { 
    520751                                              string('DIF:RELATED_URL') 
     
    531762        else ()              
    532763      } (: /MD_Metadata:) 
     764    
     765 
     766 
Note: See TracChangeset for help on using the changeset viewer.