Changeset 4337


Ignore:
Timestamp:
14/10/08 17:01:49 (11 years ago)
Author:
sdonegan
Message:

Updated ingest pipeline xqueries that allow proper translation of urls and datacentre names from the gamut of different dif and moles we have available....

Location:
exist/trunk/xquery
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • exist/trunk/xquery/dif2moles.xq

    r3841 r4337  
    1 (: This query produces one MOLES data entity plus one organisation entry for a given DIF instance 
     1(: This query produces one MOLES data entity plus one organisation entry for a given DIF instance 
    22   Input is TargetCollection (where the DIF exists), RepositoryID, where the existing DIF lies, and 
    33   expected to be the output RepositoryID (fix it in the output xml if it's wrong), and Input_EntryID 
     
    88(: dgPersons are not created as one can't tell automatically which are people and which are orgs, and orgs are simpler :)   
    99 
     10(: 
    1011import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery'; 
    1112import module namespace inputParse='http://ndg.nerc.ac.uk/xquery/lib/inputParse' at 'xmldb:exist:///db/xqueryLib/Utilities/inputParse_xquery_lib.xquery'; 
     13:) 
     14import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'vocab_xquery_lib.xquery'; 
     15import module namespace inputParse='http://ndg.nerc.ac.uk/xquery/lib/inputParse' at 'inputParse_xquery_lib.xquery'; 
     16 
    1217 
    1318declare default element namespace 'http://ndg.nerc.ac.uk/moles'; 
     
    2227declare variable $output_local_id as xs:string := 'LocalID'; 
    2328 
     29(: SJD get current date and manipulate to correct format as raw current-date not useable in MOLES:) 
     30declare variable $currentDate as xs:string := substring(current-date() cast as xs:string,1,10); 
     31(:declare variable $extractDate as xs:string := substring($fullDate,1,10);:) 
     32 
     33(:for $DIF in collection(collection($targetCollection))/dif:DIF[dif:Entry_ID=$input_entry_id]:) 
    2434for $DIF in collection($targetCollection)/dif:DIF[dif:Entry_ID=$input_entry_id] 
    2535return 
     
    4353element localIdentifier {concat('generated_desc-', encode-for-uri(string($DIF/dif:Entry_ID)))} 
    4454}, 
    45 element metadataDescriptionLastUpdated {current-date()}                 , 
    46 element abstract { 
    47 element abstractText {string($DIF/dif:Summary)} 
    48 } 
    49 , 
    50 for $descOnline in $DIF/dif:Related_URL 
    51 return 
    52 element descriptionSection { 
    53 element descriptionOnlineReference { 
    54 element dgSimpleLink {encode-for-uri(data($descOnline/dif:URL))}}, 
    55 if (exists($descOnline/dif:URL_Content_Type)) then  
    56 element dgReferenceName {data($descOnline/dif:URL_Content_Type)} 
    57 else () 
    58 } 
    59 }, 
    60 element name {string($DIF/dif:Entry_Title)}, 
    61 element abbreviation {string($DIF/dif:Entry_Title)}, 
    62 element dgDataEntity { 
    63 element dgDataSetType {''}, 
    64 element dgDataSummary { 
    65 for $parameter in $DIF/dif:Parameters 
    66 return 
    67 element dgParameterSummary { 
    68 element dgParameterValue { 
    69 element dgValueDataParameter { 
    70 element Value {''}, 
    71 element dgStandardUnit { 
    72 element dgValidTerm {'dummy'}, 
    73 element dgValidTermID { 
    74 element ParentListID {$voclib:unknown_vocab_id}, 
    75 element TermID {encode-for-uri('dummy unit')} 
    76 } 
    77 } 
    78 } 
    79 }, 
    80 element dgStdParameterMeasured { 
    81 if ($parameter/dif:Category!='') then element dgValidTerm {string($parameter/dif:Category)} 
    82 else  element dgValidTerm {'unknown'}, 
    83 element dgValidTermID { 
    84 element ParentListID {concat($voclib:gcmd_science_valids_categories, '/current')}, 
    85 element TermID {encode-for-uri($parameter/dif:Category)} 
    86 }, 
    87 element dgValidSubterm { 
    88 if ($parameter/dif:Topic!='') then element dgValidTerm {string($parameter/dif:Topic)} 
    89 else  element dgValidTerm {'unknown'}, 
    90 element dgValidTermID { 
    91 element ParentListID {concat($voclib:gcmd_science_valids_topics, '/current')}, 
    92 element TermID {encode-for-uri($parameter/dif:Topic)} 
    93 }, 
    94 element dgValidSubterm { 
    95 if ($parameter/dif:Term!='') then element dgValidTerm {string($parameter/dif:Term)} 
    96 else  element dgValidTerm {'unknown'}, 
    97 element dgValidTermID { 
    98 element ParentListID {concat($voclib:gcmd_science_valids_terms, '/current')}, 
    99 element TermID {encode-for-uri($parameter/dif:Term)} 
    100 }, 
    101 if (exists($parameter/dif:Variable) and $parameter/dif:Variable!='') then 
    102 element dgValidSubterm { 
    103 element dgValidTerm {string($parameter/dif:Variable)}, 
    104 element dgValidTermID { 
    105 element ParentListID {concat($voclib:gcmd_science_valids_variables, '/current')}, 
    106 element TermID {encode-for-uri($parameter/dif:Variable)} 
    107 }, 
    108 if (exists($parameter/dif:Detailed_Variable) and $parameter/dif:Detailed_Variable!='') then 
    109 element dgValidSubterm { 
    110 element dgValidTerm {string($parameter/dif:Detailed_Variable)}, 
    111 element dgValidTermID { 
    112 element ParentListID {$voclib:unknown_vocab_id}, 
    113 element TermID {encode-for-uri($parameter/dif:Detailed_Variable)} 
    114 }, 
    115 element ListLevel {4}} 
    116 else (), 
    117 element ListLevel {3} 
    118 } 
    119 else (), 
    120 element ListLevel {2} 
    121 }, 
    122 element ListLevel {1} 
    123 }, 
    124 element ListLevel {0} 
    125 }, 
    126 element ParameterName { 
    127 concat (string($parameter/dif:Category), ' > ', string($parameter/dif:Topic), ' > ', string($parameter/dif:Term)), 
    128 if (exists($parameter/dif:Variable) and $parameter/dif:Variable!='') then 
    129 concat(' > ', string($parameter/dif:Variable)) 
    130 else (), 
    131 if (exists($parameter/dif:Detailed_Variable) and $parameter/dif:Detailed_Variable!='') then 
    132 concat(' > ', string($parameter/dif:Detailed_Variable)) 
    133 else () 
    134 }, 
    135 element ParameterAbbreviation { 
    136 concat (string($parameter/dif:Category), ' > ', string($parameter/dif:Topic), ' > ', string($parameter/dif:Term)), 
    137 if (exists($parameter/dif:Variable) and $parameter/dif:Variable!='') then 
    138 concat(' > ', string($parameter/dif:Variable)) 
    139 else (), 
    140 if (exists($parameter/dif:Detailed_Variable) and $parameter/dif:Detailed_Variable!='') then 
    141 concat(' > ', string($parameter/dif:Detailed_Variable)) 
    142 else () 
    143 } 
    144 }, 
     55element metadataDescriptionLastUpdated {$currentDate}                   , 
     56    element abstract { 
     57        element abstractText {string($DIF/dif:Summary)} 
     58    } 
     59    , 
     60    for $descOnline in $DIF/dif:Related_URL 
     61    return 
     62        element descriptionSection { 
     63            element descriptionOnlineReference { 
     64            element dgSimpleLink { 
     65                (:SJD changed to name picking up from Description element in DIF?? :) 
     66               (: element URL {encode-for-uri(data($descOnline/dif:URL))},:) 
     67                if (exists($descOnline/dif:Description)) then  
     68                    element name {data($descOnline/dif:Description)}, 
     69                    element URL {encode-for-uri(data($descOnline/dif:URL))} 
     70                else 
     71                    element name {data('URL')} 
     72                    (:element URL {encode-for-uri(data($descOnline/dif:URL))}:) 
     73                } }               
     74            }     
     75        }, 
     76        element name {string($DIF/dif:Entry_Title)}, 
     77        element abbreviation {string($DIF/dif:Entry_Title)}, 
     78        element dgDataEntity { 
     79        element dgDataSetType {''}, 
     80        element dgDataSummary { 
     81        for $parameter in $DIF/dif:Parameters 
     82        return 
     83            element dgParameterSummary { 
     84                element dgParameterValue { 
     85                    element dgValueDataParameter { 
     86                        element Value {''}, 
     87                        element dgStandardUnit { 
     88                            element dgValidTerm {'dummy'}, 
     89                            element dgValidTermID { 
     90                                element ParentListID {$voclib:unknown_vocab_id}, 
     91                                element TermID {encode-for-uri('dummy unit')} 
     92                            } 
     93                        } 
     94                    } 
     95                }, 
     96            element dgStdParameterMeasured { 
     97                if ($parameter/dif:Category!='') then element dgValidTerm {string($parameter/dif:Category)} 
     98                else  element dgValidTerm {'unknown'}, 
     99                    element dgValidTermID { 
     100                        element ParentListID {concat($voclib:gcmd_science_valids_categories, '/current')}, 
     101                        element TermID {encode-for-uri($parameter/dif:Category)} 
     102                    }, 
     103                    element dgValidSubterm { 
     104                        if ($parameter/dif:Topic!='') then element dgValidTerm {string($parameter/dif:Topic)} 
     105                        else  element dgValidTerm {'unknown'}, 
     106                            element dgValidTermID { 
     107                                element ParentListID {concat($voclib:gcmd_science_valids_topics, '/current')}, 
     108                                element TermID {encode-for-uri($parameter/dif:Topic)} 
     109                            }, 
     110                    element dgValidSubterm { 
     111                        if ($parameter/dif:Term!='') then element dgValidTerm {string($parameter/dif:Term)} 
     112                        else  element dgValidTerm {'unknown'}, 
     113                            element dgValidTermID { 
     114                                element ParentListID {concat($voclib:gcmd_science_valids_terms, '/current')}, 
     115                                element TermID {encode-for-uri($parameter/dif:Term)} 
     116                            }, 
     117                        if (exists($parameter/dif:Variable) and $parameter/dif:Variable!='') then 
     118                            element dgValidSubterm { 
     119                                element dgValidTerm {string($parameter/dif:Variable)}, 
     120                                element dgValidTermID { 
     121                                    element ParentListID {concat($voclib:gcmd_science_valids_variables, '/current')}, 
     122                                    element TermID {encode-for-uri($parameter/dif:Variable)} 
     123                                }, 
     124                        if (exists($parameter/dif:Detailed_Variable) and $parameter/dif:Detailed_Variable!='') then 
     125                            element dgValidSubterm { 
     126                                element dgValidTerm {string($parameter/dif:Detailed_Variable)}, 
     127                                element dgValidTermID { 
     128                                    element ParentListID {$voclib:unknown_vocab_id}, 
     129                                    element TermID {encode-for-uri($parameter/dif:Detailed_Variable)} 
     130                                }, 
     131                        element ListLevel {4}} 
     132                        else (), 
     133                        element ListLevel {3} 
     134                        } 
     135                        else (), 
     136                        element ListLevel {2} 
     137                        }, 
     138                        element ListLevel {1} 
     139                        }, 
     140                        element ListLevel {0} 
     141                        }, 
     142                element ParameterName { 
     143                    concat (string($parameter/dif:Category), ' > ', string($parameter/dif:Topic), ' > ', string($parameter/dif:Term)), 
     144                    if (exists($parameter/dif:Variable) and $parameter/dif:Variable!='') then 
     145                    concat(' > ', string($parameter/dif:Variable)) 
     146                    else (), 
     147                    if (exists($parameter/dif:Detailed_Variable) and $parameter/dif:Detailed_Variable!='') then 
     148                    concat(' > ', string($parameter/dif:Detailed_Variable)) 
     149                    else () 
     150                }, 
     151                element ParameterAbbreviation { 
     152                    concat (string($parameter/dif:Category), ' > ', string($parameter/dif:Topic), ' > ', string($parameter/dif:Term)), 
     153                    if (exists($parameter/dif:Variable) and $parameter/dif:Variable!='') then 
     154                    concat(' > ', string($parameter/dif:Variable)) 
     155                    else (), 
     156                    if (exists($parameter/dif:Detailed_Variable) and $parameter/dif:Detailed_Variable!='') then 
     157                    concat(' > ', string($parameter/dif:Detailed_Variable)) 
     158                    else () 
     159                } 
     160            }, (: end of dgParameterSummary :) 
    145161if (exists($DIF/dif:Spatial_Coverage) or exists($DIF/dif:Paleo_Temporal_Coverage) or exists($DIF/dif:Location) or exists($DIF/dif:Temporal_Coverage)) then 
    146162element dgDataCoverage { 
    147 if (exists($DIF/dif:Spatial_Coverage)  or exists($DIF/dif:Location))  then 
    148 element dgSpatialCoverage { 
    149 for $boundingbox in $DIF/dif:Spatial_Coverage[exists(dif:Northernmost_Latitude) 
    150 and exists(dif:Southernmost_Latitude) 
    151 and exists(dif:Easternmost_Longitude) 
    152 and exists(dif:Westernmost_Longitude)] 
    153 return 
    154 element BoundingBox { 
    155 element LimitNorth {data(inputParse:fix-coord($boundingbox/dif:Northernmost_Latitude))}, 
    156 element LimitSouth {data(inputParse:fix-coord($boundingbox/dif:Southernmost_Latitude))}, 
    157 element LimitWest {data(inputParse:fix-coord($boundingbox/dif:Westernmost_Longitude))}, 
    158 element LimitEast {data(inputParse:fix-coord($boundingbox/dif:Easternmost_Longitude))} 
    159 }, 
    160 for $location in $DIF/dif:Location 
    161 return 
    162 element dgArea { 
    163 element dgValidTerm {string($location)}, 
    164 element dgValidTermID { 
    165 element ParentListID {concat($voclib:gcmd_location_valids, '/current')}, 
    166 element TermID {encode-for-uri($location)} 
    167 } 
    168 } 
    169 } 
    170 else (), 
    171 if (exists($DIF/dif:Temporal_Coverage) or exists($DIF/dif:Paleo_Temporal_Coverage) or exists($DIF/dif:Chronostratigraphic_Unit)) then 
    172 element dgTemporalCoverage { 
    173 for $temporalcoverage in $DIF/dif:Temporal_Coverage[exists(dif:Start_Date)] 
    174 return 
    175 element DateRange { 
    176 element DateRangeStart {string($temporalcoverage/dif:Start_Date)}, 
    177 element DateRangeEnd {string($temporalcoverage/dif:Stop_Date)} 
    178 }, 
    179 for $paleotemporalcoverage in $DIF/dif:Paleo_Temporal_Coverage[exists(dif:Paleo_Start_Date)] 
    180 return 
    181 element DateRange { 
    182 element DateRangeStart {string($paleotemporalcoverage/dif:Paleo_Start_Date)}, 
    183 element DateRangeEnd {string($paleotemporalcoverage/dif:Paleo_Stop_Date)} 
    184 }, 
    185 for $chronostratigraphic in $DIF/dif:Chronostratigraphic_Unit 
    186 return 
    187 element dgChronostratigraphicTerm { 
    188 element dgValidTerm {string($chronostratigraphic)}, 
    189 element dgValidTermID { 
    190 element ParentListID {concat($voclib:gcmd_chronostratigraphic_valids, '/current')}, 
    191 element TermID {encode-for-uri($chronostratigraphic)} 
    192 } 
    193 } 
    194 } 
    195 else () 
    196 } 
    197 else () 
     163    if (exists($DIF/dif:Spatial_Coverage)  or exists($DIF/dif:Location))  then 
     164    element dgSpatialCoverage { 
     165        for $boundingbox in $DIF/dif:Spatial_Coverage[exists(dif:Northernmost_Latitude) 
     166            and exists(dif:Southernmost_Latitude) 
     167            and exists(dif:Easternmost_Longitude) 
     168            and exists(dif:Westernmost_Longitude)] 
     169            return 
     170                element BoundingBox { 
     171                    element LimitNorth {data(inputParse:fix-coord($boundingbox/dif:Northernmost_Latitude))}, 
     172                    element LimitSouth {data(inputParse:fix-coord($boundingbox/dif:Southernmost_Latitude))}, 
     173                    element LimitWest {data(inputParse:fix-coord($boundingbox/dif:Westernmost_Longitude))}, 
     174                    element LimitEast {data(inputParse:fix-coord($boundingbox/dif:Easternmost_Longitude))} 
     175                }, 
     176        for $location in $DIF/dif:Location 
     177        return 
     178            element dgArea { 
     179                element dgValidTerm {string($location)}, 
     180                element dgValidTermID { 
     181                element ParentListID {concat($voclib:gcmd_location_valids, '/current')}, 
     182                element TermID {encode-for-uri($location)} 
     183            } 
     184        } 
     185    } 
     186    else (), 
     187    if (exists($DIF/dif:Temporal_Coverage) or exists($DIF/dif:Paleo_Temporal_Coverage) or exists($DIF/dif:Chronostratigraphic_Unit)) then 
     188        element dgTemporalCoverage { 
     189               for $temporalcoverage in $DIF/dif:Temporal_Coverage[exists(dif:Start_Date)] 
     190        return 
     191            element DateRange { 
     192                element DateRangeStart {string($temporalcoverage/dif:Start_Date)}, 
     193                element DateRangeEnd {string($temporalcoverage/dif:Stop_Date)} 
     194            }, 
     195            for $paleotemporalcoverage in $DIF/dif:Paleo_Temporal_Coverage[exists(dif:Paleo_Start_Date)] 
     196            return 
     197                element DateRange { 
     198                element DateRangeStart {string($paleotemporalcoverage/dif:Paleo_Start_Date)}, 
     199                element DateRangeEnd {string($paleotemporalcoverage/dif:Paleo_Stop_Date)} 
     200                }, 
     201            for $chronostratigraphic in $DIF/dif:Chronostratigraphic_Unit 
     202            return 
     203                element dgChronostratigraphicTerm { 
     204                    element dgValidTerm {string($chronostratigraphic)}, 
     205                        element dgValidTermID { 
     206                            element ParentListID {concat($voclib:gcmd_chronostratigraphic_valids, '/current')}, 
     207                            element TermID {encode-for-uri($chronostratigraphic)} 
     208                        } 
     209                     } 
     210                } 
     211            else () 
     212        } 
     213    else () 
    198214}, 
    199215element dgDataRoles { 
     
    213229return 
    214230element dgRoleHolder { 
    215 element dgMetadataID { 
    216 element schemeIdentifier {'NDG-B0'}, 
    217 element repositoryIdentifier {$input_repository}, 
    218 if ($output_local_id != 'Output_LocalID') then 
    219 element localIdentifier  {encode-for-uri(concat('generated_orgcit-', string($creatorID), '-', $output_local_id))} 
    220 else 
    221 element localIdentifier  {encode-for-uri(concat('generated_orgcit-', string($creatorID), '-', data($DIF/dif:Entry_ID)))} 
    222 }, 
    223 element startDate {current-date()} 
    224 } 
     231(: SJD changed this to dgOrganisationID from dgMetadataID - assuming simple error :) 
     232    element dgOrganisationID { 
     233        element schemeIdentifier {'NDG-B0'}, 
     234        element repositoryIdentifier {$input_repository}, 
     235        if ($output_local_id != 'Output_LocalID') then 
     236            element localIdentifier  {encode-for-uri(concat('generated_orgcit-', string($creatorID), '-', $output_local_id))} 
     237        else 
     238            element localIdentifier  {encode-for-uri(concat('generated_orgcit-', string($creatorID), '-', data($DIF/dif:Entry_ID)))} 
     239        }, 
     240       element startDate {current-date()} 
     241    } 
    225242} 
    226243else if (exists($DIF/dif:Originating_Center)) then 
     
    252269else (), 
    253270element dgDataCurator { 
    254 element dgMetadataID { 
    255 element schemeIdentifier {'NDG-B0'}, 
    256 element repositoryIdentifier {$input_repository}, 
    257 if ($output_local_id != 'Output_LocalID') then 
    258 element localIdentifier  {encode-for-uri(concat('generated_curator-', $output_local_id))} 
    259 else 
    260 element localIdentifier  {encode-for-uri(concat('generated_curator-', data($DIF/dif:Entry_ID)))} 
    261 }, 
    262 element roleName {'Data Curator'}, 
    263 element abbreviation {'Curator'}, 
    264 element dgRoleHolder { 
    265 element dgOrganisationID { 
    266 element schemeIdentifier {'NDG-B0'}, 
    267 element repositoryIdentifier {$input_repository}, 
    268 element localIdentifier {$input_repository_local} 
    269 }, 
    270 element startDate {current-date()} 
     271    element dgMetadataID { 
     272        element schemeIdentifier {'NDG-B0'}, 
     273        element repositoryIdentifier {$input_repository}, 
     274        if ($output_local_id != 'Output_LocalID') then 
     275            element localIdentifier  {encode-for-uri(concat('generated_curator-', $output_local_id))} 
     276        else 
     277            element localIdentifier  {encode-for-uri(concat('generated_curator-', data($DIF/dif:Entry_ID)))} 
     278    }, 
     279    element roleName {'Data Curator'}, 
     280    element abbreviation {'Curator'}, 
     281    element dgRoleHolder { 
     282        element dgOrganisationID { 
     283            element schemeIdentifier {'NDG-B0'}, 
     284            element repositoryIdentifier {$input_repository}, 
     285            (:SJD this not valid - just use same localIdentifier as above..:) 
     286            (:element localIdentifier {$input_repository_local}:) 
     287            if ($output_local_id != 'Output_LocalID') then 
     288            element localIdentifier  {encode-for-uri(concat('generated_curator-', $output_local_id))} 
     289            else 
     290            element localIdentifier  {encode-for-uri(concat('generated_curator-', data($DIF/dif:Entry_ID)))} 
     291        }, 
     292    element startDate {current-date()} 
    271293} 
    272294} 
     
    331353else () 
    332354} (: </dgMetadataRecord>:), 
    333 for $creator in distinct-values($DIF/(dif:Data_Set_Citation/dif:Dataset_Creator | dif:Originating_Center)) 
     355 
     356(: Had to add some stuff here so originating data centre stuff is picked up  
     357for $bum in distinct-values($DIF/(dif:Data_Set_Citation/dif:Dataset_Creator | dif:Originating_Center | dif:Data_Center)) 
    334358return 
    335 element dgOrganisation { 
    336 element dgMetadataID { 
    337 element schemeIdentifier {'NDG-B0'}, 
    338 element repositoryIdentifier {$input_repository}, 
    339 if ($output_local_id != 'Output_LocalID') then 
    340 element localIdentifier  {encode-for-uri(concat('generated_orgcit-', string($creator), '-', $output_local_id))} 
    341 else 
    342 element localIdentifier  {encode-for-uri(concat('generated_orgcit-', string($creator), '-', data($DIF/dif:Entry_ID)))} 
    343 }, 
    344 element name {string($creator)}, 
    345 element abbreviation {string($creator)}, 
    346 element contactDetails {''} 
    347 } 
     359    element snooze {data('arse')}, 
     360 
     361:) 
     362 
     363if (count(distinct-values($DIF/(dif:Data_Set_Citation/dif:Dataset_Creator | dif:Originating_Center ))) !=0) then 
     364    for $creator in distinct-values($DIF/(dif:Data_Set_Citation/dif:Dataset_Creator | dif:Originating_Center )) 
     365    return 
     366        element dgOrganisation{ 
     367            element dgMetadataID { 
     368                element schemeIdentifier {'NDG-B0'}, 
     369                element repositoryIdentifier {$input_repository}, 
     370                if ($output_local_id != 'Output_LocalID') then 
     371                    element localIdentifier  {encode-for-uri(concat('generated_orgcit-', string($creator), '-', $output_local_id))} 
     372                else 
     373                    element localIdentifier  {encode-for-uri(concat('generated_orgcit-', string($creator), '-', data($DIF/dif:Entry_ID)))} 
     374                }, 
     375                element name {string($creator)}, 
     376                element abbreviation {string($creator)}, 
     377                element contactDetails {''} 
     378        } 
     379 else 
     380     element dgOrganisation{ 
     381         element dgMetadataID { 
     382                element schemeIdentifier {'NDG-B0'}, 
     383                element repositoryIdentifier {$input_repository},                 
     384               if ($output_local_id != 'Output_LocalID') then 
     385                   element localIdentifier {concat('generated_desc-', $output_local_id)} 
     386               else 
     387                   element localIdentifier {concat('generated_desc-', encode-for-uri(string($DIF/dif:Entry_ID)))} 
     388               }, 
     389                element name {data($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Long_Name)}, 
     390                element abbreviation {data($DIF/dif:Data_Center/dif:Data_Center_Name/dif:Short_Name)}, 
     391                element contactDetails {''} 
     392     } 
     393  
    348394} (:    </dgMetadata> :) 
     395 
  • exist/trunk/xquery/moles2dif.xq

    r4333 r4337  
    44declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
    55 
     6import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'vocab_xquery_lib.xquery'; 
     7import module namespace inputParse='http://ndg.nerc.ac.uk/xquery/lib/inputParse' at 'inputParse_xquery_lib.xquery'; 
     8 
     9 
    610(:  
    711Updated descriptionSection to use from URI to URL in moles doc.. can now return links.. 
    8 SJD 13/10/08 
     12also RELATED_URLs & data centre names all work with badc dif2moles2dif pipeline 
     13SJD 14/10/08 
    914:) 
    1015 
     
    8994        return  
    9095            element Sensor_Name { 
     96               (: for $DepDPTAbbrev in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)):) 
    9197                for $DepDPTAbbrev in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)) 
    9298                    return element Short_Name {data($DepDPTAbbrev)}, 
     99                (:for $DepDPTName in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)):) 
    93100                for $DepDPTName in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)) 
    94101                    return element Long_Name {data($DepDPTName)} 
     
    97104        return  
    98105            element Source_Name { 
     106                (:for $DepObsStnAbbrev in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)):) 
    99107                for $DepObsStnAbbrev in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)) 
    100108                    return element Short_Name {data($DepObsStnAbbrev)}, 
     109                (:for $DepObsStnName in distinct-values(($targetCollection/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)):) 
    101110                for $DepObsStnName in distinct-values((collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)) 
    102111                    return element Long_Name {data($DepObsStnName)} 
     
    160169                    order by $DataCreatorRole/moles:startDate empty least 
    161170                            return  
    162                               for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson)                               
     171                              (:##for $DataCreatorRoleHolder in $targetCollection/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson):) 
     172                                for $DataCreatorRoleHolder in collection($targetCollection)/moles:dgMetadata/(moles:dgOrganisation | moles:dgPerson) 
    163173                                                [(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
    164174                                                and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/(moles:dgOrganisationID | moles:dgPersonID)/moles:repositoryIdentifier 
     
    260270                        }, 
    261271                        (: fail safe... :) 
    262                         element Data_Center {  
    263                         element Data_Center_Name { element Short_Name {''} }, 
    264                         element Personnel { element Role {''}, element Last_Name {''} } 
    265                         }, 
     272                        (: SJD Updated to pull straight from dgOrganisation as "backup fail safe" :) 
     273                        if (exists(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation)) then 
     274                            element Data_Center { 
     275                                element Data_Center_Name {  
     276                                    element Short_Name {data(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation/moles:abbreviation)}, 
     277                                    element Long_Name {data(collection($targetCollection)/moles:dgMetadata/moles:dgOrganisation/moles:name)}  
     278                                }, 
     279                                element Personnel {  
     280                                    element Role {''}, 
     281                                    element Last_Name {''}  
     282                                 } 
     283                            } 
     284                        else 
     285                            (: "old" fail safe :) 
     286                            element Data_Center { 
     287                                element Data_Center_Name {  
     288                                    element Short_Name {''}  
     289                                  }, 
     290                            element Personnel {  
     291                                element Role {''}, 
     292                                element Last_Name {''}  
     293                             } 
     294                            }, 
    266295        element Distribution {''}, 
    267296        element Multimedia_Sample {''}, 
     
    282311                            } 
    283312            else (), 
    284             for $RelURL_Desc in ($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference)  
    285             return 
    286                     element Related_URL { 
    287                             (:element URL {data($RelURL_Desc)}, this bit just loops through everything in the xpath and conmcats it -just as I thought -put in mroe structure!  
    288                             element URL {data($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:URI)},:) 
    289                              
    290                         element URL {data($RelURL_Desc/moles:dgSimpleLink/moles:URL)},  
    291  
    292                             (: According to Sue, the description can be the standard definition as served by the NDG vocalb server :) 
    293                             element Description {data($RelURL_Desc/moles:dgSimpleLink/moles:name)}           
    294                          }, 
     313             (: SJD: need to put in some logic to detect whether its moles with a straight dgSimpleLink or complex dgSimpleLink/name|URL. grrrrr.  :)  
     314             (: SJD: following logic ensures only moles 1.4 with both name AND url entered (i.e. valid ones!) are used... :) 
     315                for $RelURL_Desc in (1 to count($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name/../moles:URL)) 
     316            return               
     317                element Related_URL{           
     318                    element URL {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name/../moles:URL)}, 
     319                    element Description {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name)} 
     320                }, 
     321             
     322            (: SJD: following logic ensures only moles 1.3 with useable url in dgSiimpleLink entered (i.e. valid ones!) are used... :) 
     323            if (count($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink/moles:name|moles:URL) = 0) then 
     324             
     325                for $RelURL_Desc in (1 to count($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference/moles:dgSimpleLink)) 
     326                return           
     327                    element Related_URL{               
     328                        element URL {data($DE/moles:dgMetadataDescription/moles:descriptionSection[$RelURL_Desc]/moles:descriptionOnlineReference/moles:dgSimpleLink)}, 
     329                        element Description {data('RELATED_URL_DUMMY')} 
     330                    }                
     331            else (), 
     332             
    295333        element Parent_DIF {''}, 
    296334        element IDN_Node { element Short_Name {''} }, 
Note: See TracChangeset for help on using the changeset viewer.