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

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

Beta version of d2b for DIF

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