source: TI07-MOLES/trunk/DIF/XQuery/DIF2MOLES.xquery @ 1799

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI07-MOLES/trunk/DIF/XQuery/DIF2MOLES.xquery@1799
Revision 1799, 8.1 KB checked in by ko23, 13 years ago (diff)

Extended DIF2MOLES.xquery

Line 
1(: Note algoritm for creating non-pre-existing organisations :)
2 (: dgPersons are not created as one can't tell automatically which are people and which are orgs, and orgs are simpler :) 
3
4declare default element namespace 'http://ndg.nerc.ac.uk/moles';
5declare namespace dif='http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/';
6declare namespace xsi='http://www.w3.org/2001/XMLSchema-instance';
7declare namespace f='http://ndg.nerc.ac.uk/moles/localfunctions';
8declare variable $input_collection as xs:string {'/db/discovery'};
9declare variable $unknown_vocab_id as xs:string {'http://vocab.ndg.nerc.ac.uk/null'};
10declare variable $ndg_data_provider_vocab as xs:string {'http://vocab.ndg.nerc.ac.uk/N010'};
11declare variable $gcmd_science_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_parameters.html'};
12declare variable $gcmd_project_valids as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/projects.html'};
13declare variable $gcmd_iso_topic_list as xs:string {'http://gcmd.gsfc.nasa.gov/Resources/valids/iso_topic_list.html'};
14declare variable $cf_standard_names as xs:string {'http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html'};
15declare variable $iso_topic_list as xs:string {'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode'};
16declare variable $input_repository as xs:string {'Input_Repository_Code'};
17declare variable $input_repository_local as xs:string {'Input_Repository_Code_LocalID'};
18
19element dgMetadata {
20for $DIF in collection($input_collection)/dif:DIF[dif:Entry_ID='NOCSDAT100']
21return
22        element dgMetadataRecord {
23                element dgMetadataID {
24                        element schemeIdentifier {'NDG-B0'},
25                        element repositoryIdentifier {$input_repository},
26                        element localIdentifier {string($DIF/dif:Entry_ID)}
27                },
28                element dgMetadataDescription {
29                        element metadataDescriptionID {
30                                element schemeIdentifier {'NDG-B0'},
31                                element repositoryIdentifier {$input_repository},
32                                element localIdentifier {concat('generated_desc-', string($DIF/dif:Entry_ID))}
33                        },
34                        element metadataDescriptionLastUpdated {current-date()}                 ,
35                        element abstract {
36                                element abstractText {string($DIF/dif:Summary)}
37                        }
38                },
39                element name {string($DIF/dif:Entry_Title)},
40                element abbreviation {string($DIF/dif:Entry_Title)},
41                element dgDataEntity {
42                        element dgDataSetType {''},
43                        element dgDataSummary {
44                                element dgParameterSummary {
45                                        element dgParameterValue {
46                                                element dgValueDataParameter {
47                                                        element Value {''},
48                                                        element dgStandardUnit {
49                                                                element dgValidTerm {'dummy'},
50                                                                element dgValidTermID {
51                                                                        element ParentListID {'http://vocabs.ndg.nerc.ac.uk/null.'},
52                                                                        element TermID {escape-uri('dummy unit', true())}
53                                                                }
54                                                        }
55                                                }
56                                        },
57                                        element dgStdParameterMeasured {
58                                                element dgValidTerm {'dummy'},
59                                                element dgValidTermID {
60                                                        element ParentListID {'http://vocabs.ndg.nerc.ac.uk/null.'},
61                                                        element TermID {escape-uri('dummy term', true())}
62                                                }
63                                        },
64                                        element ParameterName {'dummy term'},
65                                        element ParameterAbbreviation {'dummy term'}
66                                },
67                                if (exists($DIF/(dif:Spatial_Coverage)) or exists($DIF/dif:Temporal_Coverage)) then
68                                        element dgDataCoverage {
69                                                if (exists($DIF/dif:Spatial_Coverage/dif:Northernmost_Latitude)) then
70                                                        element dgSpatialCoverage {
71                                                                for $boundingbox in $DIF/dif:Spatial_Coverage[exists(dif:Northernmost_Latitude)]
72                                                                return
73                                                                        element BoundingBox {
74                                                                                element Limit_North {string($boundingbox/dif:Northernmost_Latitude)},
75                                                                                element Limit_South {string($boundingbox/dif:Southernmost_Latitude)},
76                                                                                element Limit_West {string($boundingbox/dif:Westernmost_Longitude)},
77                                                                                element Limit_East {string($boundingbox/dif:Easternmost_Longitude)}
78                                                                        }
79                                                        }
80                                                else (),
81                                                if (exists($DIF/dif:Temporal_Coverage/dif:Start_Date)) then
82                                                        element dgTemporalCoverage {
83                                                                for $temporalcoverage in $DIF/dif:Temporal_Coverage[exists(dif:Start_Date) and exists(dif:Stop_Date)]
84                                                                return
85                                                                        element DateRange {
86                                                                                element DateRangeStart {string($temporalcoverage/dif:Start_Date)},
87                                                                                element DateRangeEnd {string($temporalcoverage/dif:Stop_Date)}
88                                                                        }
89                                                        }
90                                                else ()
91                                        }
92                                else ()
93                        },
94                        element dgDataRoles {
95                                if (exists($DIF/(dif:Data_Set_Citation/dif:Dataset_Creator | dif:Originating_Center))) then
96                                        element dgDataCreator {
97                                                element dgMetadataID {
98                                                        element schemeIdentifier {'NDG-B0'},
99                                                        element repositoryIdentifier {$input_repository},
100                                                        element localIdentifier {concat('generated_creator-', string($DIF/dif:Entry_ID))}
101                                                },
102                                                element roleName {'Data Creator'},
103                                                element abbreviation {'Creator'},
104                                                for $creatorID in $DIF/(dif:Data_Set_Citation/dif:Dataset_Creator | dif:Originating_Center)
105                                                return
106                                                element dgRoleHolder {
107                                                        element dgOrganisationID {
108                                                                element schemeIdentifier {'NDG-B0'},
109                                                                element repositoryIdentifier {$input_repository},
110                                                                element localIdentifier  {escape-uri(concat('generated_orgcit-', string($creatorID)), true())}
111                                                        },
112                                                element startDate {current-date()}
113                                                }
114                                        }
115                                else (),
116                                element dgDataCurator {
117                                        element dgMetadataID {
118                                                element schemeIdentifier {'NDG-B0'},
119                                                element repositoryIdentifier {$input_repository},
120                                                element localIdentifier {concat('generated_curator-', string($DIF/dif:Entry_ID))}
121                                        },
122                                        element roleName {'Data Curator'},
123                                        element abbreviation {'Curator'},
124                                        element dgRoleHolder {
125                                                element dgOrganisationID {
126                                                        element schemeIdentifier {'NDG-B0'},
127                                                        element repositoryIdentifier {$input_repository},
128                                                        element localIdentifier {$input_repository_local}
129                                                },
130                                        element startDate {current-date()}
131                                        }
132                                }
133                        }
134                },
135                element dgStructuredKeyword {
136                        element dgValidTerm {'MDIP'},
137                        element dgValidTermID {
138                                element ParentListID {$ndg_data_provider_vocab},
139                                element TermID {'NDGO0001'}
140                        }
141                },
142                for $structuredKeywords in $DIF/dif:Keywords
143                return
144                        element dgStructuredKeyword {
145                                element dgValidTerm {$structuredKeywords},
146                                element dgValidTermID {
147                                        element ParentListID {$unknown_vocab_id},
148                                        element TermID {escape-uri($structuredKeywords, true())}
149                                }
150                        },
151                for $structuredKeywords in $DIF/dif:ISO_Topic_Category
152                return
153                        element dgStructuredKeyword {
154                                element dgValidTerm {string($structuredKeywords)},
155                                element dgValidTermID {
156                                        element ParentListID {$gcmd_iso_topic_list},
157                                        element TermID {escape-uri($structuredKeywords, true())}
158                                }
159                        },
160                if (exists($DIF/dif:DIF_Creation_Date) or exists($DIF/dif:Last_DIF_Revision_Date)) then
161                        element dgMetadataProvenance {
162                                if (exists($DIF/dif:DIF_Creation_Date)) then
163                                        element RecordCreation {
164                                                element CreatedDate {
165                                                        if (string($DIF/dif:DIF_Creation_Date) castable as xs:date) then
166                                                                string($DIF/dif:DIF_Creation_Date) cast as xs:date
167                                                        else (current-date())
168                                                },
169                                        element CreatedBy {$input_repository}
170                                        }
171                                else
172                                        element RecordCreation {
173                                                element CreatedDate {current-date()},
174                                                element CreatedBy {'MOLES Import'}
175                                        },
176                                if (exists($DIF/dif:Last_DIF_Revision_Date)) then
177                                        element RecordUpdate {
178                                                element UpdateDate {
179                                                        if (string($DIF/dif:Last_DIF_Revision_Date) castable as xs:date) then
180                                                                string($DIF/dif:Last_DIF_Revision_Date) cast as xs:date
181                                                        else (current-date())
182                                                },
183                                                element UpdatedBy {$input_repository}
184                                        }
185                                else ()
186                        }
187                else ()
188        } (: </dgMetadataRecord>:),
189        for $creator in distinct-values(collection($input_collection)/dif:DIF/dif:Data_Set_Citation/dif:Dataset_Creator | dif:Originating_Center)
190        return
191                element dgOrganisation {
192                        element dgMetadataID {
193                                element schemeIdentifier {'NDG-B0'},
194                                element repositoryIdentifier {$input_repository},
195                                element localIdentifier {escape-uri(concat('generated_orgcit-', string($creator)), true())}
196                        },
197                        element name {string($creator)},
198                        element abbreviation {string($creator)},
199                        element contactDetails {''}
200                }
201} (:    </dgMetadata> :)
Note: See TracBrowser for help on using the repository browser.