Changeset 2077 for TI07-MOLES


Ignore:
Timestamp:
30/01/07 11:26:29 (12 years ago)
Author:
ko23
Message:

XQuery refactoring process - part one...

Location:
TI07-MOLES/trunk
Files:
5 edited

Legend:

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

    r2064 r2077  
    22(: Note algoritm for creating non-pre-existing organisations :) 
    33(: dgPersons are not created as one can't tell automatically which are people and which are orgs, and orgs are simpler :)   
    4  
     4import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery'; 
    55declare default element namespace 'http://ndg.nerc.ac.uk/moles'; 
    66declare namespace dif='http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'; 
     
    1313declare variable $input_entry_id as xs:string {'Input_Entry_ID'}; 
    1414declare variable $output_local_id as xs:string {'Output_LocalID'}; 
    15 (: Vocab stubs :) 
    16 declare variable $unknown_vocab_id as xs:string {'http://vocab.ndg.nerc.ac.uk/null'}; 
    17 declare variable $bodc_parameter_discovery_vocab as xs:string {'http://vocab.ndg.nerc.ac.uk/P021'}; 
    18 declare variable $cf_standard_names as xs:string {'http://vocab.ndg.nerc.ac.uk/P071'}; 
    19 declare variable $gcmd_science_valids as xs:string {'http://vocab.ndg.nerc.ac.uk/P041'}; 
    20 declare variable $gcmd_project_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/projects.html'}; 
    21 declare variable $gcmd_location_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/locations.html'}; 
    22 declare variable $gcmd_paleotemporal_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/paleotemporal.html'}; 
    23 declare variable $gcmd_iso_topic_list as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/iso_topic_list.html'}; 
    24 declare variable $iso_topic_list as xs:string {'http://vocab.ndg.nerc.ac.uk/P051'}; 
    25 declare variable $ndg_data_provider_vocab as xs:string {'http://vocab.ndg.nerc.ac.uk/N010'}; 
    2615 
    2716declare function f:fix-coord($e as element()) as element()  
     
    4837} ; 
    4938 
    50 declare function f:spot-vocab($vocab_root as xs:string, $vocab_uri as xs:string) as xs:boolean  
    51 (: See if the vocab pointed if from the vocab pointed at by the vocab_root :) 
    52 { 
    53 if ($vocab_root = substring($vocab_uri, 1, string-length($vocab_root))) then   
    54         true() 
    55 else 
    56         false() 
    57 } ; 
    58  
    5939for $DIF in collection($input_collection)/dif:DIF[dif:Entry_ID=$input_entry_id] 
    6040return 
     
    9777                                                                        element dgValidTerm {'dummy'}, 
    9878                                                                        element dgValidTermID { 
    99                                                                                 element ParentListID {$unknown_vocab_id}, 
     79                                                                                element ParentListID {$voclib:unknown_vocab_id}, 
    10080                                                                                element TermID {escape-uri('dummy unit', true())} 
    10181                                                                        } 
     
    11494                                                        }, 
    11595                                                                element dgValidTermID { 
    116                                                                         element ParentListID {$gcmd_science_valids}, 
     96                                                                        element ParentListID {$voclib:gcmd_science_valids}, 
    11797                                                                        element TermID {escape-uri($parameter/dif:Category, true())} 
    11898                                                                } 
     
    157137                                                                                element dgValidTerm {string($location)}, 
    158138                                                                                element dgValidTermID { 
    159                                                                                         element ParentListID {$gcmd_location_valids}, 
     139                                                                                        element ParentListID {$voclib:gcmd_location_valids}, 
    160140                                                                                        element TermID {escape-uri($location, true())} 
    161141                                                                                } 
     
    182162                                                                                element dgValidTerm {string($chronostratigraphic)}, 
    183163                                                                                element dgValidTermID { 
    184                                                                                         element ParentListID {$gcmd_paleotemporal_valids}, 
     164                                                                                        element ParentListID {$voclib:gcmd_paleotemporal_valids}, 
    185165                                                                                        element TermID {escape-uri($chronostratigraphic, true())} 
    186166                                                                                } 
     
    270250                        element dgValidTerm {'d2b converted record'}, 
    271251                        element dgValidTermID { 
    272                                 element ParentListID {$unknown_vocab_id}, 
    273                                 element TermID {'d2b'} 
     252                                element ParentListID {$voclib:unknown_vocab_id}, 
     253                                element TermID {'d2b' 
    274254                        } 
    275255                }, 
     
    279259                                element dgValidTerm {$structuredKeywords}, 
    280260                                element dgValidTermID { 
    281                                         element ParentListID {$unknown_vocab_id}, 
     261                                        element ParentListID {$voclib:unknown_vocab_id}, 
    282262                                        element TermID {escape-uri($structuredKeywords, true())} 
    283263                                } 
     
    288268                                element dgValidTerm {string($structuredKeywords)}, 
    289269                                element dgValidTermID { 
    290                                         element ParentListID {$gcmd_iso_topic_list}, 
     270                                        element ParentListID {$voclib:gcmd_iso_topic_list}, 
    291271                                        element TermID {escape-uri($structuredKeywords, true())} 
    292272                                } 
  • TI07-MOLES/trunk/DIF/XQuery/NDG-DIF.xquery

    r2056 r2077  
     1import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery'; 
    12declare default element namespace 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'; 
    23declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';  
     
    1011        and moles:dgMetadataID/moles:localIdentifier='HGFS3751'] 
    1112return 
    12     element DIF { 
     13element DIF { 
    1314        attribute xsi:schemaLocation {'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif_v9.4.xsd'}, 
    14         element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, ':DIF:', $DE/moles:dgMetadataID/moles:localIdentifier)}, 
     15        element Entry_ID {concat($DE/moles:dgMetadataID/moles:repositoryIdentifier, '__DIF__', $DE/moles:dgMetadataID/moles:localIdentifier)}, 
    1516        element Entry_Title {string($DE/moles:name)}, 
    1617        element Data_Set_Citation { 
     
    2930            element Dataset_Title {string($DE/moles:name)} 
    3031        }, 
    31         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]) 
     32        for $StructuredKeyword in ($DE//(moles:dgStructuredKeyword | moles:dgStdParameterMeasured)[voclib:spot-vocab($voclib:gcmd_science_valids, moles:dgValidTermID/moles:ParentListID) and moles:ListLevel = 0]) 
    3233                return if (exists($StructuredKeyword/*/moles:dgValidTerm)) then  
    3334                    element Parameters { 
     
    165166                        for $DGID in $DE/moles:dgDataEntity/moles:dgDataGranule/moles:dataModelID 
    166167                        return  
    167                             element Data_Set_ID {concat($DGID/moles:repositoryIdentifier, ':', $DGID/moles:schemeIdentifier, ':', $DGID/moles:localIdentifier)}, 
     168                            element Data_Set_ID {concat($DGID/moles:repositoryIdentifier, '__', $DGID/moles:schemeIdentifier, '__', $DGID/moles:localIdentifier)}, 
    168169                        element  Personnel { 
    169170                                element Role {'Data Center Contact'}, 
  • TI07-MOLES/trunk/DublinCore/XQuery/NDG-DublinCore.xquery

    r2008 r2077  
     1import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery'; 
    12declare default element namespace 'http://ndg.nerc.ac.uk/moles'; 
    23declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';  
  • TI07-MOLES/trunk/MOLES.xpr

    r1795 r2077  
    33    <meta> 
    44        <filters directoryPatterns="" filePatterns="" 
    5             positiveFilePatterns=""/> 
     5            positiveFilePatterns="" showHiddenFiles="false"/> 
     6        <options/> 
    67    </meta> 
    78    <projectTree name="MOLES.xpr"> 
    89        <folder path="ISO19115-19139/Examples/"/> 
     10        <folder path="xqueryLib/"/> 
    911        <file name="DIF/XQuery/DIF2MOLES.xquery"/> 
    1012        <file name="StubB/XQuery/NDG-ActStubB.xquery"/> 
  • TI07-MOLES/trunk/StubB/XQuery/NDG-ActStubB.xquery

    r1707 r2077  
    1919} ; 
    2020 
    21 declare function f:return-stub-activity($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    22 (: Returns a 'stubB' style activity record to expand an activity record :) 
    23 (: Security not implemented here yet :) 
    24 { 
    25 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    26                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    27                         and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    28 return   
    29         if ($found = 0) then  
    30                 element {$out-element-name} { 
    31                         element error {'not found'}, 
    32                         element repositoryIdentifier {$repid}, 
    33                         element localIdentifier {$locid} 
    34                 }  
    35         else ( 
    36                 for $SRAct in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    37                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    38                         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    39                 return  
    40                         element  {$out-element-name} {  
    41                                 ($SRAct/moles:dgMetadataID), 
    42                                 ($SRAct/moles:dgMetadataDescription), 
    43                                 ($SRAct/moles:name), 
    44                                 ($SRAct/moles:abbreviation), 
    45                                 element dgActivity { 
    46                                         if (exists($SRAct/*/moles:dgActivityDataCollection)) then  
    47                                                 ($SRAct/*/moles:dgActivityDataCollection) 
    48                                         else if (exists($SRAct/*/moles:dgActivityDataProject)) then  
    49                                                 ($SRAct/*/moles:dgActivityDataProject) 
    50                                         else if (exists($SRAct/*/dgActivityDataCampaign)) then 
    51                                                 ($SRAct/moles:dgActivity/moles:dgActivityDataCampaign) 
    52                                         else  
    53                                                 ($SRAct/moles:dgActivity/moles:dgActivityDataInvestigation),  
    54                                         ($SRAct/moles:dgActivity/moles:dgActivityCoverage), 
    55                                         ($SRAct/moles:dgActivity/moles:dgActivityDuration) 
    56                                 } (: </dgActivity> :)  
    57                         } (: </activity> :)  
    58         ) 
    59 } ; 
    60  
    61 declare function f:return-stub-dataentity($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    62 (: Returns a 'stubB' style observation station record to expand an data entity record :) 
    63 (: Security not implemented yet :) 
    64 { 
    65 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    66                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    67                 and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    68 return   
    69         if ($found = 0) then  
    70                 element {$out-element-name} { 
    71                         element error {'not found'}, 
    72                         element repositoryIdentifier {$repid}, 
    73                         element localIdentifier {$locid} 
    74                 }  
    75         else ( 
    76                 for $SRDE in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    77                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    78                         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    79                 return   
    80                         element {$out-element-name} { 
    81                                 ($SRDE/moles:dgMetadataID), 
    82                                 ($SRDE/moles:dgMetadataDescription), 
    83                                 ($SRDE/moles:name), 
    84                                 ($SRDE/moles:abbreviation), 
    85                                 element dgDataEntity { 
    86                                         ($SRDE/moles:dgDataEntity/moles:dgDataSetType), 
    87                                         ($SRDE/moles:dgDataEntity/moles:dgDataGranule), 
    88                                         ($SRDE/moles:dgDataEntity/moles:dgDataSummary) 
    89                                 } (: </dgDataEntity> :)          
    90                         } 
    91         ) 
    92 } ; 
    93  
    94 declare function f:return-stub-dpt($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    95 (: Returns a 'stubB' style dpt record to expand a dpt record :) 
    96 (: Security not implemented yet :) 
    97 { 
    98 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    99                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    100                 and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    101 return   
    102         if ($found = 0) then  
    103                 element {$out-element-name} { 
    104                         element error {'not found'}, 
    105                         element repositoryIdentifier {$repid}, 
    106                         element localIdentifier {$locid} 
    107                 }  
    108         else ( 
    109                 for $SRDPT in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    110                                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    111                                 and moles:dgMetadataID/moles:localIdentifier=$locid] 
    112                 return   
    113                         element {$out-element-name} { 
    114                                 $SRDPT/moles:dgMetadataID, 
    115                                 $SRDPT/moles:dgMetadataDescription, 
    116                                 $SRDPT/moles:name, 
    117                                 $SRDPT/moles:abbreviation, 
    118                                 $SRDPT/moles:logos, 
    119                                 element dgDataProductionTool { 
    120                                         $SRDPT/moles:dgDataProductionTool/moles:contactDetails, 
    121                                         if (exists($SRDPT/moles:dgDataProductionTool/moles:dgModel)) then 
    122                                                 $SRDPT/moles:dgDataProductionTool/moles:dgModel 
    123                                         else (), 
    124                                         if (exists($SRDPT/moles:dgDataProductionTool/moles:dgInstrument)) then 
    125                                                 $SRDPT/moles:dgDataProductionTool/moles:dgInstrument 
    126                                         else () 
    127                                         } (: </dgDataProductionTool> :) 
    128                                 } (: </dataproductiontool> :) 
    129         ) 
    130 } ; 
    131  
    132 declare function f:return-stub-obsstn($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    133 (: Returns a 'stubB' style observation station record to expand an observation station record :) 
    134 (: Security not implemented here yet;  :) 
    135 { 
    136 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    137                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    138                         and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    139 return   
    140         if ($found = 0) then  
    141                 element {$out-element-name} { 
    142                         element error {'not found'}, 
    143                         element repositoryIdentifier {$repid}, 
    144                         element localIdentifier {$locid} 
    145                 }  
    146         else ( 
    147                 for $SRObsStn in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
    148                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    149                         and moles:dgMetadataID/moles:localIdentifier=$locid]  
    150                 return 
    151                         element {$out-element-name} { 
    152                                 ($SRObsStn/moles:dgMetadataID), 
    153                                 ($SRObsStn/moles:dgMetadataDescription), 
    154                                 ($SRObsStn/moles:name), 
    155                                 ($SRObsStn/moles:abbreviation), 
    156                                 element dgObservationStation { 
    157                                         ($SRObsStn/moles:dgObservationStation/moles:contactDetails), 
    158                                         if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform)) then 
    159                                                 element dgStationaryPlatform { 
    160                                                         $SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/moles:position, 
    161                                                         if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgLandStation)) then element dgLandStation {''} 
    162                                                         else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgMooring)) then element dgMooring {''} 
    163                                                         else if (exists($SRObsStn/moles:dgObservationStation/moles:dgStationaryPlatform/dgStationGroup)) then element dgStationGroup {''} 
    164                                                         else () 
    165                                                         } 
    166                                         else if (exists($SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform)) then  
    167                                                 $SRObsStn/moles:dgObservationStation/moles:dgMovingPlatform 
    168                                         else () 
    169                                 } (: </dgObservationStation> :) 
    170                         } 
    171         ) 
    172 } ; 
    173  
    174 declare function f:return-stub-person($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    175 (: Returns a 'stubB' style observation station record to expand a person record :) 
    176 (: Security not implemented yet :) 
    177 { 
    178 let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
    179                         moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    180                         and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    181 return   
    182         if ($found = 0) then  
    183                 element {$out-element-name} { 
    184                         element error {'not found'}, 
    185                         element repositoryIdentifier {$repid}, 
    186                         element localIdentifier {$locid} 
    187                 }  
    188         else ( 
    189         for $person in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgPerson[ 
    190                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    191                 and moles:dgMetadataID/moles:localIdentifier=$locid]  
    192         return  
    193                 element  {$out-element-name}  
    194                 { 
    195                         ($person/moles:name), 
    196                         ($person/moles:contactDetails), 
    197                         ($person/moles:dgMetadataID) 
    198                 } 
    199         ) 
    200 } ; 
    201  
    202 declare function f:return-stub-organisation($out-element-name as xs:string, $repid as xs:string, $locid as xs:string) as element()  
    203 (: Returns a 'stubB' style observation station record to expand an organisation record :) 
    204 (: Security not implemented yet :) 
    205 { 
    206         let $found := count(collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgOrganisation[ 
    207                                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    208                                 and moles:dgMetadataID/moles:localIdentifier=$locid]) 
    209         return   
    210                 if ($found = 0) then  
    211                         element {$out-element-name} { 
    212                                 element error {'not found'}, 
    213                                 element repositoryIdentifier {$repid}, 
    214                                 element localIdentifier {$locid} 
    215                         }  
    216                 else ( 
    217                         for $org in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgOrganisation[ 
    218                                 moles:dgMetadataID/moles:repositoryIdentifier=$repid  
    219                                 and moles:dgMetadataID/moles:localIdentifier=$locid]  
    220                         return  
    221                                 element  {$out-element-name} { 
    222                                         $org/moles:dgMetadataID, 
    223                                         $org/moles:name, 
    224                                         $org/moles:abbreviation, 
    225                                         $org/moles:contactDetails, 
    226                                         $org/moles:logos 
    227                                 } 
    228                 ) 
    229 } ; 
    23021 
    23122for $Act in collection('/db/ndg_B_metadata')/moles:dgMetadata/moles:dgMetadataRecord[ 
Note: See TracChangeset for help on using the changeset viewer.