Changeset 1683 for TI07-MOLES


Ignore:
Timestamp:
09/11/06 14:07:39 (13 years ago)
Author:
ko23
Message:

v0.9 of namespaced xqueries

Location:
TI07-MOLES/trunk
Files:
8 edited

Legend:

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

    r1616 r1683  
    1 for $DE in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[exists(dgDataEntity) and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='badc.nerc.ac.uk' and dgMetadataID/localIdentifier='dataent1'] 
     1declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'; 
     2declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
     3declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
     4 
     5for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     6        exists('moles:dgDataEntity')  
     7        and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
     8        and moles:dgMetadataID/moles:repositoryIdentifier='grid.bodc.nerc.ac.uk'  
     9        and moles:dgMetadataID/moles:localIdentifier='HGFS3751'] 
    210return 
    311    <DIF  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'  xmlns='http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/' xsi:schemaLocation='http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'> 
    412        { 
    5         element Entry_ID {concat($DE/dgMetadataID/repositoryIdentifier, ':DIF:', $DE/dgMetadataID/localIdentifier)}, 
    6         element Entry_Title {string($DE/name)}, 
     13        element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':DIF:', $DE/moles:dgMetadataID/moles:localIdentifier)}, 
     14        element Entry_Title {string($DE/moles:name)}, 
    715        element Data_Set_Citation 
    816        { 
    9             for $DataCreatorRole in $DE/dgDataEntity/dgDataRoles/dgDataCreator/dgRoleHolder[not(exists(endDate)) or endDate=''][1] 
     17            for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''][1] 
    1018                return  
    11                     for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0' 
    12                                and dgMetadataID/repositoryIdentifier=$DataCreatorRole/*/repositoryIdentifier 
    13                                and dgMetadataID/localIdentifier=$DataCreatorRole/*/localIdentifier)] 
     19                    for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
     20                               and moles:dgMetadataID/moles:repositoryIdentifier=$DataCreatorRole/*/moles:repositoryIdentifier 
     21                               and moles:dgMetadataID/moles:localIdentifier=$DataCreatorRole/*/moles:localIdentifier)] 
    1422                        return  
    1523                            element Data_Creator  
    1624                                { 
    17                                 if (exists($DataCreatorRoleHolder/name/initials)) then  
    18                                     (string(concat(string($DataCreatorRoleHolder/name/initials), ' ', string($DataCreatorRoleHolder/name/familyName)))) 
     25                                if (exists($DataCreatorRoleHolder/moles:name/moles:initials)) then  
     26                                    string(concat(string($DataCreatorRoleHolder/moles:name/moles:initials), ' ', string($DataCreatorRoleHolder/moles:name/moles:familyName))) 
    1927                                else  
    20                                    (string($DataCreatorRoleHolder/abbreviation)) 
     28                                   string($DataCreatorRoleHolder/moles:abbreviation) 
    2129                                }, 
    22             element Dataset_Title {string($DE/name)} 
     30            element Dataset_Title {string($DE/moles:name)} 
    2331        }, 
    2432         
     
    2634        element Discipline {''}, 
    2735         
    28         for $StructuredKeyword in ($DE//(dgStructuredKeyword | dgStdParameterMeasured)[dgValidTermID/ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' and ListLevel = 0]) 
    29                 return if (exists($StructuredKeyword/*/dgValidTerm)) then ( 
     36        for $StructuredKeyword in ($DE//(moles:dgStructuredKeyword | moles:dgStdParameterMeasured)[moles:dgValidTermID/moles:ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html' and moles:ListLevel = 0]) 
     37                return if (exists($StructuredKeyword/*/moles:dgValidTerm)) then  
    3038                    element Parameters 
    3139                        { 
    32                         element Category {string($StructuredKeyword/*/dgValidTerm)}, 
    33                         if (exists($StructuredKeyword//dgValidSubterm)  
    34                                 and $StructuredKeyword//dgValidSubterm != ''  
    35                                 and $StructuredKeyword//dgValidSubterm != ' ') then ( 
    36                         for $Subterm in $StructuredKeyword//dgValidSubterm[exists(dgValidTerm)] 
    37                             where exists($Subterm/dgValidSubterm) 
    38                             order by $Subterm/ListLevel 
     40                        element Category {string($StructuredKeyword/*/moles:dgValidTerm)}, 
     41                        if (exists($StructuredKeyword//moles:dgValidSubterm)  
     42                                and $StructuredKeyword//moles:dgValidSubterm != ''  
     43                                and $StructuredKeyword//moles:dgValidSubterm != ' ') then  
     44                        for $Subterm in $StructuredKeyword//moles:dgValidSubterm[exists(moles:dgValidTerm)] 
     45                            where exists($Subterm/moles:dgValidSubterm) 
     46                            order by $Subterm/moles:ListLevel 
    3947                                return  
    40                                         if ($Subterm/ListLevel=1) then (element Topic {string($Subterm/dgValidSubterm/dgValidTerm)})  
    41                                         else ( 
    42                                         if ($Subterm/ListLevel=2) then (element Term {string($Subterm/dgValidSubterm/dgValidTerm)})  
    43                                         else ( 
    44                                         if ($Subterm/ListLevel=3) then (element Variable {string($Subterm/dgValidSubterm/dgValidTerm)})  
    45                                         else ( 
    46                                         if ($Subterm/ListLevel=4) then (element Detailed_Variable {string($Subterm/dgValidSubterm/dgValidTerm)})  
    47                                         else (element GCMD_Science_Valid {string($Subterm/dgValidSubterm/dgValidTerm)})))) 
    48                                 )        
     48                                        if ($Subterm/moles:ListLevel=1) then element Topic {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  
     49                                        else if ($Subterm/moles:ListLevel=2) then element Term {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  
     50                                        else if ($Subterm/moles:ListLevel=3) then element Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  
     51                                        else if ($Subterm/moles:ListLevel=4) then element Detailed_Variable {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)}  
     52                                        else element GCMD_Science_Valid {string($Subterm/moles:dgValidSubterm/moles:dgValidTerm)} 
    4953                        else() 
    5054                    } 
    51                 ) 
    5255                else(), 
    53         for $ISOTopicCategory in ($DE/dgStructuredKeyword[dgValidTermID/ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) 
     56        for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[moles:dgValidTermID/moles:ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) 
    5457            return  
    55                 element ISO_Topic_Category {string($ISOTopicCategory/dgValidTerm)}, 
    56  
    57         for $Keyword in distinct-values($DE//dgStructuredKeyword[ 
    58         dgValidTermID/ParentListID!='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'   
     58                element ISO_Topic_Category {string($ISOTopicCategory/moles:dgValidTerm)}, 
     59 
     60        for $Keyword in distinct-values($DE//moles:dgStructuredKeyword[ 
     61        moles:dgValidTermID/moles:ParentListID!='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'   
    5962        and  
    60         dgValidTermID/ParentListID!='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'   
    61         ]/dgValidTerm) 
     63        moles:dgValidTermID/moles:ParentListID!='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'   
     64        ]/moles:dgValidTerm) 
    6265        return element Keyword {string($Keyword)},  
    6366            
    64         for $DepDPT in ($DE/dgDataEntity/RelatedDeployment/DataProductionToolID)   
     67        for $DepDPT in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:DataProductionToolID)   
    6568        return  
    6669            element Sensor_Name 
    6770                { 
    68                 for $DepDPTAbbrev in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepDPT/repositoryIdentifier and localIdentifier=$DepDPT/localIdentifier]]/abbreviation)) 
     71                for $DepDPTAbbrev in distinct-values((collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:abbreviation)) 
    6972                    return element Short_Name {data($DepDPTAbbrev)}, 
    70                 for $DepDPTName in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepDPT/repositoryIdentifier and localIdentifier=$DepDPT/localIdentifier]]/name)) 
     73                for $DepDPTName in distinct-values((collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepDPT/moles:repositoryIdentifier and moles:localIdentifier=$DepDPT/moles:localIdentifier]]/moles:name)) 
    7174                    return element Long_Name {data($DepDPTName)} 
    7275                }, 
    73         for $DepObsStn in ($DE/dgDataEntity/RelatedDeployment/ObservationStationID) 
     76        for $DepObsStn in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ObservationStationID) 
    7477        return  
    7578            element Source_Name 
    7679                { 
    77                 for $DepObsStnAbbrev in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepObsStn/repositoryIdentifier and localIdentifier=$DepObsStn/localIdentifier]]/abbreviation)) 
     80                for $DepObsStnAbbrev in distinct-values((collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:abbreviation)) 
    7881                    return element Short_Name {data($DepObsStnAbbrev)}, 
    79                 for $DepObsStnName in distinct-values((collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepObsStn/repositoryIdentifier and localIdentifier=$DepObsStn/localIdentifier]]/name)) 
     82                for $DepObsStnName in distinct-values((collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepObsStn/moles:repositoryIdentifier and moles:localIdentifier=$DepObsStn/moles:localIdentifier]]/moles:name)) 
    8083                    return element Long_Name {data($DepObsStnName)} 
    8184                }, 
    8285 
    83         for $TemporalRange in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage//dgDateRange) 
     86        for $TemporalRange in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgDateRange) 
    8487                return  
    8588                    element Temporal_Coverage 
    8689                        { 
    87                         element Start_Date {data($TemporalRange/DateRangeStart)}, 
    88                         element End_Date {data($TemporalRange/DateRangeEnd)} 
     90                        element Start_Date {data($TemporalRange/moles:DateRangeStart)}, 
     91                        element End_Date {data($TemporalRange/moles:DateRangeEnd)} 
    8992                        }, 
    90         for $TemporalTerm in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage//dgArea/dgValidTerm) 
     93        for $TemporalTerm in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea/moles:dgValidTerm) 
    9194                return element Paleo_Temporal_Coverage  
    9295                    { 
     
    9497                    },  
    9598 
    96         for $Data_Set_Progress in ($DE/dgDataEntity/dgDataSummary/dgDataStatus/dgDatasetClosure) 
     99        for $Data_Set_Progress in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataStatus/moles:dgDatasetClosure) 
    97100                return element Data_Set_Progress {data($Data_Set_Progress)}, 
    98101 
    99         for $BoundingBox in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage//BoundingBox) 
     102        for $BoundingBox in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:BoundingBox) 
    100103        return  
    101104            element Spatial_Coverage 
    102105                { 
    103                     element Southernmost_Latitude {data($BoundingBox/LimitSouth)}, 
    104                     element Northernmost_Latitude {data($BoundingBox/LimitNorth)}, 
    105                     element Westernmost_Longitude {data($BoundingBox/LimitWest)}, 
    106                     element Easternmost_Longitude {data($BoundingBox/LimitEast)} 
     106                    element Southernmost_Latitude {data($BoundingBox/moles:LimitSouth)}, 
     107                    element Northernmost_Latitude {data($BoundingBox/moles:LimitNorth)}, 
     108                    element Westernmost_Longitude {data($BoundingBox/moles:LimitWest)}, 
     109                    element Easternmost_Longitude {data($BoundingBox/moles:LimitEast)} 
    107110                }, 
    108111 
    109         for $Location in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage//dgArea[dgValidTermID/ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_locations.html']) 
     112        for $Location in ($DE/moles:dgDataEntity/moles:dgDataSummary/moles:dgDataCoverage//moles:dgArea[moles:dgValidTermID/moles:ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_locations.html']) 
    110113                return element Location {$Location},  
    111114        element Data_Resolution {''}, 
    112         for $DepAct in ($DE/dgDataEntity/RelatedDeployment/ActivityID) 
     115        for $DepAct in ($DE/moles:dgDataEntity/moles:RelatedDeployment/moles:ActivityID) 
    113116        return  
    114117            element Project 
    115118                { 
    116                 for $DepActAbbrev in distinct-values(collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepAct/repositoryIdentifier and localIdentifier=$DepAct/localIdentifier]]/abbreviation) 
     119                for $DepActAbbrev in distinct-values(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:abbreviation) 
    117120                    return  
    118121                        element Short_Name {data($DepActAbbrev)}, 
    119                 for $DepActName in distinct-values(collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DepAct/repositoryIdentifier and localIdentifier=$DepAct/localIdentifier]]/name) 
     122                for $DepActName in distinct-values(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[moles:dgMetadataID[moles:schemeIdentifier='NDG-B0' and moles:repositoryIdentifier=$DepAct/moles:repositoryIdentifier and moles:localIdentifier=$DepAct/moles:localIdentifier]]/moles:name) 
    120123                    return  
    121124                        element Long_Name {data($DepActName)} 
     
    124127        element Quality {''}, 
    125128 
    126         if (exists($DE/dgDataEntity/dgDataGranule/accessControlPolicy)) then ( 
    127                 for $DG in $DE/dgDataEntity/dgDataGranule 
     129        if (exists($DE/moles:dgDataEntity/moles:dgDataGranule/moles:accessControlPolicy)) then  
     130                for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule 
    128131                    return  
    129132                                element Access_Constraints  
    130133                            { 
    131                                 if (exists($DG/dgGranuleSummary/dgGranuleName)) then  
    132                                     concat('For data granule ', $DG/dgGranuleSummary/dgGranuleName, ': ') 
     134                                if (exists($DG/moles:dgGranuleSummary/moles:dgGranuleName)) then  
     135                                    concat('For data granule ', $DG/moles:dgGranuleSummary/moles:dgGranuleName, ': ') 
    133136                                else (), 
    134                                 if (exists($DG/accessControlPolicy/accessControlPolicyURL)) then 
    135                                     concat('See access control policy at ', escape-uri($DG/accessControlPolicy/accessControlPolicyURL, true())) 
    136                                 else if (exists($DG/accessControlPolicy/accessControlPolicyText)) then 
    137                                     ( 
    138                                     data($DG/accessControlPolicy/accessControlPolicyText) 
    139                                     ) 
    140                                  else ( 
    141                                      for $securityCondition in $DG/accessControlPolicy/dgSecurityCondition 
     137                                if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyURL)) then 
     138                                    concat('See access control policy at ', escape-uri($DG/moles:accessControlPolicy/moles:accessControlPolicyURL, true())) 
     139                                else if (exists($DG/moles:accessControlPolicy/moles:accessControlPolicyText)) then 
     140                                    data($DG/moles:accessControlPolicy/moles:accessControlPolicyText) 
     141                                 else  
     142                                     for $securityCondition in $DG/moles:accessControlPolicy/moles:dgSecurityCondition 
    142143                                     return 
    143                                          if (exists($securityCondition/conditionExplanationText)) then 
    144                                              concat('Effect: ', data($securityCondition/effect), ' - ', data($securityCondition/conditionExplanationText)) 
    145                                          else ( 
    146                                              concat('Effect: ', data($securityCondition/effect), 'needs ', data($securityCondition/attauthRole), ' from ', data($securityCondition/dgAttributeAuthority)) 
    147                                          ) 
    148                                      ) 
     144                                         if (exists($securityCondition/moles:conditionExplanationText)) then 
     145                                             concat('Effect: ', data($securityCondition/moles:effect), ' - ', data($securityCondition/moles:conditionExplanationText)) 
     146                                         else concat('Effect: ', data($securityCondition/moles:effect), 'needs ', data($securityCondition/moles:attauthRole), ' from ', data($securityCondition/moles:dgAttributeAuthority)) 
    149147                            } 
    150             ) 
    151148                else (), 
    152149 
     
    155152        element Originating_Center {''}, 
    156153 
    157         for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder[not(exists(endDate)) or endDate=''] 
     154        for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''] 
    158155            return  
    159                 for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0' 
    160                    and dgMetadataID/repositoryIdentifier=$DataCuratorRole/*/repositoryIdentifier 
    161                    and dgMetadataID/localIdentifier=$DataCuratorRole/*/localIdentifier)] 
     156                for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/moles:dgMetadata/*[(moles:dgMetadataID/moles:schemeIdentifier='NDG-B0' 
     157                   and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/*/moles:repositoryIdentifier 
     158                   and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/*/moles:localIdentifier)] 
    162159                    return  
    163160                        element Data_Center 
     
    167164                                element Short_Name  
    168165                                    { 
    169                                     if (exists($DataCuratorRoleHolder/name/initials)) then ( 
    170                                     string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName))) 
    171                                 ) 
     166                                    if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  
     167                                    string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) 
    172168                            else  
    173                                 (string($DataCuratorRoleHolder/abbreviation)) 
     169                                string($DataCuratorRoleHolder/moles:abbreviation) 
    174170                            }, 
    175171                        element Long_Name  
    176172                            { 
    177                                 if (exists($DataCuratorRoleHolder/name/initials)) then  
    178                                     (string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName)))) 
    179                                 else (string($DataCuratorRoleHolder/name)) 
     173                                if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  
     174                                    string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName))) 
     175                                else string($DataCuratorRoleHolder/moles:name) 
    180176                            } 
    181177                        }, 
    182                         if (exists($DataCuratorRoleHolder/contactDetails/URI)) then  
    183                             ( 
    184                                 element Data_Center_URL  
    185                                     {data($DataCuratorRoleHolder/contactDetails/URI)} 
    186                             ) 
     178                        if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:URI)) then  
     179                                element Data_Center_URL {data($DataCuratorRoleHolder/moles:contactDetails/moles:URI)} 
    187180                        else (), 
    188                         for $DGID in $DE/dgDataEntity/dgDataGranule/dataModelID 
     181                        for $DGID in $DE/moles:dgDataEntity/moles:dgDataGranule/moles:dataModelID 
    189182                        return  
    190183                            element Data_Set_ID  
    191                                 { 
    192                                     concat($DGID/repositoryIdentifier, ':', $DGID/schemeIdentifier, ':', $DGID/localIdentifier) 
    193                                 }, 
     184                                {concat($DGID/moles:repositoryIdentifier, ':', $DGID/moles:schemeIdentifier, ':', $DGID/moles:localIdentifier)}, 
    194185                        element  Personnel 
    195186                            { 
    196187                                element Role {'Data Center Contact'}, 
    197188                                if (exists($DataCuratorRoleHolder/name/knownAs)) then  
    198                                     (element First_Name {string($DataCuratorRoleHolder/name/knownAs)}) 
    199                                 else if (exists($DataCuratorRoleHolder/name/initials)) then  
    200                                     (element First_Name {string($DataCuratorRoleHolder/name/initials)}) 
     189                                    element First_Name {string($DataCuratorRoleHolder/moles:name/moles:knownAs)} 
     190                                else if (exists($DataCuratorRoleHolder/moles:name/moles:initials)) then  
     191                                    element First_Name {string($DataCuratorRoleHolder/moles:name/moles:initials)} 
    201192                                 else (),                                        
    202193                                 element Last_Name  
    203194                                      { 
    204                                           if (exists($DataCuratorRoleHolder/name/familyName)) then  
    205                                               (string($DataCuratorRoleHolder/name/familyName)) 
    206                                     else (string($DataCuratorRoleHolder/name)) 
     195                                          if (exists($DataCuratorRoleHolder/moles:name/moles:familyName)) then  
     196                                              string($DataCuratorRoleHolder/moles:name/moles:familyName) 
     197                                    else string($DataCuratorRoleHolder/moles:name) 
    207198                                    }, 
    208                                 if (exists($DataCuratorRole/contactDetails/eMail)) then  
    209                                     (element Email {string($DataCuratorRole/contactDetails/eMail)}) 
     199                                if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then  
     200                                    element Email {string($DataCuratorRole/moles:contactDetails/moles:eMail)} 
    210201                                else  
    211                                     (if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then  
    212                                             (element Email {string($DataCuratorRoleHolder/contactDetails/eMail)}) 
    213                                         else () 
    214                                     ), 
    215  
    216                                 if (exists($DataCuratorRole/contactDetails/telephone)) then  
    217                                     (element Phone {string($DataCuratorRole/contactDetails/telephone)}) 
    218                                 else  
    219                                     (if (exists($DataCuratorRoleHolder/contactDetails/telephone)) then  
    220                                             (element Phone {string($DataCuratorRoleHolder/contactDetails/telephone)}) 
    221                                         else () 
    222                                             ), 
    223                                 if (exists($DataCuratorRole/contactDetails/fax)) then  
    224                                     (element Fax {string($DataCuratorRole/contactDetails/fax)}) 
    225                                 else  
    226                                     (if (exists($DataCuratorRoleHolder/contactDetails/fax)) then  
    227                                             (element Fax {string($DataCuratorRoleHolder/contactDetails/fax)}) 
    228                                         else () 
    229                                     ), 
    230                                 if (exists($DataCuratorRole/contactDetails/address)) then  
    231                                     (element Contact_Address { 
    232                                         for $addressline in $DataCuratorRole/contactDetails/address/addressline 
     202                                    if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then  
     203                                            (element Email {string($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)}) 
     204                                        else (), 
     205 
     206                                if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then  
     207                                    element Phone {string($DataCuratorRole/moles:contactDetails/moles:telephone)} 
     208                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then  
     209                                            element Phone {string($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)} 
     210                                 else (), 
     211                                if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then  
     212                                    element Fax {string($DataCuratorRole/moles:contactDetails/moles:fax)} 
     213                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then  
     214                                            element Fax {string($DataCuratorRoleHolder/moles:contactDetails/moles:fax)} 
     215                                        else (), 
     216                                if (exists($DataCuratorRole/moles:contactDetails/moles:address)) then  
     217                                    element Contact_Address { 
     218                                        for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline 
    233219                                            return element address {$addressline}, 
    234                                                         if (exists($DataCuratorRole/contactDetails/address/city)) then  
    235                                         (element City {string($DataCuratorRole/contactDetails/address/city)}) 
     220                                                        if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then  
     221                                        element City {string($DataCuratorRole/moles:contactDetails/moles:address/moles:city)} 
    236222                                    else (), 
    237                                     if (exists($DataCuratorRole/contactDetails/address/postcode)) then  
    238                                         (element Postal_Code {string($DataCuratorRole/contactDetails/address/postcode)}) 
     223                                    if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)) then  
     224                                        element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:address/moles:postcode)} 
    239225                                    else (), 
    240                                      if (exists($DataCuratorRole/contactDetails/address/country)) then  
    241                                          (element Country {string($DataCuratorRole/contactDetails/address/country)}) 
     226                                     if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:country)) then  
     227                                         element Country {string($DataCuratorRole/moles:contactDetails/moles:address/moles:country)} 
    242228                                     else () 
    243229                                     } 
    244                                     ) 
    245                                 else if (exists($DataCuratorRoleHolder/contactDetails/address)) then  
    246                                     (element Contact_Address  
     230                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address)) then  
     231                                    element Contact_Address  
    247232                                    { 
    248                                         for $addressline in $DataCuratorRole/contactDetails/address/addressline 
     233                                        for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline 
    249234                                            return element address {$addressline}, 
    250                                                             if (exists($DataCuratorRole/contactDetails/address/city)) then  
    251                                             (element City {string($DataCuratorRoleHolder/contactDetails/address/city)}) 
     235                                                            if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then  
     236                                            element City {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)} 
    252237                                        else (), 
    253                                         if (exists($DataCuratorRoleHolder/contactDetails/address/postcode)) then  
    254                                             (element Postal_Code {string($DataCuratorRole/contactDetails/postcode)}) 
     238                                        if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then  
     239                                            element Postal_Code {string($DataCuratorRole/moles:contactDetails/moles:postcode)} 
    255240                                        else (), 
    256                                          if (exists($DataCuratorRoleHolder/contactDetails/address/country)) then  
    257                                              (element Country {string($DataCuratorRoleHolder/contactDetails/address/country)}) 
     241                                         if (exists($DataCuratorRoleHolder/contactDetails/moles:address/moles:country)) then  
     242                                             element Country {string($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:country)} 
    258243                                         else () 
    259244                                     } 
    260                                     ) 
    261245                                else () 
    262246                                 } 
     
    266250        element Reference {''}, 
    267251 
    268         element Summary {string($DE/dgMetadataDescription/abstract/abstractText)}, 
     252        element Summary {string($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)}, 
    269253 
    270254        element Related_URL  
    271255            { 
    272256            element URL_Content_Type {'NDG_B_SERVICE'}, 
    273             element URL {data($DE/dgMetadataID/repositoryIdentifier)}, 
     257            element URL {data($DE/moles:dgMetadataID/moles:repositoryIdentifier)}, 
    274258            element Description {'The NDG service for browsing metadata.'} 
    275259            }, 
    276260 
    277         for $DG in $DE/dgDataEntity/dgDataGranule 
    278             return  
    279                 if ($DG/dataModelID/schemeIdentifier='NDG-A0') then  
    280                     ( 
    281                     element Related_URL  
     261        for $DG in $DE/moles:dgDataEntity/moles:dgDataGranule 
     262            return 
     263                if ($DG/moles:dataModelID/moles:schemeIdentifier='NDG-A0') then  
     264                    (element Related_URL  
    282265                        { 
    283266                            element URL_Content_Type {'NDG_A_SERVICE'}, 
    284                             element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())}, 
     267                            if (exists($DG/instance/URI)) then 
     268                                element URL {escape-uri($DG/instance/URI, true())} 
     269                            else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then 
     270                                element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())} 
     271                            else ($DG/moles:dataModelID/moles:repositoryIdentifier), 
    285272                            element Description {'The NDG service delivering data via NDG A metadata.'} 
    286273                        }, 
    287                    element Related_URL  
    288                         { 
     274                   element Related_URL { 
    289275                            element URL_Content_Type {'GET DATA > CSML'}, 
    290                             element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())}, 
     276                            if (exists($DG/instance)) then 
     277                                element URL {escape-uri($DG/instance/URI, true())} 
     278                            else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then 
     279                                element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())} 
     280                            else (), 
    291281                            element Description {'The NDG service delivering data via NDG A metadata. Additional tag to be more in line with latest version of GCMD valids'} 
    292                         } 
    293                     ) 
    294                 else if ($DG/dataModelID/schemeIdentifier='CDML-0') then  
    295                     ( 
    296                         element Related_URL  
    297                             { 
     282                        }) 
     283                else if ($DG/moles:dataModelID/moles:schemeIdentifier='CDML-0') then  
     284                        (element Related_URL {  
    298285                                   element URL_Content_Type {'NDG_A_SERVICE'}, 
    299                             element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}, 
     286                            if (exists($DG/instance)) then 
     287                                element URL {escape-uri($DG/instance/URI, true())} 
     288                            else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then 
     289                                element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())} 
     290                            else (), 
    300291                            element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'} 
    301292                            }, 
     
    303294                            { 
    304295                            element URL_Content_Type {'GET DATA > DX'}, 
    305                             element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}, 
     296                            if (exists($DG/instance)) then 
     297                                element URL {escape-uri($DG/instance/URI, true())} 
     298                            else if ($DG/moles:dataModelID/moles:repositoryIdentifier='badc.nerc.ac.uk') then 
     299                                element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())} 
     300                            else (), 
    306301                            element Description {'The NDG service delivering data via Data extractor. Additional tag to be more in line with latest version of GCMD valids'} 
    307                             } 
    308                     ) 
    309                 else if ($DG/dataModelID/schemeIdentifier='URI') then  
    310                     ( 
     302                            }) 
     303                else if ($DG/moles:dataModelID/moles:schemeIdentifier='URI') then  
    311304                    element Related_URL 
    312305                        { 
    313                             element URL {data($DG/instance/URI)}, 
    314                             if (exists($DG/instance/instanceComment)) then  
    315                                 ( 
    316                                     element Description {data($DG/instance/instanceComment)}         
    317                                 ) 
     306                            element URL {data($DG/moles:instance/moles:URI)}, 
     307                            if (exists($DG/moles:instance/moles:instanceComment)) then  
     308                                    element Description {data($DG/moles:instance/moles:instanceComment)}             
    318309                            else  
    319                                 ( 
    320                                     element Description {'URL to aid in delivering data. Note that this may point directly to the data or, more likely, point to the web site of the curators.'} 
    321                                 ) 
     310                                    element Description {'URL to aid in delivering data. Note that this may point directly to the data or, more likely, point to the web site of the curator.'} 
    322311                            } 
    323                     ) 
    324             else (), 
    325             for $RelURL_Desc in ($DE/dgMetadataDescription/descriptionSection/descriptionOnlineReference)  
     312            else ($DG), 
     313            for $RelURL_Desc in ($DE/moles:dgMetadataDescription/moles:descriptionSection/moles:descriptionOnlineReference)  
    326314            return 
    327315                    element Related_URL 
    328316                        { 
    329317                            element URL {data($RelURL_Desc)}, 
    330                             element Description {concat(data($RelURL_Desc/name), ' - ', data($RelURL_Desc/notes))}           
     318                            element Description {concat(data($RelURL_Desc/moles:name), ' - ', data($RelURL_Desc/moles:notes))}               
    331319                         }, 
    332              
    333  
    334320        element Parent_DIF {''}, 
    335321        element IDN_Node {''}, 
     
    337323        element Metadata_Name {'[CEOS IDN DIF]'}, 
    338324        element Metadata_Version {'9.4'}, 
    339  
    340         if  (exists($DE/dgMetadataProvenance/RecordCreation)) then  
    341             ( 
    342                 element DIF_Creation_Date {data($DE/dgMetadataProvenance/RecordCreation/CreatedDate)} 
    343             ) 
     325        if  (exists($DE/moles:dgMetadataProvenance/moles:RecordCreation)) then  
     326                element DIF_Creation_Date {data($DE/moles:dgMetadataProvenance/moles:RecordCreation/moles:CreatedDate)} 
    344327        else (), 
    345  
    346         for $MDUpdt in $DE/dgMetadataProvenance/RecordUpdate 
     328        for $MDUpdt in $DE/moles:dgMetadataProvenance/moles:RecordUpdate 
    347329        return   
    348             element DIF_Revision_History {concat(data($MDUpdt/UpdateDate), ' - ', data($MDUpdt/UpdateSummary), ' - ', data($MDUpdt/UpdatedBy))} 
    349                 , 
    350         if  (exists($DE/dgMetadataProvenance/RecordReview)) then  
    351             ( 
    352                 element Future_DIF_Review_Date {data($DE/dgMetadataProvenance/RecordReview/ReviewDate)} 
    353             ) 
     330            element DIF_Revision_History {concat(data($MDUpdt/moles:UpdateDate), ' - ', data($MDUpdt/moles:UpdateSummary), ' - ', data($MDUpdt/moles:UpdatedBy))}, 
     331        if  (exists($DE/moles:dgMetadataProvenance/moles:RecordReview)) then  
     332                element Future_DIF_Review_Date {data($DE/moles:dgMetadataProvenance/moles:RecordReview/moles:ReviewDate)} 
    354333        else () 
    355334        } 
  • TI07-MOLES/trunk/DublinCore/XQuery/NDG-DublinCore.xquery

    r1616 r1683  
     1declare default element namespace 'http://ndg.nerc.ac.uk/moles'; 
    12declare namespace dc='http://purl.org/dc/elements/1.1/'; 
    23declare namespace oai_dc='http://www.openarchives.org/OAI/2.0/oai_dc'; 
  • TI07-MOLES/trunk/ISO19115-19139/XQuery/NDG-ISO19115-139.xquery

    r1562 r1683  
    1 for $DE in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[exists('dgDataEntity') and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='grid.bodc.nerc.ac.uk' and dgMetadataID/localIdentifier='HGFS4082'] 
     1declare default element namespace 'http://www.isotc211.org/2005/gmd'; 
     2declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
     3declare namespace gco='http://www.isotc211.org/2005/gco'; 
     4declare namespace gmd='http://www.isotc211.org/2005/gmd';  
     5declare namespace gml='http://www.opengis.net/gml'; 
     6declare namespace xlink='http://www.w3.org/1999/xlink';  
     7declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';  
     8declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
     9 
     10for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     11        exists(moles:dgDataEntity)  
     12        and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
     13        and moles:dgMetadataID/moles:repositoryIdentifier='badc.nerc.ac.uk'  
     14        and moles:dgMetadataID/moles:localIdentifier='dataent1'] 
    215return  
    3 <MD_Metadata  
    4     xmlns='http://www.isotc211.org/2005/gmd' 
    5     xmlns:gco='http://www.isotc211.org/2005/gco' 
    6     xmlns:gmd='http://www.isotc211.org/2005/gmd'  
    7     xmlns:gml='http://www.opengis.net/gml' 
    8     xmlns:xlink='http://www.w3.org/1999/xlink'  
    9     xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'  
    10     xsi:schemaLocation='http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmd/metadataEntity.xsd'> 
     16element MD_Metadata {  
     17        attribute xsi:schemaLocation {'http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmd/metadataEntity.xsd'}, 
     18        element fileIdentifier {element gco:CharacterString {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':ISO19115:', $DE/moles:dgMetadataID/moles:localIdentifier)}}, 
     19        element language { 
     20                element gmd:LanguageCode { 
     21                        attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#LanguageCode'}, 
     22                        attribute codeListValue {'eng'}, 
     23                        'English'} 
     24        } (: </language> :), 
     25        element hierarchyLevel { 
     26                element MD_ScopeCode { 
     27                        attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode'}, 
     28                        attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode_dataset'}, 
     29                        'dataset'} 
     30        } (: </hierarchyLevel> :), 
     31        for $parent in $DE/moles:dgRelatedDataEntity[moles:RelationID/moles:dgValidTerm='is-part-of'] 
     32        return  
     33                element parentIdentifier  {element gco:CharacterString {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':', $DE/moles:dgMetadataID/moles:localIdentifier, ':', $DE/moles:dgMetadataID/moles:localIdentifier)}}, 
     34        for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder[not(exists(moles:endDate)) or moles:endDate=''] 
     35        return  
     36                for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/moles:dgMetadata/*[ 
     37                        moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
     38                        and moles:dgMetadataID/moles:repositoryIdentifier=$DataCuratorRole/*/moles:repositoryIdentifier 
     39                        and moles:dgMetadataID/moles:localIdentifier=$DataCuratorRole/*/moles:localIdentifier] 
     40                return 
     41                        element contact { 
     42                                element CI_ResponsibleParty {  
     43                                        if (string(local-name($DataCuratorRoleHolder))='dgOrganisation') then 
     44                                                element organisationName {element gco:CharacterString {string($DataCuratorRoleHolder/moles:name)}} 
     45                                        else if (string(local-name($DataCuratorRoleHolder))='dgPerson') then 
     46                                                element individualName {element gco:CharacterString {string(concat(string($DataCuratorRoleHolder/moles:name/moles:initials), ' ', string($DataCuratorRoleHolder/moles:name/moles:familyName)))}} 
     47                                        else ('empty content') ,         
     48                                        element positionName { 
     49                                                if (exists($DataCuratorRoleHolder/moles:localName)) then  
     50                                                        element gco:CharacterString {$DataCuratorRoleHolder/moles:localName} 
     51                                                else if (exists($DataCuratorRole/moles:roleName)) then  
     52                                                        element gco:CharacterString {$DataCuratorRole/moles:roleName} 
     53                                                else  
     54                                                        element gco:CharacterString {'Curator'} 
     55                                        } (: </positionName>:), 
     56                                        element contactInfo { 
     57                                                element gmd:CI_Contact { 
     58                                                        if (exists($DataCuratorRole/moles:contactDetails/moles:telephone  
     59                                                                or $DataCuratorRole/moles:contactDetails/moles:fax  
     60                                                                or $DataCuratorRoleHolder/moles:contactDetails/moles:telephone  
     61                                                                or $DataCuratorRoleHolder/moles:contactDetails/moles:fax)) then 
     62                                                                element phone { 
     63                                                                        element gmd:CI_Telephone {  
     64                                                                                if (exists($DataCuratorRole/moles:contactDetails/moles:telephone)) then 
     65                                                                                        element voice { 
     66                                                                                                element gco:CharacterString {data($DataCuratorRole/moles:contactDetails/moles:telephone)} 
     67                                                                                        } (:</voice>:) 
     68                                                                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then 
     69                                                                                        element voice { 
     70                                                                                                element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)} 
     71                                                                                        } (:</voice>:) 
     72                                                                                else (), 
     73                                                                                if (exists($DataCuratorRole/moles:contactDetails/moles:fax)) then 
     74                                                                                        element facsimile { 
     75                                                                                                element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:fax)} 
     76                                                                                        } (: </facsimile> :) 
     77                                                                                else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:telephone)) then 
     78                                                                                        element facsimile { 
     79                                                                                                element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:fax)} 
     80                                                                                        } (: </facsimile> :) 
     81                                                                                else () 
     82                                                                        } (: </gmd:CI_Telephone> :) 
     83                                                                } (: </phone> :)  
     84                                                                        else (), 
     85                                                        element address {  
     86                                                                element gmd:CI_Address { 
     87                                                                        if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:addressline)) then                                
     88                                                                                for $addressline in $DataCuratorRole/moles:contactDetails/moles:address/moles:addressline 
     89                                                                                return 
     90                                                                                        element deliveryPoint {element gco:CharacterString {data($addressline)}} 
     91                                                                        else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline)) then 
     92                                                                                for $addressline in $DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:addressline 
     93                                                                                return 
     94                                                                                        element deliveryPoint {element gco:CharacterString {data($addressline)}} 
     95                                                                        else (), 
     96                                                                        if (exists($DataCuratorRole/moles:contactDetails/moles:address/moles:city)) then 
     97                                                                                element city {element gco:CharacterString {data($DataCuratorRole/moles:contactDetails/moles:address/moles:city)}} 
     98                                                                        else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)) then 
     99                                                                                element city {element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:city)}} 
     100                                                                        else (), 
     101                                                                        if (exists($DataCuratorRole/moles:contactDetails/moles:eMail)) then 
     102                                                                                element electronicMailAddress {element gco:CharacterString {data($DataCuratorRole/moles:contactDetails/moles:eMail)}} 
     103                                                                        else if (exists($DataCuratorRoleHolder/moles:contactDetails/moles:address/moles:postcode)) then 
     104                                                                                element electronicMailAddress {element gco:CharacterString {data($DataCuratorRoleHolder/moles:contactDetails/moles:eMail)}} 
     105                                                                        else () 
     106                                                                } (: </gmd:CI_Address> :) 
     107                                                        } (: </address> :) 
     108                                                } (: </gmd:CI_Contact> :) 
     109                                        } (: </contactInfo> :), 
     110                                        element role {  
     111                                                element CI_RoleCode { 
     112                                                        attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode'},  
     113                                                        attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode_custodian'}, 
     114                                                        if (exists($DataCuratorRole/moles:localName)) then                                
     115                                                                data($DataCuratorRole/moles:localName) 
     116                                                        else if (exists($DataCuratorRoleHolder/moles:localName)) then 
     117                                                                data($DataCuratorRoleHolder/moles:localName) 
     118                                                        else 'Curator'   
     119                                                } (: </CI_RoleCode> :) 
     120                                        } (: </role> :) 
     121                                } (: </CI_ResponsibleParty> :) 
     122                        } (: </contact> :), 
    11123 
    12     {element fileIdentifier {element gco:CharacterString {concat($DE/dgMetadataID/repositoryIdentifier, ':ISO19115:', $DE/dgMetadataID/localIdentifier)}}} 
    13     {element language { 
    14         element gmd:LanguageCode { 
    15             attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#LanguageCode'}, 
    16             attribute codeListValue {'eng'}, 
    17             'English' 
    18             } 
    19         } 
    20      } 
    21      
    22     {element hierarchyLevel { 
    23         element MD_ScopeCode { 
    24             attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode'}, 
    25             attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode_dataset'}, 
    26             'dataset' 
    27             } 
    28         } 
    29     } 
    30         {for $parent in $DE/dgRelatedDataEntity[RelationID/dgValidTerm='is-part-of'] 
    31         return  
    32         element parentIdentifier  {element gco:CharacterString {concat($DE/dgMetadataID/repositoryIdentifier, ':', $DE/dgMetadataID/localIdentifier, ':', $DE/dgMetadataID/localIdentifier)}} 
    33          } 
    34     {for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder[not(exists(endDate)) or endDate=''] 
    35         return  
    36             for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0' 
    37                 and dgMetadataID/repositoryIdentifier=$DataCuratorRole/*/repositoryIdentifier 
    38                 and dgMetadataID/localIdentifier=$DataCuratorRole/*/localIdentifier)] 
    39                 return  
    40                     <contact > 
    41                     { 
    42                     <CI_ResponsibleParty>  
    43                   { 
    44                         if (string(local-name($DataCuratorRoleHolder))='dgOrganisation') then 
    45                         element organisationName {element gco:CharacterString {string($DataCuratorRoleHolder/name)}} 
    46                 else if (string(local-name($DataCuratorRoleHolder))='dgPerson') then 
    47                         element individualName {element gco:CharacterString {string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName)))}} 
    48                 else ('empty content') 
    49                   } 
    50                   {element positionName  
    51                       { 
    52                       if (exists($DataCuratorRoleHolder/localName)) then  
    53                           element gco:CharacterString {$DataCuratorRoleHolder/localName} 
    54                             else if (exists($DataCuratorRole/roleName)) then  
    55                                 element gco:CharacterString {$DataCuratorRole/roleName} 
    56                             else  
    57                                 element gco:CharacterString {'Curator'} 
    58                       } 
    59                   }     
    60                       <contactInfo> 
    61                             <gmd:CI_Contact> 
    62  
    63                                 {if (exists($DataCuratorRole/contactDetails/telephone or $DataCuratorRole/contactDetails/fax or $DataCuratorRoleHolder/contactDetails/telephone or $DataCuratorRoleHolder/contactDetails/fax)) then 
    64                                     <phone><gmd:CI_Telephone>  
    65                                     {if (exists($DataCuratorRole/contactDetails/telephone)) then 
    66                                         element voice { 
    67                                             element gco:CharacterString {data($DataCuratorRole/contactDetails/telephone)} 
    68                                             } 
    69                                     else if (exists($DataCuratorRoleHolder/contactDetails/telephone)) then 
    70                                         element voice { 
    71                                             element gco:CharacterString {data($DataCuratorRoleHolder/contactDetails/telephone)} 
    72                                             } 
    73                                     else () 
    74                                     } 
    75                                     {if (exists($DataCuratorRole/contactDetails/fax)) then 
    76                                         element facsimile { 
    77                                             element gco:CharacterString {data($DataCuratorRoleHolder/contactDetails/fax)} 
    78                                             } 
    79                                     else if (exists($DataCuratorRoleHolder/contactDetails/telephone)) then 
    80                                         element facsimile { 
    81                                             element gco:CharacterString {data($DataCuratorRoleHolder/contactDetails/fax)} 
    82                                             } 
    83                                     else () 
    84                                     } 
    85                                     </gmd:CI_Telephone></phone>  
    86                                 else () 
    87                                  }  
    88                                  <address><gmd:CI_Address> 
    89                                  {if (exists($DataCuratorRole/contactDetails/address/addressline)) then                                
    90                                      for $addressline in $DataCuratorRole/contactDetails/address/addressline 
    91                                          return 
    92                                          element deliveryPoint { 
    93                                               element gco:CharacterString {data($addressline)} 
    94                                           } 
    95                                   else if (exists($DataCuratorRoleHolder/contactDetails/address/addressline)) then 
    96                                       for $addressline in $DataCuratorRoleHolder/contactDetails/address/addressline 
    97                                           return 
    98                                            element deliveryPoint { 
    99                                                element gco:CharacterString {data($addressline)} 
    100                                             } 
    101                                     else   
    102                                     ()} 
    103                                     {if (exists($DataCuratorRole/contactDetails/address/city)) then 
    104                                         element city { 
    105                                             element gco:CharacterString {data($DataCuratorRole/contactDetails/address/city)} 
    106                                             } 
    107                                     else if (exists($DataCuratorRoleHolder/contactDetails/address/city)) then 
    108                                         element city { 
    109                                             element gco:CharacterString {data($DataCuratorRoleHolder/contactDetails/address/city)} 
    110                                             } 
    111                                     else   
    112                                     ()} 
    113                                     {if (exists($DataCuratorRole/contactDetails/eMail)) then 
    114                                         element electronicMailAddress { 
    115                                             element gco:CharacterString {data($DataCuratorRole/contactDetails/eMail)} 
    116                                             } 
    117                                     else if (exists($DataCuratorRoleHolder/contactDetails/address/postcode)) then 
    118                                         element electronicMailAddress { 
    119                                             element gco:CharacterString {data($DataCuratorRoleHolder/contactDetails/eMail)} 
    120                                             } 
    121                                     else   
    122                                     ()} 
    123                                  </gmd:CI_Address></address> 
    124                             </gmd:CI_Contact> 
    125                         </contactInfo> 
    126  
    127                         {element role  
    128                             { 
    129                             element CI_RoleCode  
    130                                 { 
    131                                     attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode'},  
    132                                     attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode_custodian'}, 
    133                                      if (exists($DataCuratorRole/localName)) then                                
    134                                          data($DataCuratorRole/localName) 
    135                                       else if (exists($DataCuratorRoleHolder/localName)) then 
    136                                          data($DataCuratorRoleHolder/localName) 
    137                                        else 'Curator'   
    138                                 } 
    139                              } 
    140                          } 
    141                </CI_ResponsibleParty> 
    142             } 
    143             </contact> 
    144     } 
    145     {element dateStamp  
    146         { 
    147         element gco:Date  
    148             { 
    149                 adjust-date-to-timezone(current-date()) 
    150             } 
    151         } 
    152      } 
    153     {element metadataStandardName {element gco:CharacterString {'ISO 19115:2005'}}} 
    154     {element metadataStandardVersion {element gco:CharacterString {'2005'}}} 
    155     <identificationInfo> 
    156         <gmd:MD_DataIdentification> 
    157             <citation> 
    158                 <gmd:CI_Citation> 
    159                     {element title {element gco:CharacterString {data($DE/name)}}} 
    160                     {if (exists($DE/abbreviation) and not(empty($DE/abbreviation))) then  
    161                         element alternateTitle {element gco:CharacterString {data($DE/abbreviation)}} 
    162                      else () 
    163                      } 
    164                     {element date  
    165                         { 
    166                         if (exists($DE/*/RecordCreation/CreatedDate)) then 
    167                             element gmd:CI_Date  
    168                                 { 
    169                                     element date  
    170                                         { 
    171                                             element gco:Date {adjust-date-to-timezone(data($DE/*/RecordCreation/CreatedDate))} 
    172                                         },                                     
    173                                     element dateType  
    174                                         { 
    175                                             element CI_DateTypeCode  
    176                                                 { 
    177                                                     attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode'},  
    178                                                     attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode_creation' }, 
    179                                                      'Creation' 
    180                                                 } 
    181                                          } 
    182                                 } 
    183                         else  
    184                             attribute gco:nilReason {'unknown'} 
    185                          } 
    186                      } 
    187                 </gmd:CI_Citation> 
    188             </citation> 
    189             {element abstract { 
    190                 element gco:CharacterString {data($DE/dgMetadataDescription/abstract/abstractText)}} 
    191             } 
    192  
    193             {element language  
    194                 { 
    195                     element gmd:LanguageCode  
    196                     { 
    197                         attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#LanguageCode'}, 
    198                         attribute codeListValue {'eng'}, 
    199                         'English' 
    200                      } 
    201                 } 
    202              } 
    203             {for $ISOTopicCategory in ($DE/dgStructuredKeyword[dgValidTermID/ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) 
    204             return  
    205                 element topicCategory  
    206                     { 
    207                                 element gmd:MD_TopicCategoryCode  
    208                                     { 
    209                                     attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'}, 
    210                                     attribute codeListValue {string($ISOTopicCategory/dgValidTerm)}, 
    211                                     string($ISOTopicCategory/dgValidTerm) 
    212                                     } 
    213                            } 
    214             } 
    215         </gmd:MD_DataIdentification> 
    216     </identificationInfo> 
    217  
    218 </MD_Metadata> 
     124                        element dateStamp {element gco:Date {adjust-date-to-timezone(current-date())}}, 
     125                        element metadataStandardName {element gco:CharacterString {'ISO 19115:2005'}}, 
     126                        element metadataStandardVersion {element gco:CharacterString {'2005'}}, 
     127                        element identificationInfo { 
     128                                element gmd:MD_DataIdentification {  
     129                                        element citation { 
     130                                                element gmd:CI_Citation { 
     131                                                        element title {element gco:CharacterString {data($DE/moles:name)}}, 
     132                                                        if (exists($DE/moles:abbreviation) and not(empty($DE/moles:abbreviation))) then  
     133                                                                element alternateTitle {element gco:CharacterString {data($DE/moles:abbreviation)}} 
     134                                                        else (), 
     135                                                        element date { 
     136                                                                if (exists($DE/moles:*/moles:RecordCreation/moles:CreatedDate)) then 
     137                                                                        element gmd:CI_Date { 
     138                                                                                element date {element gco:Date {adjust-date-to-timezone(data($DE/moles:*/moles:RecordCreation/moles:CreatedDate))}}, 
     139                                                                                element dateType { 
     140                                                                                        element CI_DateTypeCode { 
     141                                                                                                attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/moles:gmxCodelists.xml#CI_DateTypeCode'},  
     142                                                                                                attribute codeListValue {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode_creation' }, 
     143                                                                                                'Creation'} 
     144                                                                                } (: </dataType> :) 
     145                                                                        } (: </gmd:CI_Date> :) 
     146                                                                else  
     147                                                                        attribute gco:nilReason {'unknown'} 
     148                                                        } (: </date> :) 
     149                                                } (: </gmd:CI_Citation> :) 
     150                                        } (: </citation> :), 
     151                                        element abstract {element gco:CharacterString {data($DE/moles:dgMetadataDescription/moles:abstract/moles:abstractText)}}, 
     152                                        element language { 
     153                                                element gmd:LanguageCode { 
     154                                                        attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#LanguageCode'}, 
     155                                                        attribute codeListValue {'eng'}, 
     156                                                        'English' } 
     157                                        } (: </language> :), 
     158                                        for $ISOTopicCategory in ($DE/moles:dgStructuredKeyword[dgValidTermID/moles:ParentListID='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode']) 
     159                                        return  
     160                                                element topicCategory { 
     161                                                        element gmd:MD_TopicCategoryCode { 
     162                                                                attribute codeList {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'}, 
     163                                                                attribute codeListValue {string($ISOTopicCategory/moles:dgValidTerm)}, 
     164                                                                string($ISOTopicCategory/moles:dgValidTerm)} 
     165                                                } (: </topicCategory> :) 
     166                                } (:</gmd:MD_DataIdentification> :) 
     167                        } (: </identificationInfo> :) 
     168} (: </MD_Metadata> :) 
  • TI07-MOLES/trunk/MOLES.xpr

    r1628 r1683  
    88        <folder path="ISO19115-19139/Examples/"/> 
    99        <file name="StubB/XQuery/NDG-ActStubB.xquery"/> 
    10         <file name="StubB/XQuery/NDG-ActStubBmoles.xquery"/> 
    1110        <file name="StubB/XQuery/NDG-DEStubB.xquery"/> 
    12         <file name="StubB/XQuery/NDG-DEStubBmoles.xquery"/> 
    1311        <file name="DIF/XQuery/NDG-DIF-test.xquery"/> 
    1412        <file name="DIF/XQuery/NDG-DIF.xquery"/> 
    15         <file name="DIF/XQuery/NDG-DIFmoles.xquery"/> 
     13        <file name="DIF/XQuery/NDG-DIFtemplate.xquery"/> 
    1614        <file name="StubB/XQuery/NDG-DPTStubB.xquery"/> 
    17         <file name="StubB/XQuery/NDG-DPTStubBmoles.xquery"/> 
    1815        <file name="DublinCore/XQuery/NDG-DublinCore.xquery"/> 
    1916        <file name="ISO19115-19139/XQuery/NDG-ISO19115-139.xquery"/> 
     
    2219        <file name="ISO19115-WMO/XQuery/NDG-ISO19115-WMO.xquery"/> 
    2320        <file name="StubB/XQuery/NDG-ObsStnStubB.xquery"/> 
    24         <file name="StubB/XQuery/NDG-ObsStnStubBmoles.xquery"/> 
    2521        <file name="DIF/Schemae/dif9-4.xsd"/> 
    2622        <file name="ISO19115-WMO/TC211-WMO/wmo_examples/example1.xml"/> 
  • TI07-MOLES/trunk/StubB/XQuery/NDG-ActStubB.xquery

    r1276 r1683  
    1 for $Act in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgActivity!='' and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='badc.nerc.ac.uk' and dgMetadataID/localIdentifier='activity1'] 
     1declare default element namespace 'http://ndg.nerc.ac.uk/moles/activity';  
     2declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
     3declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
     4 
     5declare 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} ; 
     20 
     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                        ($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> :)  
     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 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        } 
     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 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[ 
     76moles: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} ; 
     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 observation station record :) 
     99(: Security not implemented here yet;  :) 
     100{ 
     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]  
     104                return 
     105                        element {$out-element-name} { 
     106                                ($SRObsStn/moles:dgMetadataID), 
     107                                ($SRObsStn/moles:dgMetadataDescription), 
     108                                ($SRObsStn/moles:name), 
     109                                ($SRObsStn/moles:abbreviation), 
     110                                element dgObservationStation { 
     111                                        ($SRObsStn/moles:dgObservationStation/moles:contactDetails), 
     112                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then 
     113                                                element dgStationaryPlatform { 
     114                                                        $SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position, 
     115                                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgLandStation)) then element dgLandStation {''} 
     116                                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgMooring)) then element dgMooring {''} 
     117                                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgStationGroup)) then element dgStationGroup {''} 
     118                                                        else () 
     119                                                        } 
     120                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then  
     121                                                $SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform 
     122                                        else () 
     123                                } (: </dgObservationStation> :) 
     124                        }  
     125} ; 
     126 
     127declare 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{ 
     131for $person in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
     132        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     133        and moles:dgMetadataID/moles:localIdentifier=$locid]  
     134        return  
     135                element  {$out-element-name}  
     136                { 
     137                        ($person/moles:name), 
     138                        ($person/moles:contactDetails), 
     139                        ($person/moles:dgMetadataID) 
     140                } 
     141} ; 
     142 
     143declare 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{ 
     147for $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                } 
     157} ; 
     158 
     159for $Act in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     160        moles:dgActivity!=''  
     161        and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
     162        and moles:dgMetadataID/moles:repositoryIdentifier='badc.nerc.ac.uk'  
     163        and moles:dgMetadataID/moles:localIdentifier='activity3'] 
    2164return 
    3 <dgMetadataRecord> 
    4         <dgMetadataID> 
    5                 <schemeIdentifier>NDG-B1</schemeIdentifier> 
    6                 {$Act/dgMetadataID/repositoryIdentifier} 
    7                 {$Act/dgMetadataID/localIdentifier} 
    8         </dgMetadataID> 
    9         {$Act/dgMetadataDescription} 
    10         {$Act/name} 
    11         {$Act/abbreviation} 
    12         <dgActivity> 
    13                 {for $RelatedActivities in $Act/dgActivity/relatedActivity 
    14                  for $RelatedActivity in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$RelatedActivities/relatedActivityID/repositoryIdentifier and dgMetadataID/localIdentifier=$RelatedActivities/relatedActivityID/localIdentifier] 
     165f:strip-namespace(element dgMetadataRecord { 
     166        element dgMetadataID { 
     167                element schemeIdentifier {'NDG-B1'}, 
     168                (element repositoryIdentifier {data($Act/moles:dgMetadataID/moles:repositoryIdentifier)}), 
     169                element localIdentifier {data($Act/moles:dgMetadataID/moles:localIdentifier)} 
     170        }, 
     171        $Act/moles:dgMetadataDescription, 
     172        $Act/moles:name, 
     173        $Act/moles:abbreviation, 
     174        element dgActivity { 
     175                for $RelatedActivities in $Act/dgActivity/moles:relatedActivity 
    15176                        return  
    16                         <relatedActivity> 
    17                         {$RelatedActivities/relatedActivityID} 
    18                         {$RelatedActivity/name} 
    19                         {$RelatedActivity/abbreviation} 
    20                         {$RelatedActivities/activityRelation} 
    21                         </relatedActivity> 
    22                         } 
    23                 {$Act/dgActivityDataCollection} 
    24                 {$Act/dgActivityDataProject} 
    25                 {$Act/dgActivityDataCollection} 
    26                 {$Act/dgActivityDataInvestigation} 
    27                 <dgActivityRole> 
    28                         <dgInvestigator> 
    29                                 <dgPrincipalInvestigator> 
    30                                         {$Act/dgActivity/dgActivityRole/dgInvestigator/dgPrincipalInvestigator/dgMetadataID} 
    31                                         {$Act/dgActivity/dgActivityRole/dgInvestigator/dgPrincipalInvestigator/roleName} 
    32                                         {$Act/dgActivity/dgActivityRole/dgInvestigator/dgPrincipalInvestigator/abbreviation} 
    33                                         {$Act/dgActivity/dgActivityRole/dgInvestigator/dgPrincipalInvestigator/contactDetails} 
    34                                         {for $PIRole in $Act/dgActivity/dgActivityRole/dgInvestigator/dgPrincipalInvestigator/dgRoleHolder  
    35                                                 order by $PIRole/startDate empty least, $PIRole/endDate empty least 
     177                                element relatedActivity { 
     178                                        $RelatedActivities/moles:activityRelation, 
     179                                        f:return-stub-activity('activity', data($RelatedActivities/moles:relatedActivityID/moles:repositoryIdentifier), data($RelatedActivities/moles:relatedActivityID/moles:localIdentifier)) 
     180                        },      (: </relatedActivity> :) 
     181                if (exists($Act/moles:dgActivity/moles:dgActivityDataCollection)) then ($Act/moles:dgActivity/moles:dgActivityDataCollection) 
     182                else if (exists($Act/moles:dgActivity/moles:dgActivityDataProject)) then ($Act/moles:dgActivity/moles:dgActivityDataProject) 
     183                else if (exists($Act/moles:dgActivity/moles:dgActivityDataInvestigation)) then ($Act/moles:dgActivity/moles:dgActivityDataInvestigation) 
     184                else if (exists($Act/moles:dgActivity/moles:dgActivityDataCampaign)) then ($Act/moles:dgActivity/moles:dgActivityDataCampaign) 
     185                else (), 
     186                element dgActivityRole { 
     187                        element dgInvestigator { 
     188                                element dgPrincipalInvestigator { 
     189                                        ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:dgMetadataID), 
     190                                        ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:roleName), 
     191                                        ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:abbreviation), 
     192                                        ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:contactDetails), 
     193                                        for $PIRole in $Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:dgRoleHolder  
     194                                                order by $PIRole/moles:startDate empty least, $PIRole/moles:endDate empty least 
    36195                                                return  
    37                                                 <dgRoleHolder> 
    38                                                         {if (exists($PIRole/dgOrganisationID)) then ( 
    39                                                                 for $PIRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/dgOrganisation[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$PIRole/dgOrganisationID/repositoryIdentifier and localIdentifier=$PIRole/dgOrganisationID/localIdentifier]] 
    40                                                                 return $PIRoleHolder) 
    41                                                          else () 
    42                                                         } 
    43                                                         {if (exists($PIRole/dgPersonID)) then ( 
    44                                                                 for $PIRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/dgPerson[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$PIRole/dgPersonID/repositoryIdentifier and localIdentifier=$PIRole/dgPersonID/localIdentifier]] 
    45                                                                 return $PIRoleHolder) 
    46                                                          else () 
    47                                                         } 
    48                                                         {$PIRole/startDate} 
    49                                                         {$PIRole/endDate} 
    50                                                         {$PIRole/localName} 
    51                                                 </dgRoleHolder> 
    52                                         }                                        
    53                                 </dgPrincipalInvestigator> 
    54                                 {for $CI in $Act/dgActivity/dgActivityRole/dgInvestigator/dgCoInvestigator  
     196                                                element dgRoleHolder { 
     197                                                        if (exists($PIRole/moles:dgOrganisationID)) then  
     198                                                                f:return-stub-organisation('organisation', data($PIRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($PIRole/moles:dgOrganisationID/moles:localIdentifier))  
     199                                                         else if (exists($PIRole/moles:dgPersonID)) then  
     200                                                                f:return-stub-person('person', string($PIRole/moles:dgPersonID/moles:repositoryIdentifier), string($PIRole/moles:dgPersonID/moles:localIdentifier))  
     201                                                         else (), 
     202                                                        ($PIRole/moles:startDate), 
     203                                                        if (exists($PIRole/moles:endDate)) then  
     204                                                            ($PIRole/moles:endDate) 
     205                                                        else (), 
     206                                                        if (exists($PIRole/moles:localName)) then  
     207                                                            ($PIRole/moles:localName) 
     208                                                        else () 
     209                                                } (: </dgRoleHolder> :) 
     210                                }, (: </dgPrincipalInvestigator> :) 
     211                                for $CI in $Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgCoInvestigator  
    55212                                return   
    56                                         <dgCoInvestigator> 
    57                                         {$CI/dgMetadataID} 
    58                                         {$CI/roleName} 
    59                                         {$CI/abbreviation} 
    60                                         {$CI/contactDetails} 
    61                                         {for $CIRole in $CI/dgRoleHolder  
    62                                         order by $CIRole/startDate empty least, $CIRole/endDate empty least 
     213                                        element dgCoInvestigator { 
     214                                            ($CI/moles:dgMetadataID), 
     215                                            ($CI/moles:roleName), 
     216                                            ($CI/moles:abbreviation), 
     217                                            ($CI/moles:contactDetails), 
     218                                            for $CIRole in $CI/moles:dgRoleHolder  
     219                                                order by $CIRole/moles:startDate empty least, $CIRole/moles:endDate empty least 
     220                                            return  
     221                                                element dgRoleHolder { 
     222                                                        if (exists(CIRole/moles:dgOrganisationID)) then  
     223                                                                f:return-stub-organisation('organisation', data($CIRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($CIRole/moles:dgOrganisationID/moles:localIdentifier))  
     224                                                         else if (exists($CIRole/moles:dgPersonID)) then  
     225                                                                f:return-stub-person('person', string($CIRole/moles:dgPersonID/moles:repositoryIdentifier), string($CIRole/moles:dgPersonID/moles:localIdentifier))  
     226                                                         else (), 
     227                                                        ($CIRole/moles:startDate), 
     228                                                        if (exists($CIRole/moles:endDate)) then  
     229                                                            ($CIRole/moles:endDate) 
     230                                                        else (), 
     231                                                        if (exists($CIRole/moles:localName)) then  
     232                                                            ($CIRole/moles:localName) 
     233                                                        else () 
     234                                                } (: </dgRoleHolder> :) 
     235                                } (: </dgCoInvestigator> :) 
     236                }, (: </dgInvestigator> :) 
     237                if (exists($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact)) then ( 
     238                        element dgTechnicalContact { 
     239                                ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:dgMetadataID), 
     240                                ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:roleName), 
     241                                ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:abbreviation), 
     242                                ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:contactDetails), 
     243                                for $TechConRole in $Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:dgRoleHolder  
     244                                        order by $TechConRole/moles:startDate empty least, $TechConRole/moles:endDate empty least 
    63245                                        return  
    64                                                 <dgRoleHolder> 
    65                                                         {if (exists($CIRole/dgOrganisationID)) then ( 
    66                                                                 for $CIRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/dgOrganisation[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$CIRole/dgOrganisationID/repositoryIdentifier and localIdentifier=$CIRole/dgOrganisationID/localIdentifier]] 
    67                                                                 return $CIRoleHolder) 
    68                                                          else () 
    69                                                         } 
    70                                                         {if (exists($CIRole/dgPersonID)) then ( 
    71                                                                 for $CIRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/dgPerson[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$CIRole/dgPersonID/repositoryIdentifier and localIdentifier=$CIRole/dgPersonID/localIdentifier]] 
    72                                                                 return $CIRoleHolder) 
    73                                                          else () 
    74                                                         } 
    75                                                         {$CIRole/startDate} 
    76                                                         {$CIRole/endDate} 
    77                                                         {$CIRole/localName} 
    78                                                 </dgRoleHolder> 
    79                                         } 
    80                                 </dgCoInvestigator> 
    81                         } 
    82                 </dgInvestigator> 
    83                 {if (exists($Act/dgActivity/dgActivityRole/dgTechnicalContact)) then ( 
    84                         <dgTechnicalContact> 
    85                                 {$Act/dgActivity/dgActivityRole/dgTechnicalContact/dgMetadataID} 
    86                                 {$Act/dgActivity/dgActivityRole/dgTechnicalContact/roleName} 
    87                                 {$Act/dgActivity/dgActivityRole/dgTechnicalContact/abbreviation} 
    88                                 {$Act/dgActivity/dgActivityRole/dgTechnicalContact/contactDetails} 
    89                                 {for $TechConRole in $Act/dgActivity/dgActivityRole/dgTechnicalContact/dgRoleHolder  
    90                                         order by $TechConRole/startDate empty least, $TechConRole/endDate empty least 
     246                                        element dgRoleHolder { 
     247                                                if (exists($TechConRole/moles:dgOrganisationID)) then  
     248                                                        f:return-stub-organisation('organisation', data($TechConRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($TechConRole/moles:dgOrganisationID/moles:localIdentifier))  
     249                                                 else if (exists($TechConRole/moles:dgPersonID)) then  
     250                                                        f:return-stub-person('person', string($TechConRole/moles:dgPersonID/moles:repositoryIdentifier), string($TechConRole/moles:dgPersonID/moles:localIdentifier))  
     251                                                 else (), 
     252                                            ($TechConRole/moles:startDate), 
     253                                            if (exists($TechConRole/moles:endDate)) then  
     254                                                ($TechConRole/moles:endDate) 
     255                                            else (), 
     256                                            if (exists($TechConRole/moles:localName)) then  
     257                                                    ($TechConRole/moles:localName) 
     258                                            else () 
     259                                        } (: </dgRoleHolder> :) 
     260                        } (: </dgTechnicalContact> :) 
     261                ) 
     262                else (), 
     263                if (exists($Act/dgActivity/dgActivityRole/dgProjectManager)) then ( 
     264                        element dgProjectManager { 
     265                                ($Act/dgActivity/dgActivityRole/dgProjectManager/dgMetadataID), 
     266                                ($Act/dgActivity/dgActivityRole/dgProjectManager/roleName), 
     267                                ($Act/dgActivity/dgActivityRole/dgProjectManager/abbreviation), 
     268                                ($Act/dgActivity/dgActivityRole/dgProjectManager/contactDetails), 
     269                                for $PMRole in $Act/dgActivity/dgActivityRole/dgProjectManager/dgRoleHolder  
     270                                        order by $PMRole/startDate empty least, $PMRole/endDate empty least 
    91271                                        return  
    92                                         <dgRoleHolder> 
    93                                         {for $TechConRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/(dgOrganisation | dgPerson)[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$TechConRole/*/repositoryIdentifier and dgMetadataID/localIdentifier=$TechConRole/*/localIdentifier)] return $TechConRoleHolder} 
    94                                                 {$TechConRole/startDate} 
    95                                                 {$TechConRole/endDate} 
    96                                                 {$TechConRole/localName} 
    97                                         </dgRoleHolder>} 
    98                         </dgTechnicalContact> 
     272                                        element dgRoleHolder { 
     273                                                if (exists($PMRole/moles:dgOrganisationID)) then  
     274                                                        f:return-stub-organisation('organisation', data($PMRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($PMRole/moles:dgOrganisationID/moles:localIdentifier))  
     275                                                 else if (exists($PMRole/moles:dgPersonID)) then  
     276                                                        f:return-stub-person('person', string($PMRole/moles:dgPersonID/moles:repositoryIdentifier), string($PMRole/moles:dgPersonID/moles:localIdentifier))  
     277                                                 else (), 
     278                                                ($PMRole/startDate), 
     279                                                if (exists($PMRole/moles:endDate)) then  
     280                                                    ($PMRole/moles:endDate) 
     281                                                else (), 
     282                                                if (exists($PMRole/moles:localName)) then  
     283                                                    ($PMRole/moles:localName) 
     284                                                else () 
     285                                        } (: </dgRoleHolder> :) 
     286                        } (: </dgProjectManager> :) 
    99287                ) 
    100288                else () 
    101                 } 
    102                 {if (exists($Act/dgActivity/dgActivityRole/dgProjectManager)) then ( 
    103                         <dgProjectManager> 
    104                                 {$Act/dgActivity/dgActivityRole/dgProjectManager/dgMetadataID} 
    105                                 {$Act/dgActivity/dgActivityRole/dgProjectManager/roleName} 
    106                                 {$Act/dgActivity/dgActivityRole/dgProjectManager/abbreviation} 
    107                                 {$Act/dgActivity/dgActivityRole/dgProjectManager/contactDetails} 
    108                                 {for $PMRole in $Act/dgActivity/dgActivityRole/dgProjectManager/dgRoleHolder  
    109                                         order by $PMRole/startDate empty least, $PMRole/endDate empty least 
    110                                         return  
    111                                         <dgRoleHolder> 
    112                                         {for $PMRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/(dgOrganisation | dgPerson)[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$PMRole/*/repositoryIdentifier and dgMetadataID/localIdentifier=$PMRole/*/localIdentifier)] return $PMRoleHolder} 
    113                                                 {$PMRole/startDate} 
    114                                                 {$PMRole/endDate} 
    115                                                 {$PMRole/localName} 
    116                                         </dgRoleHolder>} 
    117                         </dgProjectManager> 
    118                 ) 
    119                 else () 
    120                 } 
    121         </dgActivityRole> 
    122         {for $RelDep in $Act/dgActivity/ActivityDeployment 
     289        }, (: </dgActivityRole> :) 
     290        for $RelDep in $Act/moles:dgActivity/moles:ActivityDeployment 
    123291                return 
    124                 <ActivityDeployment> 
    125                         {$RelDep/DateStart} 
    126                         {$RelDep/DateEnd} 
    127                         {$RelDep/dgMetadataID} 
    128                         {for $SRDPT in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$RelDep/DataProductionToolID/repositoryIdentifier and dgMetadataID/localIdentifier=$RelDep/DataProductionToolID/localIdentifier)] 
    129                                 return 
    130                                 <dataproductiontool> 
    131                                         {$SRDPT/dgMetadataID} 
    132                                         {$SRDPT/dgMetadataDescription} 
    133                                         {$SRDPT/name} 
    134                                         {$SRDPT/abbreviation} 
    135                                         <dgDataProductionTool> 
    136                                                 {$SRDPT/dgDataProductionTool/contactDetails} 
    137                                                 {$SRDPT/dgDataProductionTool/dgModel} 
    138                                                 {$SRDPT/dgDataProductionTool/dgInstrument} 
    139                                         </dgDataProductionTool> 
    140                                 </dataproductiontool> 
    141                                 } 
    142                         {for $SRObsStn in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$RelDep/ObservationStationID/repositoryIdentifier and dgMetadataID/localIdentifier=$RelDep/ObservationStationID/localIdentifier)] 
    143                                 return 
    144                                 <observationstation> 
    145                                         {$SRObsStn/dgMetadataID} 
    146                                         {$SRObsStn/dgMetadataDescription} 
    147                                         {$SRObsStn/name} 
    148                                         {$SRObsStn/abbreviation} 
    149                                         <dgObservationStation> 
    150                                                 {$SRObsStn/dgObservationStation/contactDetails} 
    151                                                 {$SRObsStn/dgObservationStation/dgStationaryPlatform} 
    152                                                 {$SRObsStn/dgObservationStation/dgMovingPlatform} 
    153                                         </dgObservationStation> 
    154                                 </observationstation> 
    155                                 } 
    156                         {for $DE in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID/schemeIdentifier='NDG-B0' and dgDataEntity/RelatedDeployment/dgMetadataID/repositoryIdentifier=$RelDep/dgMetadataID/repositoryIdentifier and dgDataEntity/RelatedDeployment/dgMetadataID/localIdentifier=$RelDep/dgMetadataID/localIdentifier]            return 
    157                                 <dataEntity> 
    158                                 {$DE/dgMetadataID} 
    159                                 {$DE/dgMetadataDescription} 
    160                                 {$DE/name} 
    161                                 {$DE/abbreviation} 
    162                                 <dgDataEntity> 
    163                                         {$DE/dgDataEntity/dgDataSetType} 
    164                                         {$DE/dgDataEntity/dgDataObjectType} 
    165                                         {$DE/dgDataEntity/dgDataGranule} 
    166                                         {$DE/dgDataEntity/dgDataSummary} 
    167                                 </dgDataEntity> 
    168                         </dataEntity> 
    169                         } 
    170                 </ActivityDeployment> 
    171                 } 
    172                 {$Act/dgActivityCoverage} 
    173                 {$Act/ActivityDuration} 
    174         </dgActivity> 
    175         {$Act/dgStructuredKeyword} 
    176         {$Act/DataProvenance} 
    177         {$Act/MetadataSecurity} 
    178 </dgMetadataRecord> 
     292                element ActivityDeployment { 
     293                        ($RelDep/moles:DateStart), 
     294                        if (exists($RelDep/moles:DateEnd)) then  
     295                            ($RelDep/moles:DateEnd) 
     296                        else (), 
     297                        ($RelDep/moles:dgMetadataID), 
     298                        f:return-stub-dpt('dataproductiontool', data($RelDep/moles:DataProductionToolID/moles:repositoryIdentifier), data($RelDep/moles:DataProductionToolID/moles:localIdentifier)), 
     299                        f:return-stub-obsstn('observationstation', data($RelDep/moles:ObservationStationID/moles:repositoryIdentifier), data($RelDep/moles:ObservationStationID/moles:localIdentifier)), 
     300                        for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord 
     301                                where $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier 
     302                                        and $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:dgMetadataID/moles:localIdentifier 
     303                        return 
     304                                f:return-stub-dataentity('dataentity', data($DE/moles:dgMetadataID/moles:repositoryIdentifier), data($DE/moles:dgMetadataID/moles:localIdentifier)) 
     305                }, (: </ActivityDeployment> :) 
     306                if (exists($Act/dgActivityCoverage)) then 
     307                    ($Act/dgActivityCoverage) 
     308                    else (), 
     309                if (exists($Act/dgActivityDuration)) then 
     310                    ($Act/dgActivityDuration) 
     311                    else () 
     312        } , (: </dgActivity> :) 
     313        for $strkwrd in $Act/moles:dgStructuredKeyword return $strkwrd, 
     314        if (exists($Act/moles:DataProvenance)) then $Act/moles:DataProvenance else (), 
     315        if (exists($Act/moles:MetadataSecurity)) then $Act/moles:MetadataSecurity else () 
     316} (:</dgMRecord>:) 
     317) (: End namespace strip :) 
  • TI07-MOLES/trunk/StubB/XQuery/NDG-DEStubB.xquery

    r1547 r1683  
    1 for $DE in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[exists('dgDataEntity') and dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier='badc.nerc.ac.uk' and localIdentifier='dataent1']] 
     1declare default element namespace 'http://ndg.nerc.ac.uk/moles/dataentity';  
     2declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
     3declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
     4 
     5declare 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} ; 
     20 
     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                        $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> :)  
     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 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        } 
     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 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[ 
     76moles: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} ; 
     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 observation station record :) 
     99(: Security not implemented here yet;  :) 
     100{ 
     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]  
     104                return 
     105                        element {$out-element-name} { 
     106                                ($SRObsStn/moles:dgMetadataID), 
     107                                ($SRObsStn/moles:dgMetadataDescription), 
     108                                ($SRObsStn/moles:name), 
     109                                ($SRObsStn/moles:abbreviation), 
     110                                element dgObservationStation { 
     111                                        ($SRObsStn/moles:dgObservationStation/moles:contactDetails), 
     112                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then 
     113                                                element dgStationaryPlatform { 
     114                                                        $SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position, 
     115                                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgLandStation)) then element dgLandStation {''} 
     116                                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgMooring)) then element dgMooring {''} 
     117                                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgStationGroup)) then element dgStationGroup {''} 
     118                                                        else () 
     119                                                        } 
     120                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then  
     121                                                $SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform 
     122                                        else () 
     123                                } (: </dgObservationStation> :) 
     124                        }  
     125} ; 
     126 
     127declare 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{ 
     131for $person in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
     132        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     133        and moles:dgMetadataID/moles:localIdentifier=$locid]  
     134        return  
     135                element  {$out-element-name}  
     136                { 
     137                        $person/moles:name, 
     138                        $person/moles:contactDetails, 
     139                        $person/moles:dgMetadataID 
     140                } 
     141} ; 
     142 
     143declare 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{ 
     147for $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                } 
     157} ; 
     158 
     159 
     160for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     161exists(moles:dgDataEntity)  
     162and moles:dgMetadataID[ 
     163moles:schemeIdentifier='NDG-B0'  
     164and moles:repositoryIdentifier='badc.nerc.ac.uk'  
     165and moles:localIdentifier='dataent1']] 
    2166return 
    3 <dgMetadataRecord> 
    4         <dgMetadataID> 
    5                 <schemeIdentifier>NDG-B1</schemeIdentifier> 
    6                 {$DE/dgMetadataID/repositoryIdentifier} 
    7                 {$DE/dgMetadataID/localIdentifier} 
    8         </dgMetadataID> 
    9         {$DE/dgMetadataDescription} 
    10         {$DE/name} 
    11         {$DE/abbreviation} 
    12         <dgDataEntity> 
    13                 {$DE/dgDataEntity/dgDataSetType} 
    14                 {$DE/dgDataEntity/dgDataObjectType} 
    15                 {$DE/dgDataEntity/dgDataGranule} 
    16                 {$DE/dgDataEntity/dgDataSummary} 
    17                 <dgDataRoles> 
    18                         {if (exists($DE/dgDataEntity/dgDataRoles/dgDataCreator/dgMetadataID)) then ( 
    19                                 <dgDataCreator> 
    20                                 {$DE/dgDataEntity/dgDataRoles/dgDataCreator/dgMetadataID} 
    21                                 {$DE/dgDataEntity/dgDataRoles/dgDataCreator/roleName} 
    22                                 {$DE/dgDataEntity/dgDataRoles/dgDataCreator/abbreviation} 
    23                                 {$DE/dgDataEntity/dgDataRoles/dgDataCreator/contactDetails} 
    24                                 {for $DataCreatorRole in $DE/dgDataEntity/dgDataRoles/dgDataCreator/dgRoleHolder  
    25                                         order by $DataCreatorRole/startDate empty least, $DataCreatorRole/endDate empty least 
     167f:strip-namespace(element dgMetadataRecord { 
     168        element dgMetadataID { 
     169                element schemeIdentifier {'NDG-B1'}, 
     170                $DE/moles:dgMetadataID/moles:repositoryIdentifier, 
     171                $DE/moles:dgMetadataID/moles:localIdentifier 
     172        }, (: </dgMetadataID> :) 
     173        $DE/moles:dgMetadataDescription, 
     174        $DE/moles:name, 
     175        $DE/moles:abbreviation, 
     176        element dgDataEntity { 
     177                $DE/moles:dgDataEntity/moles:dgDataSetType, 
     178                $DE/moles:dgDataEntity/moles:dgDataObjectType, 
     179                $DE/moles:dgDataEntity/moles:dgDataGranule, 
     180                $DE/moles:dgDataEntity/moles:dgDataSummary, 
     181                element dgDataRoles { 
     182                        if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgMetadataID)) then  
     183                                element dgDataCreator { 
     184                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgMetadataID, 
     185                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:roleName, 
     186                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:abbreviation, 
     187                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:contactDetails, 
     188                                for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder  
     189                                        order by $DataCreatorRole/moles:startDate empty least, $DataCreatorRole/moles:endDate empty least 
    26190                                        return  
    27                                                 <dgRoleHolder> 
    28                                                         {if (exists($DataCreatorRole/dgOrganisationID)) then ( 
    29                                                                 for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/dgOrganisation[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DataCreatorRole/dgOrganisationID/repositoryIdentifier and localIdentifier=$DataCreatorRole/dgOrganisationID/localIdentifier]] 
    30                                                                 return $DataCreatorRoleHolder) 
    31                                                          else () 
    32                                                         } 
    33                                                         {if (exists($DataCreatorRole/dgPersonID)) then ( 
    34                                                                 for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/dgPerson[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DataCreatorRole/dgPersonID/repositoryIdentifier and localIdentifier=$DataCreatorRole/dgPersonID/localIdentifier]] 
    35                                                                 return $DataCreatorRoleHolder) 
    36                                                          else () 
    37                                                         } 
    38                                                         {$DataCreatorRole/startDate} 
    39                                                         {$DataCreatorRole/endDate} 
    40                                                         {$DataCreatorRole/localName} 
    41                                                 </dgRoleHolder> 
    42                                         }                                        
    43                                 </dgDataCreator>) 
    44                         else ()} 
    45                         {if (exists($DE/dgDataEntity/dgDataRoles/dgDataCurator/dgMetadataID)) then ( 
    46                                 <dgDataCurator> 
    47                                 {$DE/dgDataEntity/dgDataRoles/dgDataCurator/dgMetadataID} 
    48                                 {$DE/dgDataEntity/dgDataRoles/dgDataCurator/roleName} 
    49                                 {$DE/dgDataEntity/dgDataRoles/dgDataCurator/abbreviation} 
    50                                 {$DE/dgDataEntity/dgDataRoles/dgDataCurator/contactDetails} 
    51                                 {for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder  
    52                                         order by $DataCuratorRole/startDate empty least, $DataCuratorRole/endDate empty least 
     191                                                element dgRoleHolder { 
     192                                                        if (exists($DataCreatorRole/moles:dgOrganisationID)) then  
     193                                                                f:return-stub-organisation('organisation', data($DataCreatorRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($DataCreatorRole/moles:dgOrganisationID/moles:localIdentifier))  
     194                                                         else if (exists($DataCreatorRole/moles:dgPersonID)) then  
     195                                                                f:return-stub-person('person', string($DataCreatorRole/moles:dgPersonID/moles:repositoryIdentifier), string($DataCreatorRole/moles:dgPersonID/moles:localIdentifier))  
     196                                                         else (), 
     197                                                        $DataCreatorRole/moles:startDate, 
     198                                                        $DataCreatorRole/moles:endDate, 
     199                                                        $DataCreatorRole/moles:localName 
     200                                                } (: </dgRoleHolder> :) 
     201                                        } (: </dgDataCreator>) :) 
     202                        else (), 
     203                        if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgMetadataID)) then  
     204                                element dgDataCurator { 
     205                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgMetadataID, 
     206                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:roleName, 
     207                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:abbreviation, 
     208                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:contactDetails, 
     209                                for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder  
     210                                        order by $DataCuratorRole/moles:startDate empty least, $DataCuratorRole/moles:endDate empty least 
    53211                                        return  
    54                                                 <dgRoleHolder> 
    55                                                         {if (exists($DataCuratorRole/dgOrganisationID)) then ( 
    56                                                                 for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/dgOrganisation[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DataCuratorRole/dgOrganisationID/repositoryIdentifier and localIdentifier=$DataCuratorRole/dgOrganisationID/localIdentifier]] 
    57                                                                 return $DataCuratorRoleHolder) 
    58                                                          else () 
    59                                                         } 
    60                                                         {if (exists($DataCuratorRole/dgPersonID)) then ( 
    61                                                                 for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/dgPerson[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DataCuratorRole/dgPersonID/repositoryIdentifier and localIdentifier=$DataCuratorRole/dgPersonID/localIdentifier]] 
    62                                                                 return $DataCuratorRoleHolder) 
    63                                                          else () 
    64                                                         } 
    65                                                         {$DataCuratorRole/startDate} 
    66                                                         {$DataCuratorRole/endDate} 
    67                                                         {$DataCuratorRole/localName} 
    68                                                 </dgRoleHolder>} 
    69                         </dgDataCurator>) 
    70                         else ()} 
    71  
    72                         {if (exists($DE/dgDataEntity/dgDataRoles/dgDataOtherRoles/dgMetadataID)) then ( 
    73                                 <dgDataOtherRoles> 
    74                                 {$DE/dgDataEntity/dgDataRoles/dgDataOtherRoles/dgMetadataID} 
    75                                 {$DE/dgDataEntity/dgDataRoles/dgDataOtherRoles/roleName} 
    76                                 {$DE/dgDataEntity/dgDataRoles/dgDataOtherRoles/abbreviation} 
    77                                 {$DE/dgDataEntity/dgDataRoles/dgDataOtherRoles/contactDetails} 
    78                                 {for $DataOtherRolesRole in $DE/dgDataEntity/dgDataRoles/dgDataOtherRoles/dgRoleHolder  
    79                                         order by $DataOtherRolesRole/startDate empty least, $DataOtherRolesRole/endDate empty least 
     212                                                element dgRoleHolder { 
     213                                                        if (exists($DataCuratorRole/moles:dgOrganisationID)) then  
     214                                                                f:return-stub-organisation('organisation', data($DataCuratorRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($DataCuratorRole/moles:dgOrganisationID/moles:localIdentifier))  
     215                                                         else if (exists($DataCuratorRole/moles:dgPersonID)) then  
     216                                                                f:return-stub-person('person', string($DataCuratorRole/moles:dgPersonID/moles:repositoryIdentifier), string($DataCuratorRole/moles:dgPersonID/moles:localIdentifier))  
     217                                                         else (), 
     218                                                        $DataCuratorRole/moles:startDate, 
     219                                                        $DataCuratorRole/moles:endDate, 
     220                                                        $DataCuratorRole/moles:localName 
     221                                                } (: </dgRoleHolder> :) 
     222                        } (: </dgDataCurator> :)  
     223                        else (), 
     224                        if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:dgMetadataID)) then  
     225                                element dgDataOtherRoles { 
     226                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:dgMetadataID, 
     227                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:roleName, 
     228                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:abbreviation, 
     229                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:contactDetails, 
     230                                for $DataOtherRolesRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:dgRoleHolder  
     231                                        order by $DataOtherRolesRole/moles:startDate empty least, $DataOtherRolesRole/moles:endDate empty least 
    80232                                        return 
    81                                                 <dgRoleHolder> 
    82                                                         {if (exists($DataOtherRolesRole/dgOrganisationID)) then ( 
    83                                                                 for $DataOtherRolesRoleHolder in /dgMetadata/dgOrganisation[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DataOtherRolesRole/dgOrganisationID/repositoryIdentifier and localIdentifier=$DataOtherRolesRole/dgOrganisationID/localIdentifier]] 
    84                                                                 return $DataOtherRolesRoleHolder) 
    85                                                          else () 
    86                                                         } 
    87                                                         {if (exists($DataOtherRolesRole/dgPersonID)) then ( 
    88                                                                 for $DataOtherRolesRoleHolder in /dgMetadata/dgPerson[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DataOtherRolesRole/dgPersonID/repositoryIdentifier and localIdentifier=$DataOtherRolesRole/dgPersonID/localIdentifier]] 
    89                                                                 return $DataOtherRolesRoleHolder) 
    90                                                          else () 
    91                                                         } 
    92                                                         {$DataOtherRolesRole/startDate} 
    93                                                         {$DataOtherRolesRole/endDate} 
    94                                                         {$DataOtherRolesRole/localName} 
    95                                                 </dgRoleHolder>} 
    96                         </dgDataOtherRoles>) 
    97                         else ()} 
    98  
    99                 </dgDataRoles> 
    100                 {for $RelDep in $DE/dgDataEntity/RelatedDeployment 
     233                                                element dgRoleHolder { 
     234                                                        if (exists($DataOtherRolesRole/moles:dgOrganisationID)) then  
     235                                                                f:return-stub-organisation('organisation', data($DataOtherRolesRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($DataOtherRolesRole/moles:dgOrganisationID/moles:localIdentifier))  
     236                                                         else if (exists($DataOtherRolesRole/moles:dgPersonID)) then  
     237                                                                f:return-stub-person('person', string($DataOtherRolesRole/moles:dgPersonID/moles:repositoryIdentifier), string($DataOtherRolesRole/moles:dgPersonID/moles:localIdentifier))  
     238                                                         else (), 
     239                                                        $DataOtherRolesRole/moles:startDate, 
     240                                                        $DataOtherRolesRole/moles:endDate, 
     241                                                        $DataOtherRolesRole/moles:localName 
     242                                                } (: </dgRoleHolder> :) 
     243                        } (: </dgDataOtherRoles> :) 
     244                        else () 
     245                } , (: </dgDataRoles> :) 
     246                for $RelDep in $DE/moles:dgDataEntity/moles:RelatedDeployment 
    101247                        return 
    102                         <RelatedDeployment> 
    103                         {$RelDep/DateStart} 
    104                         {$RelDep/DateEnd} 
    105                         {$RelDep/dgMetadataID} 
    106                         {for $SRAct in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$RelDep/ActivityID/repositoryIdentifier and localIdentifier=$RelDep/ActivityID/localIdentifier]] 
    107                                 return 
    108                                         <activity> 
    109                                         {$SRAct/dgMetadataID} 
    110                                         {$SRAct/dgMetadataDescription} 
    111                                         {$SRAct/name} 
    112                                         {$SRAct/abbreviation} 
    113                                         <dgActivity> 
    114                                                 {$SRAct/dgActivity/dgActivityDataCollection} 
    115                                                 {$SRAct/dgActivity/dgActivityDataProject} 
    116                                                 {$SRAct/dgActivity/dgActivityDataCampaign} 
    117                                                 {$SRAct/dgActivity/dgActivityDataInvestigation} 
    118                                                 {$SRAct/dgActivity/dgActivityCoverage} 
    119                                                 {$SRAct/dgActivity/dgActivityDuration} 
    120                                         </dgActivity> 
    121                                         </activity> 
    122                                 } 
    123                         {for $SRDPT in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$RelDep/DataProductionToolID/repositoryIdentifier and localIdentifier=$RelDep/DataProductionToolID/localIdentifier]] 
    124                                 return 
    125                                         <dataproductiontool> 
    126                                         {$SRDPT/dgMetadataID} 
    127                                         {$SRDPT/dgMetadataDescription} 
    128                                         {$SRDPT/name} 
    129                                         {$SRDPT/abbreviation} 
    130                                         <dgDataProductionTool> 
    131                                                 {$SRDPT/dgDataProductionTool/contactDetails} 
    132                                                 {$SRDPT/dgDataProductionTool/dgModel} 
    133                                                 {$SRDPT/dgDataProductionTool/dgInstrument} 
    134                                         </dgDataProductionTool> 
    135                                         </dataproductiontool> 
    136                                 } 
    137                         {for $SRObsStn in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$RelDep/ObservationStationID/repositoryIdentifier and localIdentifier=$RelDep/ObservationStationID/localIdentifier]] 
    138                                 return 
    139                                         <observationstation> 
    140                                         {$SRObsStn/dgMetadataID} 
    141                                         {$SRObsStn/dgMetadataDescription} 
    142                                         {$SRObsStn/name}                                        {$SRObsStn/abbreviation} 
    143                                         <dgObservationStation> 
    144                                                 {$SRObsStn/dgObservationStation/contactDetails} 
    145                                                 {$SRObsStn/dgObservationStation/dgStationaryPlatform} 
    146                                                 {$SRObsStn/dgObservationStation/dgMovingPlatform} 
    147                                         </dgObservationStation> 
    148                                         </observationstation> 
    149                                 } 
    150                         {$RelDep/Coverage} 
    151                 </RelatedDeployment> 
    152                 } 
    153                 {for $RelatedDataGranule in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgMetadataID[schemeIdentifier='NDG-B0' and repositoryIdentifier=$DE/dgRelatedDataGranuleID/dgRelatedDataGranuleID/repositoryIdentifier and localIdentifier=$DE/dgRelatedDataGranuleID/RelatedDataGranuleID/localIdentifier]] 
     248                        element RelatedDeployment { 
     249                        $RelDep/moles:DateStart, 
     250                        $RelDep/moles:DateEnd, 
     251                        $RelDep/moles:dgMetadataID, 
     252                        f:return-stub-activity('activity', data($RelDep/moles:ActivityID/moles:repositoryIdentifier), data($RelDep/moles:ActivityID/moles:localIdentifier)), 
     253                        f:return-stub-dpt('dataproductiontool', data($RelDep/moles:DataProductionToolID/moles:repositoryIdentifier), data($RelDep/moles:DataProductionToolID/moles:localIdentifier)), 
     254                        f:return-stub-obsstn('observationstation', data($RelDep/moles:ObservationStationID/moles:repositoryIdentifier), data($RelDep/moles:ObservationStationID/moles:localIdentifier)), 
     255                        $RelDep/moles:Coverage 
     256                } (: </RelatedDeployment> :)  
     257                , 
     258                for $RelatedDataEntity in $DE/moles:dgDataEntity/moles:dgRelatedDataEntity 
    154259                        return 
    155                                 <relateddatagranule> 
    156                                 <relation> 
    157                                         {$RelatedDataGranule/RelationID/dgValidTerm} 
    158                                         {$RelatedDataGranule/RelationID/dgValidTermID} 
    159                                 </relation> 
    160                                 {$RelatedDataGranule/dgMetadataID} 
    161                                 {$RelatedDataGranule/dgMetadataDescription} 
    162                                 {$RelatedDataGranule/name} 
    163                                 {$RelatedDataGranule/abbreviation} 
    164                                 <dgDataEntity> 
    165                                         {$RelatedDataGranule/dgDataEntity/dgDataSetType} 
    166                                         {$RelatedDataGranule/dgDataEntity/dgDataObjectType} 
    167                                         {$DE/dgDataEntity/dgDataGranule} 
    168                                         {$DE/dgDataEntity/dgDataSummary} 
    169                                 </dgDataEntity> 
    170                                 </relateddatagranule> 
    171                         } 
    172         </dgDataEntity> 
    173         {$DE/dgStructuredKeyword} 
    174         {$DE/DataProvenance} 
    175         {$DE/MetadataSecurity} 
    176 </dgMetadataRecord> 
     260                                element relateddataentity { 
     261                                element relation { 
     262                                        $RelatedDataEntity/moles:RelationID/moles:dgValidTerm, 
     263                                        $RelatedDataEntity/moles:RelationID/moles:dgValidTermID 
     264                                }, (: </relation> :) 
     265                                f:return-stub-dataentity('dataentity', data($RelatedDataEntity/(moles:RelatedDataEntityID | moles:RelatedDataGranuleID)/moles:repositoryIdentifier), data($RelatedDataEntity/(moles:RelatedDataEntityID | moles:RelatedDataGranuleID)/moles:localIdentifier)) 
     266                                } (: </relateddataentity> :) 
     267        } (: </dgDataEntity> :), 
     268        for $strkwrd in $DE/moles:dgStructuredKeyword return $strkwrd, 
     269        if (exists($DE/moles:DataProvenance)) then $DE/moles:DataProvenance else (), 
     270        if (exists($DE/moles:MetadataSecurity)) then $DE/moles:MetadataSecurity else () 
     271} (: </dgMetadataRecord> :) 
     272) (: end of namespace strip :) 
     273 
  • TI07-MOLES/trunk/StubB/XQuery/NDG-DPTStubB.xquery

    r1276 r1683  
    1 for $DPT in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgDataProductionTool!='' and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='badc.nerc.ac.uk' and dgMetadataID/localIdentifier='dpt1']  
     1declare default element namespace 'http://ndg.nerc.ac.uk/moles/dataproductiontool';  
     2declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
     3declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
     4 
     5declare 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} ; 
     20 
     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                        ($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> :)  
     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 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        } 
     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 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} ; 
     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 observation station record :) 
     99(: Security not implemented here yet;  :) 
     100{ 
     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]  
     104                return 
     105                        element {$out-element-name} { 
     106                                ($SRObsStn/moles:dgMetadataID), 
     107                                ($SRObsStn/moles:dgMetadataDescription), 
     108                                ($SRObsStn/moles:name), 
     109                                ($SRObsStn/moles:abbreviation), 
     110                                element dgObservationStation { 
     111                                        ($SRObsStn/moles:dgObservationStation/moles:contactDetails), 
     112                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then 
     113                                                element dgStationaryPlatform { 
     114                                                        $SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position, 
     115                                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgLandStation)) then element dgLandStation {''} 
     116                                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgMooring)) then element dgMooring {''} 
     117                                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgStationGroup)) then element dgStationGroup {''} 
     118                                                        else () 
     119                                                        } 
     120                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then  
     121                                                $SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform 
     122                                        else () 
     123                                } (: </dgObservationStation> :) 
     124                        }  
     125} ; 
     126 
     127declare 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{ 
     131for $person in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
     132        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     133        and moles:dgMetadataID/moles:localIdentifier=$locid]  
     134        return  
     135                element  {$out-element-name}  
     136                { 
     137                        ($person/moles:name), 
     138                        ($person/moles:contactDetails), 
     139                        ($person/moles:dgMetadataID) 
     140                } 
     141} ; 
     142 
     143declare 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{ 
     147for $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                } 
     157} ; 
     158 
     159 
     160for $DPT in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     161        moles:dgDataProductionTool!=''  
     162        and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
     163        and moles:dgMetadataID/moles:repositoryIdentifier='badc.nerc.ac.uk'  
     164        and moles:dgMetadataID/moles:localIdentifier='dpt1']  
    2165return  
    3 <dgMetadataRecord>  
    4         {$DPT/dgMetadataID} 
    5                 <dgMetadataID> 
    6                         <schemeIdentifier>NDG-B1</schemeIdentifier>  
    7                         {$DPT/dgMetadataID/repositoryIdentifier} 
    8                         {$DPT/dgMetadataID/localIdentifier} 
    9                 </dgMetadataID>  
    10         {$DPT/dgMetadataDescription} 
    11         {$DPT/name} 
    12         {$DPT/abbreviation} 
    13         <dgDataProductionTool>  
    14         {$DPT/contactDetails} 
    15         {if (exists($DPT/dgModel)) then ( 
    16                  <dgModel/> 
    17             )  
    18         else ($DPT/dgInstrument)  
    19         } 
    20         {if (exists($DPT/dgDPTRoles)) then ( 
    21                  <dgDPTRoles>Roles are available, and will be added soon</dgDPTRoles>  
    22         ) else() } 
    23         {for $RelDep in $DPT/dgDataProductionTool/DPTDeployment  
    24         return  
    25                 <DPTDeployment>  
    26                         {$RelDep/DateStart} 
    27                         {$RelDep/DateEnd} 
    28                         {$RelDep/dgMetadataID} 
    29                         {for $SRAct in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[(dgMetadataID/repositoryIdentifier=$RelDep/ActivityID/repositoryIdentifier and dgMetadataID/localIdentifier=$RelDep/ActivityID/localIdentifier)]  
    30                         return  
    31                                 <activity>  
    32                                         {$SRAct/dgMetadataID} 
    33                                         {$SRAct/dgMetadataDescription} 
    34                                         {$SRAct/name}{$SRAct/abbreviation} 
    35                                         <dgActivity> 
    36                                                 {$SRAct/*/dgActivityDataCollection} 
    37                                                 {$SRAct/*/dgActivityDataProject} 
    38                                                 {$SRAct/*/dgActivityDataCampaign} 
    39                                                 {$SRAct/*/dgActivityDataInvestigation} 
    40                                                 {$SRAct/*/dgActivityCoverage} 
    41                                                 {$SRAct/*/dgActivityDuration} 
    42                                         </dgActivity>  
    43                                 </activity>  
    44                         } 
    45                         {for $SRObsStn in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[(dgMetadataID/repositoryIdentifier=$RelDep/ObservationStationID/repositoryIdentifier and dgMetadataID/localIdentifier=$RelDep/ObservationStationID/localIdentifier)]  
    46                         return  
    47                                 <observationstation>  
    48                                         {$SRObsStn/dgMetadataID} 
    49                                         {$SRObsStn/dgMetadataDescription} 
    50                                         {$SRObsStn/name} 
    51                                         {$SRObsStn/abbreviation} 
    52                                         <dgObservationStation>  
    53                                                 {$SRObsStn/dgObservationStation/contactDetails} 
    54                                                 {$SRObsStn/dgObservationStation/dgStationaryPlatform} 
    55                                                 {$SRObsStn/dgObservationStation/dgMovingPlatform} 
    56                                         </dgObservationStation>  
    57                                 </observationstation> } 
    58                         {for $DE in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[dgDataEntity/RelatedDeployment/dgMetadataID/repositoryIdentifier=$RelDep/dgMetadataID/repositoryIdentifier and dgDataEntity/RelatedDeployment/dgMetadataID/localIdentifier=$RelDep/dgMetadataID/localIdentifier]  
    59                         return  
    60                                 <dataEntity>  
    61                                         {$DE/dgMetadataID} 
    62                                         {$DE/dgMetadataDescription} 
    63                                         {$DE/name} 
    64                                         {$DE/abbreviation} 
    65                                         <dgDataEntity>  
    66                                                 {$DE/dgDataEntity/dgDataSetType} 
    67                                                 {$DE/dgDataEntity/dgDataObjectType} 
    68                                                 {$DE/dgDataEntity/dgDataGranule} 
    69                                                 {$DE/dgDataEntity/dgDataSummary} 
    70                                                 <dgDataRoles>  
    71                                                         <dgDataCurator>  
    72                                                                 {$DE/dgDataEntity/dgDataRoles/dgDataCurator/dgMetadataID} 
    73                                                                 {$DE/dgDataEntity/dgDataRoles/dgDataCurator/roleName} 
    74                                                                 {$DE/dgDataEntity/dgDataRoles/dgDataCurator/abbreviation} 
    75                                                                 {$DE/dgDataEntity/dgDataRoles/dgDataCurator/contactDetails} 
    76                                                                 {for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder   
    77                                                                         order by $DataCuratorRole/startDate empty least, $DataCuratorRole/endDate empty least  
    78                                                                 return   
    79                                                                         <dgRoleHolder>  
    80                                                                                 {for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/*/(dgOrganisation | dgPerson)[(dgMetadataID/repositoryIdentifier=$DataCuratorRole/*/repositoryIdentifier and dgMetadataID/localIdentifier=$DataCuratorRole/*/localIdentifier)]  
    81                                                                                 return $DataCuratorRoleHolder} 
    82                                                                                         {$DataCuratorRole/startDate} 
    83                                                                                         {$DataCuratorRole/endDate} 
    84                                                                                         {$DataCuratorRole/localName} 
    85                                                                         </dgRoleHolder>} 
    86                                                         </dgDataCurator>  
    87                                                 </dgDataRoles>  
    88                                         </dgDataEntity>  
    89                                 </dataEntity>  
    90                         } 
    91                 </DPTDeployment>  
    92                 } 
    93         </dgDataProductionTool>  
    94         {$DPT/dgStructuredKeyword} 
    95         {$DPT/DataProvenance} 
    96         {$DPT/MetadataSecurity} 
    97 </dgMetadataRecord> 
     166f:strip-namespace(element dgMetadataRecord {  
     167        $DPT/dgMetadataID, 
     168                element dgMetadataID { 
     169                        element schemeIdentifier {'NDG-B1'}, 
     170                        $DPT/moles:dgMetadataID/moles:repositoryIdentifier, 
     171                        $DPT/moles:dgMetadataID/moles:localIdentifier 
     172                } (: End </dgMetadataID> :),  
     173        $DPT/moles:dgMetadataDescription, 
     174        $DPT/moles:name, 
     175        $DPT/moles:abbreviation, 
     176        element dgDataProductionTool {  
     177                $DPT/moles:contactDetails, 
     178                if (exists($DPT/moles:dgModel)) then $DPT/moles:dgModel 
     179                else $DPT/moles:dgInstrument  
     180        , 
     181        if (exists($DPT/moles:dgDPTRoles)) then  
     182                element dgDPTRoles {'Roles are available, and will be added soon'}  
     183         else(), 
     184        for $RelDep in $DPT/moles:dgDataProductionTool/moles:DPTDeployment  
     185        return  
     186                element DPTDeployment {  
     187                        $RelDep/moles:DateStart, 
     188                        $RelDep/moles:DateEnd, 
     189                        $RelDep/moles:dgMetadataID, 
     190                        f:return-stub-activity('activity', data($RelDep/moles:ActivityID/moles:repositoryIdentifier), data($RelDep/moles:ActivityID/moles:localIdentifier)), 
     191                        f:return-stub-obsstn('observationstation', data($RelDep/moles:ObservationStationID/moles:repositoryIdentifier), data($RelDep/moles:ObservationStationID/moles:localIdentifier)), 
     192                        for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord 
     193                                where $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier 
     194                                        and $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:dgMetadataID/moles:localIdentifier 
     195                        return 
     196                                f:return-stub-dataentity('dataentity', data($DE/moles:dgMetadataID/moles:repositoryIdentifier), data($DE/moles:dgMetadataID/moles:localIdentifier)), 
     197                        $RelDep/moles:Coverage 
     198                } (: </DPTDeployment> :)  
     199        } (: </dgDataProductionTool> :),  
     200        for $strkwrd in $DPT/moles:dgStructuredKeyword return $strkwrd, 
     201        if (exists($DPT/moles:DataProvenance)) then $DPT/moles:DataProvenance else (), 
     202        if (exists($DPT/moles:MetadataSecurity)) then $DPT/moles:MetadataSecurity else () 
     203} (:End </dgMetadataRecord> :) 
     204) (: End namespace strip :) 
  • TI07-MOLES/trunk/StubB/XQuery/NDG-ObsStnStubB.xquery

    r1276 r1683  
    1 for $ObsStn in collection('/db/ndg_B_metadata')/dgMetadata/dgMetadataRecord[dgObservationStation!='' and dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier='badc.nerc.ac.uk' and dgMetadataID/localIdentifier='obs1']  
     1declare default element namespace 'http://ndg.nerc.ac.uk/moles/observationstation';  
     2declare namespace moles='http://ndg.nerc.ac.uk/moles'; 
     3declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions'; 
     4 
     5declare 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} ; 
     20 
     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                        ($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> :)  
     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 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        } 
     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 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[ 
     76moles: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} ; 
     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 observation station record :) 
     99(: Security not implemented here yet;  :) 
     100{ 
     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]  
     104                return 
     105                        element {$out-element-name} { 
     106                                ($SRObsStn/moles:dgMetadataID), 
     107                                ($SRObsStn/moles:dgMetadataDescription), 
     108                                ($SRObsStn/moles:name), 
     109                                ($SRObsStn/moles:abbreviation), 
     110                                element dgObservationStation { 
     111                                        ($SRObsStn/moles:dgObservationStation/moles:contactDetails), 
     112                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then 
     113                                                element dgStationaryPlatform { 
     114                                                        $SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position, 
     115                                                        if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgLandStation)) then element dgLandStation {''} 
     116                                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgMooring)) then element dgMooring {''} 
     117                                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgStationGroup)) then element dgStationGroup {''} 
     118                                                        else () 
     119                                                        } 
     120                                        else if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then  
     121                                                $SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform 
     122                                        else () 
     123                                } (: </dgObservationStation> :) 
     124                        }  
     125} ; 
     126 
     127declare 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{ 
     131for $person in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
     132        moles:dgMetadataID/moles:repositoryIdentifier=$repid  
     133        and moles:dgMetadataID/moles:localIdentifier=$locid]  
     134        return  
     135                element  {$out-element-name}  
     136                { 
     137                        ($person/moles:name), 
     138                        ($person/moles:contactDetails), 
     139                        ($person/moles:dgMetadataID) 
     140                } 
     141} ; 
     142 
     143declare 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{ 
     147for $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                } 
     157} ; 
     158 
     159for $ObsStn in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
     160        moles:dgObservationStation!='' and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'  
     161        and moles:dgMetadataID/moles:repositoryIdentifier='badc.nerc.ac.uk'  
     162        and moles:dgMetadataID/moles:localIdentifier='obs1']  
    2163return  
    3         <dgMetadataRecord> 
    4                 <dgMetadataID> 
    5                         <schemeIdentifier>NDG-B1</schemeIdentifier>  
    6                         {$ObsStn/dgMetadataID/repositoryIdentifier} 
    7                         {$ObsStn/dgMetadataID/localIdentifier} 
    8                 </dgMetadataID>  
    9                 {$ObsStn/dgMetadataDescription} 
    10                 {$ObsStn/name} 
    11                 {$ObsStn/abbreviation} 
    12                 <dgObservationStation>  
    13                         {$ObsStn/dgObservationStation/contactDetails} 
    14                         {if (exists($ObsStn/dgObservationStation/dgStationaryPlatform)) then ( 
    15                                 <dgStationaryPlatform>  
    16                                 {$ObsStn/dgObservationStation/dgStationaryPlatform/position} 
    17                                 {if (exists($ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring)) then  (  
    18                                         <dgMooring>  
    19                                                 {$ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/dateStart} 
    20                                                 {$ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/dateEnd} 
    21                                                 {for $DepositingCruise in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/DepositingCruise/repositoryIdentifier and dgMetadataID/localIdentifier=$ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/DepositingCruise/localIdentifier)]  
     164f:strip-namespace( 
     165        element dgMetadataRecord { 
     166                element dgMetadataID { 
     167                        element schemeIdentifier {'NDG-B1', 
     168                        $ObsStn/moles:dgMetadataID/moles:repositoryIdentifier, 
     169                        $ObsStn/moles:dgMetadataID/moles:localIdentifier 
     170                } (: End </dgMetadataID> :),  
     171                $ObsStn/moles:dgMetadataDescription, 
     172                $ObsStn/moles:name, 
     173                $ObsStn/moles:abbreviation, 
     174                element dgObservationStation {  
     175                        $ObsStn/moles:dgObservationStation/moles:contactDetails, 
     176                        if (exists($ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then  
     177                                element dgStationaryPlatform {  
     178                                $ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position, 
     179                                if (exists($ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring)) then    
     180                                        element dgMooring {  
     181                                                $ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/moles:dateStart, 
     182                                                $ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/moles:dateEnd, 
     183                                                for $DepositingCruise in $ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/moles:DepositingCruise 
    22184                                                return  
    23                                                         <depositingcruise>  
    24                                                                 {$DepositingCruise/dgMetadataID} 
    25                                                                 {$DepositingCruise/name} 
    26                                                                 {$DepositingCruise/abbreviation} 
    27                                                                 {$DepositingCruise/dgMetadataDescription} 
    28                                                         </depositingcruise>  
    29                                                 } 
    30                                                 {if (exists($ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/dgStationGrouping)) then  (  
    31                                                         for $StationGrouping in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/DepositingCruise/repositoryIdentifier and dgMetadataID/localIdentifier=$ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/DepositingCruise/localIdentifier)]  
    32                                                         return   
    33                                                                 <dgStationGrouping>  
    34                                                                         {$StationGrouping/dgMetadataID} 
    35                                                                         {$StationGrouping/name} 
    36                                                                         {$StationGrouping/abbreviation} 
    37                                                                         {$StationGrouping/dgMetadataDescription} 
    38                                                                         {$StationGrouping/dgObservationStation/dgStationaryPlatform/position} 
    39                                                                 </dgStationGrouping> )  
    40                                                 else ()} 
    41                                                 </dgMooring>)  
    42                         else if (exists($ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring)) then  (  
    43                                 <dgStationGroup>  
    44                                         {$ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/dateStart} 
    45                                         {$ObsStn/dgObservationStation/dgStationaryPlatform/dgMooring/dateEnd} 
    46                                         <dgGroupedStations>  
    47                                                 {for $GroupedStations in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$ObsStn/dgObservationStation/dgStationaryPlatform/dgStationGroup/dgGroupedStations/dgGroupedStation/repositoryIdentifier and dgMetadataID/localIdentifier=$ObsStn/dgObservationStation/dgStationaryPlatform/dgStationGroup/dgGroupedStations/dgGroupedStation/localIdentifier)]  
    48                                                 return  
    49                                                         <dgGroupedStation>  
    50                                                                 {$GroupedStations/dgMetadataID} 
    51                                                                 {$GroupedStations/name} 
    52                                                                 {$GroupedStations/abbreviation} 
    53                                                                 {$GroupedStations/dgMetadataDescription} 
    54                                                                 {$GroupedStations/dgObservationStation/dgStationaryPlatform/position} 
    55                                                         </dgGroupedStation> } 
    56                                         </dgGroupedStations> 
    57                                 </dgStationGroup> )  
    58                         else ($ObsStn/dgObservationStation/dgLandStation)  
    59                         } 
    60                         </dgStationaryPlatform> )  
    61                         else ($ObsStn/dgObservationStation/dgMovingPlatform)  
    62                         } 
    63                         {for $RelDep in $ObsStn/*/ObsStationDeployment  
     185                                                        f:return-stub-activity('depositingcruise', data($DepositingCruise/moles:dgMetadataID/moles:repositoryIdentifier), data($DepositingCruise/moles:dgMetadataID/moles:localIdentifier)), 
     186                                                        if (exists($ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/moles:dgStationGrouping)) then    
     187                                                                for $StationGrouping in $ObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:dgMooring/dgStationGrouping  
     188                                                                return   
     189                                                                        f:return-stub-obsstn('stationgrouping', data($StationGrouping/moles:dgMetadataID/moles:repositoryIdentifier), data($StationGrouping/moles:dgMetadataID/moles:localIdentifier)) 
     190                                                        else () 
     191                                        } (: End </dgMooring> :)   
     192                                else if (exists($ObsStn/dgObservationStation/dgStationaryPlatform/dgStationGroup)) then    
     193                                        element dgStationGroup {  
     194                                                element dgGroupedStations {  
     195                                                        if (exists($ObsStn/dgObservationStation/dgStationaryPlatform/dgStationGroup/dgGroupedStations)) then 
     196                                                                for $GroupedStation in $ObsStn/dgObservationStation/dgStationaryPlatform/dgStationGroup/dgGroupedStation/dgGroupedStations 
     197                                                                return f:return-stub-obsstn('dgGroupedStation', data($GroupedStation/moles:dgMetadataID/moles:repositoryIdentifier), data($GroupedStation/moles:dgMetadataID/moles:localIdentifier)) 
     198                                                        else () 
     199                                                } (: End </dgGroupedStations> :) 
     200                                        } (: End </dgStationGroup> :)  
     201                                else $ObsStn/moles:dgObservationStation/moles:dgLandStation 
     202                                } (: End </dgStationaryPlatform>  :)   
     203                                else $ObsStn/moles:dgObservationStation/moles:dgMovingPlatform  
     204                        } ,  
     205                        for $RelDep in $ObsStn/moles:dgObservationStation/moles:ObsStationDeployment  
    64206                        return  
    65                                 <ObsStationDeployment>  
    66                                 {$RelDep/DateStart} 
    67                                 {$RelDep/DateEnd} 
    68                                 {$RelDep/dgMetadataID} 
    69                                 {for $SRAct in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$RelDep/ActivityID/repositoryIdentifier and dgMetadataID/localIdentifier=$RelDep/ActivityID/localIdentifier)]  
    70                                 return  
    71                                         <activity>  
    72                                                 {$SRAct/dgMetadataID} 
    73                                                 {$SRAct/dgMetadataDescription} 
    74                                                 {$SRAct/name} 
    75                                                 {$SRAct/abbreviation} 
    76                                                 <dgActivity>  
    77                                                         {$SRAct/*/dgActivityDataCollection} 
    78                                                         {$SRAct/*/dgActivityDataProject} 
    79                                                         {$SRAct/*/dgActivityDataCampaign} 
    80                                                         {$SRAct/*/dgActivityDataInvestigation} 
    81                                                         {$SRAct/*/dgActivityCoverage} 
    82                                                         {$SRAct/*/dgActivityDuration} 
    83                                                 </dgActivity> 
    84                                         </activity>  
    85                                 } 
    86                                 {for $SRDPT in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[(dgMetadataID/schemeIdentifier='NDG-B0' and dgMetadataID/repositoryIdentifier=$RelDep/DataProductionToolID/repositoryIdentifier and dgMetadataID/localIdentifier=$RelDep/DataProductionToolID/localIdentifier)]  
    87                                 return  
    88                                         <dataproductiontool>  
    89                                                 {$SRDPT/dgMetadataID} 
    90                                                 {$SRDPT/dgMetadataDescription} 
    91                                                 {$SRDPT/name} 
    92                                                 {$SRDPT/abbreviation} 
    93                                                 <dgDataProductionTool>  
    94                                                         {$SRDPT/dgDataProductionTool/contactDetails} 
    95                                                         {$SRDPT/dgDataProductionTool/dgModel} 
    96                                                         {$SRDPT/dgDataProductionTool/dgInstrument} 
    97                                                 </dgDataProductionTool> 
    98                                         </dataproductiontool>} 
    99                                 {for $DE in collection('/db/ndg_B_metadata')/*/dgMetadataRecord[dgMetadataID/schemeIdentifier='NDG-B0' and dgDataEntity/RelatedDeployment/dgMetadataID/repositoryIdentifier=$RelDep/dgMetadataID/repositoryIdentifier and dgDataEntity/RelatedDeployment/dgMetadataID/localIdentifier=$RelDep/dgMetadataID/localIdentifier]  
    100                                 return  
    101                                         <dataEntity>  
    102                                                 {$DE/dgMetadataID} 
    103                                                 {$DE/dgMetadataDescription} 
    104                                                 {$DE/name} 
    105                                                 {$DE/abbreviation} 
    106                                                 <dgDataEntity>  
    107                                                         {$DE/dgDataEntity/dgDataSetType} 
    108                                                         {$DE/dgDataEntity/dgDataObjectType} 
    109                                                         {$DE/dgDataEntity/dgDataGranule} 
    110                                                         {$DE/dgDataEntity/dgDataSummary} 
    111                                                         <dgDataRoles> 
    112                                                                 <dgDataCurator>  
    113                                                                         {$DE/dgDataEntity/dgDataRoles/dgDataCurator/dgMetadataID} 
    114                                                                         {$DE/dgDataEntity/dgDataRoles/dgDataCurator/roleName} 
    115                                                                         {$DE/dgDataEntity/dgDataRoles/dgDataCurator/abbreviation} 
    116                                                                         {$DE/dgDataEntity/dgDataRoles/dgDataCurator/contactDetails} 
    117                                                                         {for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder   
    118                                                                         order by $DataCuratorRole/startDate empty least, $DataCuratorRole/endDate empty least  
    119                                                                         return   
    120                                                                                 <dgRoleHolder>  
    121                                                                                 {for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/*/(dgOrganisation | dgPerson)[(dgMetadataID/repositoryIdentifier=$DataCuratorRole/*/repositoryIdentifier and dgMetadataID/localIdentifier=$DataCuratorRole/*/localIdentifier)]  
    122                                                                                 return  
    123                                                                                         $DataCuratorRoleHolder} 
    124                                                                                         {$DataCuratorRole/startDate} 
    125                                                                                         {$DataCuratorRole/endDate} 
    126                                                                                         {$DataCuratorRole/localName} 
    127                                                                                 </dgRoleHolder> 
    128                                                                         } 
    129                                                                 </dgDataCurator> 
    130                                                         </dgDataRoles> 
    131                                                 </dgDataEntity> 
    132                                         </dataEntity>  
    133                                         } 
    134                                 </ObsStationDeployment>  
    135                                 } 
    136                         </dgObservationStation>  
    137                         {$ObsStn/dgStructuredKeyword} 
    138                         {$ObsStn/DataProvenance} 
    139                         {$ObsStn/MetadataSecurity} 
    140         </dgMetadataRecord> 
     207                                element ObsStationDeployment { 
     208                                $RelDep/moles:DateStart, 
     209                                $RelDep/moles:DateEnd, 
     210                                $RelDep/moles:dgMetadataID, 
     211                                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)), 
     213                                for $DE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord 
     214                                        where $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier 
     215                                                and $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:dgMetadataID/moles:localIdentifier 
     216                                return 
     217                                        f:return-stub-dataentity('dataentity', data($DE/moles:dgMetadataID/moles:repositoryIdentifier), data($DE/moles:dgMetadataID/moles:localIdentifier)), 
     218                                $RelDep/moles:Coverage 
     219                        } (: </RelatedDeployment> :)  
     220                } (: </dgObservationStation> :),  
     221        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 () 
     224        } (: End </dgMetadataRecord> :) 
     225) (: End namespace strip :) 
Note: See TracChangeset for help on using the changeset viewer.