Ignore:
Timestamp:
16/11/06 16:55:18 (14 years ago)
Author:
ko23
Message:

Extensions for MDIP (part one)

File:
1 edited

Legend:

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

    r1683 r1707  
    22declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
    33declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
    4  
    54declare function f:strip-namespace($e as element()) as element()  
    65(: Removes namespace info from the element tree being addressed so that it will lie in the default namespace  :) 
     6 
    77{ 
    88  element {QName('', local-name($e))}   
     
    2020 
    2121declare 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 :) 
     22(: Returns a 'stubB' style activity record to expand an activity record :) 
    2323(: Security not implemented here yet :) 
    2424{ 
    25 for $SRAct in 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                 element  {$out-element-name} {  
    30                         ($SRAct/moles:dgMetadataID), 
    31                         ($SRAct/moles:dgMetadataDescription), 
    32                         ($SRAct/moles:name), 
    33                         ($SRAct/moles:abbreviation), 
    34                         element dgActivity { 
    35                                 if (exists($SRAct/*/moles:dgActivityDataCollection)) then  
    36                                         ($SRAct/*/moles:dgActivityDataCollection) 
    37                                 else if (exists($SRAct/*/moles:dgActivityDataProject)) then  
    38                                         ($SRAct/*/moles:dgActivityDataProject) 
    39                                 else if (exists($SRAct/*/dgActivityDataCampaign)) then 
    40                                         ($SRAct/moles:dgActivity/moles:dgActivityDataCampaign) 
    41                                 else  
    42                                         ($SRAct/moles:dgActivity/moles:dgActivityDataInvestigation),  
    43                                 ($SRAct/moles:dgActivity/moles:dgActivityCoverage), 
    44                                 ($SRAct/moles:dgActivity/moles:dgActivityDuration) 
    45                         } (: </dgActivity> :)  
    46                 } (: </activity> :)  
     25let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     26                        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     27                        and moles:dgMetadataID/moles:localIdentifier=$locid]) 
     28return   
     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        ) 
    4759} ; 
    4860 
    4961declare function f:return-stub-dataentity($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    50 (: Returns a "stubB" style observation station record to expand an data entity record :) 
    51 (: Security not implemented here; it would be in a wrapper function :) 
    52 { 
    53     for $SRDE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    54         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    55         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    56         return   
    57         element {$out-element-name}  
    58           { 
    59                 ($SRDE/moles:dgMetadataID), 
    60                 ($SRDE/moles:dgMetadataDescription), 
    61                 ($SRDE/moles:name), 
    62                 ($SRDE/moles:abbreviation), 
    63                 element dgDataEntity { 
    64                         ($SRDE/moles:dgDataEntity/moles:dgDataSetType), 
    65                         ($SRDE/moles:dgDataEntity/moles:dgDataGranule), 
    66                         ($SRDE/moles:dgDataEntity/moles:dgDataSummary) 
    67                 } (: </dgDataEntity> :)          
    68         } 
     62(: Returns a 'stubB' style observation station record to expand an data entity record :) 
     63(: Security not implemented yet :) 
     64{ 
     65let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     66                moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     67                and moles:dgMetadataID/moles:localIdentifier=$locid]) 
     68return   
     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        ) 
    6992} ; 
    7093 
    7194declare function f:return-stub-dpt($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    72 (: Returns a "stubB" style dpt record to expand a dpt record :) 
    73 (: Security not implemented here; it would be in a wrapper function :) 
    74 { 
    75     for $SRDPT in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    76 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    77         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    78         return   
    79                 element {$out-element-name}  
    80                 { 
    81                         ($SRDPT/moles:dgMetadataID), 
    82                         ($SRDPT/moles:dgMetadataDescription), 
    83                         ($SRDPT/moles:name), 
    84                         ($SRDPT/moles:abbreviation), 
    85                         element dgDataProductionTool { 
    86                                 ($SRDPT/moles:dgDataProductionTool/moles:contactDetails), 
    87                                 if (exists($SRDPT/moles:dgDataProductionTool/moles:dgModel)) then 
    88                                         ($SRDPT/moles:dgDataProductionTool/moles:dgModel) 
    89                                 else (), 
    90                                 if (exists($SRDPT/moles:dgDataProductionTool/moles:dgInstrument)) then 
    91                                         ($SRDPT/moles:dgDataProductionTool/moles:dgInstrument) 
    92                                 else () 
    93                                 } (: </dgDataProductionTool> :) 
    94                         } (: </dataproductiontool> :) 
     95(: Returns a 'stubB' style dpt record to expand a dpt record :) 
     96(: Security not implemented yet :) 
     97{ 
     98let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     99                moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     100                and moles:dgMetadataID/moles:localIdentifier=$locid]) 
     101return   
     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        ) 
    95130} ; 
    96131 
    97132declare function f:return-stub-obsstn($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    98 (: Returns a "stubB" style observation station record to expand an observation station record :) 
     133(: Returns a 'stubB' style observation station record to expand an observation station record :) 
    99134(: Security not implemented here yet;  :) 
    100135{ 
    101         for $SRObsStn in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    102                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    103                 and moles:dgMetadataID/moles:localIdentifier=$locid]  
     136let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     137                        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     138                        and moles:dgMetadataID/moles:localIdentifier=$locid]) 
     139return   
     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]  
    104150                return 
    105151                        element {$out-element-name} { 
     
    122168                                        else () 
    123169                                } (: </dgObservationStation> :) 
    124                         }  
     170                        } 
     171        ) 
    125172} ; 
    126173 
    127174declare function f:return-stub-person($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    128 (: Returns a "stubB" style observation station record to expand a person record :) 
    129 (: Security not implemented here; it would be in a wrapper function :) 
    130 { 
    131 for $person in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
    132         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    133         and moles:dgMetadataID/moles:localIdentifier=$locid]  
     175(: Returns a 'stubB' style observation station record to expand a person record :) 
     176(: Security not implemented yet :) 
     177{ 
     178let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
     179                        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     180                        and moles:dgMetadataID/moles:localIdentifier=$locid]) 
     181return   
     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]  
    134192        return  
    135193                element  {$out-element-name}  
     
    139197                        ($person/moles:dgMetadataID) 
    140198                } 
     199        ) 
    141200} ; 
    142201 
    143202declare function f:return-stub-organisation($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    144 (: Returns a "stubB" style observation station record to expand an organisation record :) 
    145 (: Security not implemented here; it would be in a wrapper function :) 
    146 { 
    147 for $org in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgOrganisation[ 
    148         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    149         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    150         return  
    151                 element  {$out-element-name} { 
    152                         ($org/moles:dgMetadataID), 
    153                         ($org/name), 
    154                         ($org/abbreviation), 
    155                         ($org/contactDetails) 
    156                 } 
     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                ) 
    157229} ; 
    158230 
     
    210282                                $RelDep/moles:dgMetadataID, 
    211283                                f:return-stub-activity('activity', data($RelDep/moles:ActivityID/moles:repositoryIdentifier), data($RelDep/moles:ActivityID/moles:localIdentifier)), 
    212                                 f:return-stub-dpt('dataproductiontool', data($RelDep/moles:DataProductionToolID/moles:repositoryIdentifier), data($RelDep/moles:DataProductionToolID/moles:localIdentifier)), 
     284                                f:return-stub-dpt('dataproductiontool', data($RelDep/moles:DataProductionToolID/moles:repositoryIdentifier), data($RelDep/moles:DataProductionToolID/moles:localIdentifier)),  
    213285                                for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord 
    214286                                        where $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier 
     
    220292                } (: </dgObservationStation> :),  
    221293        for $strkwrd in $ObsStn/moles:dgStructuredKeyword return $strkwrd, 
    222         if (exists($ObsStn/moles:DataProvenance)) then $ObsStn/moles:DataProvenance else (), 
    223         if (exists($ObsStn/moles:MetadataSecurity)) then $ObsStn/moles:MetadataSecurity else () 
     294        if (exists($ObsStn/moles:dgMetadataProvenance)) then $ObsStn/moles:dgMetadataProvenance else (), 
     295        if (exists($ObsStn/moles:dgMetadataSecurity)) then $ObsStn/moles:dgMetadataSecurity else () 
    224296        } (: End </dgMetadataRecord> :) 
    225297) (: End namespace strip :) 
Note: See TracChangeset for help on using the changeset viewer.