Ignore:
Timestamp:
15/02/07 11:54:01 (14 years ago)
Author:
ko23
Message:

Refactoring intermediate

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/StubB/XQuery/NDG-DPTStubB.xquery

    r1707 r2171  
    11declare default element namespace 'http://ndg.nerc.ac.uk/moles/dataproductiontool';  
     2import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery'; 
     3import module namespace utillib='http://ndg.nerc.ac.uk/xquery/lib/utilities' at 'xmldb:exist:///db/xqueryLib/Utilities/utility_xquery_lib.xquery'; 
     4import module namespace stubblib='http://ndg.nerc.ac.uk/xquery/lib/stubb' at 'xmldb:exist:///db/xqueryLib/StubB/stubb_xquery_lib.xquery'; 
    25declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
    3 declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
    46 
    5 declare function f:strip-namespace($e as element()) as element()  
    6 (: Removes namespace info from the element tree being addressed so that it will lie in the default namespace  :) 
    7 { 
    8   element {QName('', local-name($e))}   
    9   { 
    10     let $parent :=$e 
    11     let $childcount := count($parent/*) 
    12     return  
    13         if ($childcount>0) then 
    14             for $child in ($e/*) 
    15             return 
    16                 f:strip-namespace($child) 
    17         else (data($e))           
    18   } 
    19 } ; 
     7declare variable $targetCollection as xs:string {'TargetCollection'}; 
     8declare variable $repositoryIdentifier as xs:string {'RepositoryID'}; 
     9declare variable $localIdentifier as xs:string {'LocalID'}; 
    2010 
    21 declare function f:return-stub-activity($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    22 (: Returns a 'stubB' style activity record to expand an activity record :) 
    23 (: Security not implemented here yet :) 
    24 { 
    25 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    26                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    27                         and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    28 return   
    29         if ($found = 0) then  
    30                 element {$out-element-name} { 
    31                         element error {'not found'}, 
    32                         element repositoryIdentifier {$repid}, 
    33                         element localIdentifier {$locid} 
    34                 }  
    35         else ( 
    36                 for $SRAct in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    37                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    38                         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    39                 return  
    40                         element  {$out-element-name} {  
    41                                 ($SRAct/moles:dgMetadataID), 
    42                                 ($SRAct/moles:dgMetadataDescription), 
    43                                 ($SRAct/moles:name), 
    44                                 ($SRAct/moles:abbreviation), 
    45                                 element dgActivity { 
    46                                         if (exists($SRAct/*/moles:dgActivityDataCollection)) then  
    47                                                 ($SRAct/*/moles:dgActivityDataCollection) 
    48                                         else if (exists($SRAct/*/moles:dgActivityDataProject)) then  
    49                                                 ($SRAct/*/moles:dgActivityDataProject) 
    50                                         else if (exists($SRAct/*/dgActivityDataCampaign)) then 
    51                                                 ($SRAct/moles:dgActivity/moles:dgActivityDataCampaign) 
    52                                         else  
    53                                                 ($SRAct/moles:dgActivity/moles:dgActivityDataInvestigation),  
    54                                         ($SRAct/moles:dgActivity/moles:dgActivityCoverage), 
    55                                         ($SRAct/moles:dgActivity/moles:dgActivityDuration) 
    56                                 } (: </dgActivity> :)  
    57                         } (: </activity> :)  
    58         ) 
    59 } ; 
    60  
    61 declare function f:return-stub-dataentity($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    62 (: Returns a 'stubB' style observation station record to expand an data entity record :) 
    63 (: Security not implemented yet :) 
    64 { 
    65 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    66                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    67                 and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    68 return   
    69         if ($found = 0) then  
    70                 element {$out-element-name} { 
    71                         element error {'not found'}, 
    72                         element repositoryIdentifier {$repid}, 
    73                         element localIdentifier {$locid} 
    74                 }  
    75         else ( 
    76                 for $SRDE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    77                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    78                         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    79                 return   
    80                         element {$out-element-name} { 
    81                                 ($SRDE/moles:dgMetadataID), 
    82                                 ($SRDE/moles:dgMetadataDescription), 
    83                                 ($SRDE/moles:name), 
    84                                 ($SRDE/moles:abbreviation), 
    85                                 element dgDataEntity { 
    86                                         ($SRDE/moles:dgDataEntity/moles:dgDataSetType), 
    87                                         ($SRDE/moles:dgDataEntity/moles:dgDataGranule), 
    88                                         ($SRDE/moles:dgDataEntity/moles:dgDataSummary) 
    89                                 } (: </dgDataEntity> :)          
    90                         } 
    91         ) 
    92 } ; 
    93  
    94 declare function f:return-stub-dpt($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    95 (: Returns a 'stubB' style dpt record to expand a dpt record :) 
    96 (: Security not implemented yet :) 
    97 { 
    98 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    99                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    100                 and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    101 return   
    102         if ($found = 0) then  
    103                 element {$out-element-name} { 
    104                         element error {'not found'}, 
    105                         element repositoryIdentifier {$repid}, 
    106                         element localIdentifier {$locid} 
    107                 }  
    108         else ( 
    109                 for $SRDPT in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    110                                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    111                                 and moles:dgMetadataID/moles:localIdentifier=$locid] 
    112                 return   
    113                         element {$out-element-name} { 
    114                                 $SRDPT/moles:dgMetadataID, 
    115                                 $SRDPT/moles:dgMetadataDescription, 
    116                                 $SRDPT/moles:name, 
    117                                 $SRDPT/moles:abbreviation, 
    118                                 $SRDPT/moles:logos, 
    119                                 element dgDataProductionTool { 
    120                                         $SRDPT/moles:dgDataProductionTool/moles:contactDetails, 
    121                                         if (exists($SRDPT/moles:dgDataProductionTool/moles:dgModel)) then 
    122                                                 $SRDPT/moles:dgDataProductionTool/moles:dgModel 
    123                                         else (), 
    124                                         if (exists($SRDPT/moles:dgDataProductionTool/moles:dgInstrument)) then 
    125                                                 $SRDPT/moles:dgDataProductionTool/moles:dgInstrument 
    126                                         else () 
    127                                         } (: </dgDataProductionTool> :) 
    128                                 } (: </dataproductiontool> :) 
    129         ) 
    130 } ; 
    131  
    132 declare function f:return-stub-obsstn($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    133 (: Returns a 'stubB' style observation station record to expand an observation station record :) 
    134 (: Security not implemented here yet;  :) 
    135 { 
    136 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    137                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    138                         and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    139 return   
    140         if ($found = 0) then  
    141                 element {$out-element-name} { 
    142                         element error {'not found'}, 
    143                         element repositoryIdentifier {$repid}, 
    144                         element localIdentifier {$locid} 
    145                 }  
    146         else ( 
    147                 for $SRObsStn in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    148                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    149                         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    150                 return 
    151                         element {$out-element-name} { 
    152                                 ($SRObsStn/moles:dgMetadataID), 
    153                                 ($SRObsStn/moles:dgMetadataDescription), 
    154                                 ($SRObsStn/moles:name), 
    155                                 ($SRObsStn/moles:abbreviation), 
    156                                 element dgObservationStation { 
    157                                         ($SRObsStn/moles:dgObservationStation/moles:contactDetails), 
    158                                         if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then 
    159                                                 element dgStationaryPlatform { 
    160                                                         $SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position, 
    161                                                         if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgLandStation)) then element dgLandStation {''} 
    162                                                         else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgMooring)) then element dgMooring {''} 
    163                                                         else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgStationGroup)) then element dgStationGroup {''} 
    164                                                         else () 
    165                                                         } 
    166                                         else if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then  
    167                                                 $SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform 
    168                                         else () 
    169                                 } (: </dgObservationStation> :) 
    170                         } 
    171         ) 
    172 } ; 
    173  
    174 declare function f:return-stub-person($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    175 (: Returns a 'stubB' style observation station record to expand a person record :) 
    176 (: Security not implemented yet :) 
    177 { 
    178 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
    179                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    180                         and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    181 return   
    182         if ($found = 0) then  
    183                 element {$out-element-name} { 
    184                         element error {'not found'}, 
    185                         element repositoryIdentifier {$repid}, 
    186                         element localIdentifier {$locid} 
    187                 }  
    188         else ( 
    189         for $person in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
    190                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    191                 and moles:dgMetadataID/moles:localIdentifier=$locid]  
    192         return  
    193                 element  {$out-element-name}  
    194                 { 
    195                         ($person/moles:name), 
    196                         ($person/moles:contactDetails), 
    197                         ($person/moles:dgMetadataID) 
    198                 } 
    199         ) 
    200 } ; 
    201  
    202 declare function f:return-stub-organisation($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    203 (: Returns a 'stubB' style observation station record to expand an organisation record :) 
    204 (: Security not implemented yet :) 
    205 { 
    206         let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgOrganisation[ 
    207                                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    208                                 and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    209         return   
    210                 if ($found = 0) then  
    211                         element {$out-element-name} { 
    212                                 element error {'not found'}, 
    213                                 element repositoryIdentifier {$repid}, 
    214                                 element localIdentifier {$locid} 
    215                         }  
    216                 else ( 
    217                         for $org in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgOrganisation[ 
    218                                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    219                                 and moles:dgMetadataID/moles:localIdentifier=$locid]  
    220                         return  
    221                                 element  {$out-element-name} { 
    222                                         $org/moles:dgMetadataID, 
    223                                         $org/moles:name, 
    224                                         $org/moles:abbreviation, 
    225                                         $org/moles:contactDetails, 
    226                                         $org/moles:logos 
    227                                 } 
    228                 ) 
    229 } ; 
    230  
    231 for $DPT in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    232         moles:dgDataProductionTool!=''  
    233         and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
    234         and moles:dgMetadataID/moles:repositoryIdentifier='badc.nerc.ac.uk'  
    235         and moles:dgMetadataID/moles:localIdentifier='dpt1']  
    236 return  
    237 f:strip-namespace(element dgMetadataRecord {  
     11for $DPT in collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[ 
     12moles:dgDataProductionTool!=''  
     13and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
     14and moles:dgMetadataID/moles:repositoryIdentifier=$repositoryIdentifier 
     15and moles:dgMetadataID/moles:localIdentifier=$localIdentifier] 
     16return 
     17utillib:strip-namespace(element dgMetadataRecord { 
    23818        $DPT/dgMetadataID, 
    23919                element dgMetadataID { 
     
    25939                        $RelDep/moles:DateEnd, 
    26040                        $RelDep/moles:dgMetadataID, 
    261                         f:return-stub-activity('activity', data($RelDep/moles:ActivityID/moles:repositoryIdentifier), data($RelDep/moles:ActivityID/moles:localIdentifier)), 
    262                         f:return-stub-obsstn('observationstation', data($RelDep/moles:ObservationStationID/moles:repositoryIdentifier), data($RelDep/moles:ObservationStationID/moles:localIdentifier)), 
    263                         for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord 
     41                        stubblib:return-stub-activity('activity', data($RelDep/moles:ActivityID/moles:repositoryIdentifier), data($RelDep/moles:ActivityID/moles:localIdentifier)), 
     42                        stubblib:return-stub-obsstn('observationstation', data($RelDep/moles:ObservationStationID/moles:repositoryIdentifier), data($RelDep/moles:ObservationStationID/moles:localIdentifier)), 
     43                        for $DE in collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord 
    26444                                where $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier 
    26545                                        and $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:dgMetadataID/moles:localIdentifier 
    26646                        return 
    267                                 f:return-stub-dataentity('dataentity', data($DE/moles:dgMetadataID/moles:repositoryIdentifier), data($DE/moles:dgMetadataID/moles:localIdentifier)), 
     47                                stubblib:return-stub-dataentity('dataentity', data($DE/moles:dgMetadataID/moles:repositoryIdentifier), data($DE/moles:dgMetadataID/moles:localIdentifier)), 
    26848                        $RelDep/moles:Coverage 
    26949                } (: </DPTDeployment> :)  
Note: See TracChangeset for help on using the changeset viewer.