Changeset 1661 for TI07-MOLES/trunk


Ignore:
Timestamp:
02/11/06 16:34:28 (13 years ago)
Author:
ko23
Message:

Refactoring XQuery - activity

File:
1 edited

Legend:

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

    r1656 r1661  
    1919} ; 
    2020 
    21 for $Act in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgActivity!='' and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' and moles:dgMetadataID/moles:repositoryIdentifier='badc.nerc.ac.uk' and moles:dgMetadataID/moles:localIdentifier='activity1'] 
     21declare 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{ 
     25for $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                        f:strip-namespace($SRAct/moles:dgMetadataID), 
     31                        f:strip-namespace($SRAct/moles:dgMetadataDescription), 
     32                        f:strip-namespace($SRAct/moles:name), 
     33                        f:strip-namespace($SRAct/moles:abbreviation), 
     34                        element dgActivity { 
     35                                if (exists($SRAct/*/moles:dgActivityDataCollection)) then  
     36                                        f:strip-namespace($SRAct/*/moles:dgActivityDataCollection) 
     37                                else if (exists($SRAct/*/moles:dgActivityDataProject)) then  
     38                                        f:strip-namespace($SRAct/*/moles:dgActivityDataProject) 
     39                                else if (exists($SRAct/*/dgActivityDataCampaign)) then 
     40                                        f:strip-namespace($SRAct/moles:dgActivity/moles:dgActivityDataCampaign) 
     41                                else  
     42                                        f:strip-namespace($SRAct/moles:dgActivity/moles:dgActivityDataInvestigation),  
     43                                f:strip-namespace($SRAct/moles:dgActivity/moles:dgActivityCoverage), 
     44                                f:strip-namespace($SRAct/moles:dgActivity/moles:dgActivityDuration) 
     45                        } (: </dgActivity> :)  
     46                } (: </activity> :)  
     47} ; 
     48 
     49declare 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 activity record :) 
     51(: Security not implemented here; it would be in a wrapper function :) 
     52{ 
     53    for $SRDE in collection('/db/moles')/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                f:strip-namespace($SRDE/moles:dgMetadataID), 
     60                f:strip-namespace($SRDE/moles:dgMetadataDescription), 
     61                f:strip-namespace($SRDE/moles:name), 
     62                f:strip-namespace($SRDE/moles:abbreviation), 
     63                element dgDataEntity { 
     64                        f:strip-namespace($SRDE/moles:dgDataEntity/moles:dgDataSetType), 
     65                        f:strip-namespace($SRDE/moles:dgDataEntity/moles:dgDataGranule), 
     66                        f:strip-namespace($SRDE/moles:dgDataEntity/moles:dgDataSummary) 
     67                } (: </dgDataEntity> :)          
     68        } 
     69} ; 
     70 
     71declare 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 an activity record :) 
     73(: Security not implemented here; it would be in a wrapper function :) 
     74{ 
     75    for $SRDPT in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord[ 
     76moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     77        and moles:dgMetadataID/moles:localIdentifier=$locid]  
     78        return   
     79                element {$out-element-name}  
     80                { 
     81                        f:strip-namespace($SRDPT/moles:dgMetadataID), 
     82                        f:strip-namespace($SRDPT/moles:dgMetadataDescription), 
     83                        f:strip-namespace($SRDPT/moles:name), 
     84                        f:strip-namespace($SRDPT/moles:abbreviation), 
     85                        element dgDataProductionTool { 
     86                                f:strip-namespace($SRDPT/moles:dgDataProductionTool/moles:contactDetails), 
     87                                if (exists($SRDPT/moles:dgDataProductionTool/moles:dgModel)) then 
     88                                        f:strip-namespace($SRDPT/moles:dgDataProductionTool/moles:dgModel) 
     89                                else (), 
     90                                if (exists($SRDPT/moles:dgDataProductionTool/moles:dgInstrument)) then 
     91                                        f:strip-namespace($SRDPT/moles:dgDataProductionTool/moles:dgInstrument) 
     92                                else () 
     93                                } (: </dgDataProductionTool> :) 
     94                        } (: </dataproductiontool> :) 
     95} ; 
     96 
     97declare 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 activity record :) 
     99(: Security not implemented here; it would be in a wrapper function :) 
     100{ 
     101        for $SRObsStn in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord[ 
     102                moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     103                and moles:dgMetadataID/moles:localIdentifier=$locid]  
     104                return 
     105                        element {$out-element-name} { 
     106                                f:strip-namespace($SRObsStn/moles:dgMetadataID), 
     107                                f:strip-namespace($SRObsStn/moles:dgMetadataDescription), 
     108                                f:strip-namespace($SRObsStn/moles:name), 
     109                                f:strip-namespace($SRObsStn/moles:abbreviation), 
     110                                element dgObservationStation { 
     111                                        f:strip-namespace($SRObsStn/moles:dgObservationStation/moles:contactDetails), 
     112                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then 
     113                                                f:strip-namespace($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform) 
     114                                        else (), 
     115                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then  
     116                                                f:strip-namespace($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform) 
     117                                        else () 
     118                                } (: </dgObservationStation> :) 
     119                        }  
     120} ; 
     121 
     122declare function f:return-stub-person($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
     123(: Returns a "stubB" style observation station record to expand an activity record :) 
     124(: Security not implemented here; it would be in a wrapper function :) 
     125{ 
     126for $person in collection('/db/moles')/moles:dgMetadata/moles:dgPerson[ 
     127        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     128        and moles:dgMetadataID/moles:localIdentifier=$locid]  
     129        return  
     130                element  {$out-element-name}  
     131                { 
     132                        f:strip-namespace($person) 
     133                } 
     134} ; 
     135 
     136declare function f:return-stub-organisation($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
     137(: Returns a "stubB" style observation station record to expand an activity record :) 
     138(: Security not implemented here; it would be in a wrapper function :) 
     139{ 
     140for $org in collection('/db/moles')/moles:dgMetadata/moles:dgOrganisation[ 
     141        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     142        and moles:dgMetadataID/moles:localIdentifier=$locid]  
     143        return  
     144                element  {$out-element-name} { f:strip-namespace($org)} 
     145} ; 
     146 
     147 
     148 
     149 
     150for $Act in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord[ 
     151        moles:dgActivity!=''  
     152        and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
     153        and moles:dgMetadataID/moles:repositoryIdentifier='badc.nerc.ac.uk'  
     154        and moles:dgMetadataID/moles:localIdentifier='activity3'] 
    22155return 
    23156element dgMetadataRecord { 
     
    32165        element dgActivity { 
    33166                for $RelatedActivities in $Act/dgActivity/moles:relatedActivity 
    34                         for $RelatedActivity in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
    35                             and moles:dgMetadataID/moles:repositoryIdentifier=$RelatedActivities/moles:relatedActivityID/moles:repositoryIdentifier  
    36                             and moles:dgMetadataID/moles:localIdentifier=$RelatedActivities/moles:relatedActivityID/moles:localIdentifier] 
    37167                        return  
    38                         element relatedActivity { 
    39                                 f:strip-namespace($RelatedActivities/moles:relatedActivityID), 
    40                                 f:strip-namespace($RelatedActivity/moles:name), 
    41                                 f:strip-namespace($RelatedActivity/moles:abbreviation), 
    42                                 f:strip-namespace($RelatedActivities/moles:activityRelation) 
     168                                element relatedActivity { 
     169                                        $RelatedActivities/moles:activityRelation, 
     170                                        f:return-stub-activity('activity', data($RelatedActivities/moles:relatedActivityID/moles:repositoryIdentifier), data($RelatedActivities/moles:relatedActivityID/moles:localIdentifier)) 
    43171                        },      (: </relatedActivity> :) 
    44172                if (exists($Act/moles:dgActivity/moles:dgActivityDataCollection)) then f:strip-namespace($Act/moles:dgActivity/moles:dgActivityDataCollection) 
     
    58186                                                return  
    59187                                                element dgRoleHolder { 
    60                                                         if (exists($PIRole/moles:dgOrganisationID)) then ( 
    61                                                                 for $PIRoleHolder in collection('/db/moles')/moles:dgMetadata/moles:dgOrganisation[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$PIRole/moles:dgOrganisationID/moles:repositoryIdentifier and moles:localIdentifier=$PIRole/moles:dgOrganisationID/moles:localIdentifier]] 
    62                                                                 return f:strip-namespace($PIRoleHolder)) 
     188                                                        if (exists($PIRole/moles:dgOrganisationID)) then  
     189                                                                f:return-stub-organisation('organisation', data($PIRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($PIRole/moles:dgOrganisationID/moles:localIdentifier))  
    63190                                                         else (), 
    64                                                         if (exists($PIRole/moles:dgPersonID)) then ( 
    65                                                                 for $PIRoleHolder in collection('/db/moles')/moles:dgMetadata/moles:dgPerson[ 
    66                                                                     dgMetadataID[ 
    67                                                                         moles:schemeIdentifier='NDG-B0'  
    68                                                                         and moles:repositoryIdentifier=$PIRole/moles:dgPersonID/moles:repositoryIdentifier  
    69                                                                         and moles:localIdentifier=$PIRole/moles:dgPersonID/moles:localIdentifier]] 
    70                                                                 return f:strip-namespace($PIRoleHolder)) 
     191                                                        if (exists($PIRole/moles:dgPersonID)) then  
     192                                                                f:return-stub-person('person', string($PIRole/moles:dgPersonID/moles:repositoryIdentifier), string($PIRole/moles:dgPersonID/moles:localIdentifier))  
    71193                                                         else (), 
    72194                                                        f:strip-namespace($PIRole/moles:startDate), 
     
    176298                        else (), 
    177299                        f:strip-namespace($RelDep/moles:dgMetadataID), 
    178                         for $SRDPT in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord[ 
    179                             (moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
    180                             and moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:DataProductionToolID/moles:repositoryIdentifier  
    181                             and moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:DataProductionToolID/moles:localIdentifier)] 
    182                                 return 
    183                                 element dataproductiontool { 
    184                                         f:strip-namespace($SRDPT/moles:dgMetadataID), 
    185                                         f:strip-namespace($SRDPT/moles:dgMetadataDescription), 
    186                                         f:strip-namespace($SRDPT/moles:name), 
    187                                         f:strip-namespace($SRDPT/moles:abbreviation), 
    188                                         element dgDataProductionTool { 
    189                                                 f:strip-namespace($SRDPT/moles:dgDataProductionTool/moles:contactDetails), 
    190                                                 if (exists($SRDPT/moles:dgDataProductionTool/moles:dgModel)) then 
    191                                                     f:strip-namespace($SRDPT/moles:dgDataProductionTool/moles:dgModel) 
    192                                                 else (), 
    193                                                 if (exists($SRDPT/moles:dgDataProductionTool/moles:dgInstrument)) then 
    194                                                     f:strip-namespace($SRDPT/moles:dgDataProductionTool/moles:dgInstrument) 
    195                                                 else () 
    196                                         } (: </dgDataProductionTool> :) 
    197                                 }, (: </dataproductiontool> :) 
    198                         for $SRObsStn in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord[ 
    199                             (moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
    200                             and moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:ObservationStationID/moles:repositoryIdentifier  
    201                             and moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:ObservationStationID/moles:localIdentifier)] 
    202                                 return 
    203                                 element observationstation { 
    204                                         f:strip-namespace($SRObsStn/moles:dgMetadataID), 
    205                                         f:strip-namespace($SRObsStn/moles:dgMetadataDescription), 
    206                                         f:strip-namespace($SRObsStn/moles:name), 
    207                                         f:strip-namespace($SRObsStn/moles:abbreviation), 
    208                                         element dgObservationStation { 
    209                                                 f:strip-namespace($SRObsStn/moles:dgObservationStation/moles:contactDetails), 
    210                                                 if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then 
    211                                                     f:strip-namespace($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform) 
    212                                                 else (), 
    213                                                 if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then  
    214                                                     f:strip-namespace($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform) 
    215                                                 else () 
    216                                         } (: </dgObservationStation> :) 
    217                                 }, (: </observationstation> :) 
    218                         for $DE in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord[ 
    219                             moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
    220                             and moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier  
    221                             and moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:dgMetadataID/moles:localIdentifier] 
    222                             return 
    223                                 element dataEntity { 
    224                                     f:strip-namespace($DE/moles:dgMetadataID), 
    225                                     f:strip-namespace($DE/moles:dgMetadataDescription), 
    226                                     f:strip-namespace($DE/moles:name), 
    227                                     f:strip-namespace($DE/moles:abbreviation), 
    228                                     element dgDataEntity { 
    229                                         f:strip-namespace($DE/moles:dgDataEntity/moles:dgDataSetType), 
    230                                         f:strip-namespace($DE/moles:dgDataEntity/moles:dgDataGranule), 
    231                                         f:strip-namespace($DE/moles:dgDataEntity/moles:dgDataSummary) 
    232                                     } (: </dgDataEntity> :) 
    233                                     }  (: </dataEntity> :) 
     300                        f:return-stub-dpt('dataproductiontool', data($RelDep/moles:DataProductionToolID/moles:repositoryIdentifier), data($RelDep/moles:DataProductionToolID/moles:localIdentifier)), 
     301                        f:return-stub-obsstn('observationstation', data($RelDep/moles:ObservationStationID/moles:repositoryIdentifier), data($RelDep/moles:ObservationStationID/moles:localIdentifier)), 
     302                        for $DE in collection('/db/moles')/moles:dgMetadata/moles:dgMetadataRecord 
     303                                where $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier 
     304                                        and $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:dgMetadataID/moles:localIdentifier 
     305                        return 
     306                                f:return-stub-dataentity('dataentity', data($DE/moles:dgMetadataID/moles:repositoryIdentifier), data($DE/moles:dgMetadataID/moles:localIdentifier)) 
    234307                }, (: </ActivityDeployment> :) 
    235308                if (exists($Act/dgActivityCoverage)) then 
     
    249322            f:strip-namespace($Act/MetadataSecurity) 
    250323                else () 
    251  
    252  
    253324} (:</dgMRecord>:) 
Note: See TracChangeset for help on using the changeset viewer.