source: TI07-MOLES/trunk/DIF/XQuery/NDG-DIF.xquery @ 1276

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

Update queries + Java code

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1for $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']
2return
3        <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'>
4        <Entry_ID>{concat($DE/dgMetadataID/repositoryIdentifier, ':DIF:', $DE/dgMetadataID/localIdentifier)}</Entry_ID>
5        <Entry_Title>{string($DE/name)}</Entry_Title>
6        {for $DataCreatorRole in $DE/dgDataEntity/dgDataRoles/dgDataCreator/dgRoleHolder[not(exists(endDate)) or endDate='']
7                return
8                        for $DataCreatorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0'
9                                       and dgMetadataID/repositoryIdentifier=$DataCreatorRole/*/repositoryIdentifier
10                                       and dgMetadataID/localIdentifier=$DataCreatorRole/*/localIdentifier)]
11                                return
12                                <Dataset_Citation>
13                                        {element Data_Creator {if (exists($DataCreatorRoleHolder/name/initials)) then (
14                                        string(concat(string($DataCreatorRoleHolder/name/initials), ' ', string($DataCreatorRoleHolder/name/familyName)))
15                                        )
16                                        else (
17                                                        string($DataCreatorRoleHolder/abbreviation)
18                                        )}
19                                        }
20
21                                        <Dataset_Title>{string($DE/name)}</Dataset_Title>
22
23                                </Dataset_Citation>
24        }
25        <Personnel/>
26        <Discipline/>
27       
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 (
30                <Parameters>
31                        {element Category {string($StructuredKeyword/*/dgValidTerm)}}
32                        {if (exists($StructuredKeyword//dgValidSubterm)
33                                and $StructuredKeyword//dgValidSubterm != ''
34                                and $StructuredKeyword//dgValidSubterm != ' ') then (
35                        for $Subterm in $StructuredKeyword//dgValidSubterm[exists(dgValidTerm)]
36                        where exists($Subterm/dgValidSubterm)
37                                order by $Subterm/ListLevel
38                                return
39                                        if ($Subterm/ListLevel=1) then (element Topic {string($Subterm/dgValidSubterm/dgValidTerm)})
40                                        else (
41                                        if ($Subterm/ListLevel=2) then (element Term {string($Subterm/dgValidSubterm/dgValidTerm)})
42                                        else (
43                                        if ($Subterm/ListLevel=3) then (element Variable {string($Subterm/dgValidSubterm/dgValidTerm)})
44                                        else (
45                                        if ($Subterm/ListLevel=4) then (element Detailed_Variable {string($Subterm/dgValidSubterm/dgValidTerm)})
46                                        else (element GCMD_Science_Valid {string($Subterm/dgValidSubterm/dgValidTerm)}))))
47                                )       
48                        else()}
49                </Parameters>
50                )
51                else()
52        }
53        {for $ISOTopicCategory in ($DE/dgStructuredKeyword[dgValidTermID/ParentListID='ISO 19115 Topic Category'])
54                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' 
59        and
60        dgValidTermID/ParentListID!='ISO 19115 Topic Category' 
61        ]/dgValidTerm)
62        return element Keyword {string($Keyword)}
63        }
64           
65        {for $DepDPT in ($DE/dgDataEntity/RelatedDeployment/DataProductionToolID) 
66        return
67            <Sensor_Name>
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))
69                    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))
71                    return element Long_Name {data($DepDPTName)}
72                }
73            </Sensor_Name>
74        }
75        {for $DepObsStn in ($DE/dgDataEntity/RelatedDeployment/ObservationStationID)
76        return
77            <Source_Name>
78                {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))
79                    return <Short_Name>{data($DepObsStnAbbrev)}</Short_Name>}
80                {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))
81                    return <Long_Name>{data($DepObsStnName)}</Long_Name>}
82            </Source_Name>
83            }
84        {for $TemporalRange in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgTemporalCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgDateRange)
85                return <Temporal_Coverage>
86                    {element Start_Date {data($TemporalRange/DateRangeStart)}}
87                    {element End_Date {data($TemporalRange/DateRangeEnd)}}
88                 </Temporal_Coverage>
89                }
90        {for $TemporalTerm in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgTemporalCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgArea/dgValidTerm)
91                return element Paleo_Temporal_Coverage {
92                element Chronostratigraphic_Unit {data($TemporalTerm)}
93                    }
94                }
95        {for $Data_Set_Progress in ($DE/dgDataEntity/dgDataSummary/dgDataStatus/dgDatasetClosure)
96                return element Data_Set_Progress {$Data_Set_Progress}
97                    }
98        {for $BoundingBox in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgSpatialCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/BoundingBox)
99        return <Spatial_Coverage>
100            {element Southernmost_Latitude {data($BoundingBox/LimitSouth)}}
101            {element Northernmost_Latitude {data($BoundingBox/LimitNorth)}}
102            {element Westernmost_Longitude {data($BoundingBox/LimitWest)}}
103            {element Easternmost_Longitude {data($BoundingBox/LimitEast)}}
104            </Spatial_Coverage>
105        }
106        {for $Location in ($DE/dgDataEntity/dgDataSummary/dgDataCoverage/(dgSpatialCoverage | dgSpatioTemporalcoverage/dgSpatioTemporalRange/dgSpatialCoverage)/dgArea[dgValidTermID/ParentListID='http://gcmd.gsfc.nasa.gov/Resources/valids/gcmd_locations.html'])
107                return element Location {$Location}
108                }
109        <Data_Resolution/>
110        {for $DepAct in ($DE/dgDataEntity/RelatedDeployment/ActivityID)
111        return
112            <Project>
113                {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))
114                    return <Short_Name>{data($DepActAbbrev)}</Short_Name>}
115                {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))
116                    return <Long_Name>{data($DepActName)}</Long_Name>}
117            </Project>
118            }
119        <Quality/>
120        {if (exists($DE/dgDataEntity/dgDataGranule/accessControlPolicy)) then (
121            element Access_Constraints {''}
122            )
123                else ()
124            }
125        <Use_Constraints/>
126        <Data_Set_Language/>
127        <Originating_Center/>
128
129        {for $DataCuratorRole in $DE/dgDataEntity/dgDataRoles/dgDataCurator/dgRoleHolder[not(exists(endDate)) or endDate='']
130                return
131                        for $DataCuratorRoleHolder in collection('/db/ndg_B_metadata')/dgMetadata/*[(dgMetadataID/schemeIdentifier='NDG-B0'
132                                       and dgMetadataID/repositoryIdentifier=$DataCuratorRole/*/repositoryIdentifier
133                                       and dgMetadataID/localIdentifier=$DataCuratorRole/*/localIdentifier)]
134                                return
135                                <Data_Center>
136                                        <Data_Center_Name>
137                                        {element Short_Name {if (exists($DataCuratorRoleHolder/name/initials)) then (
138                                        string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName)))
139                                        )
140                                        else (
141                                                        string($DataCuratorRoleHolder/abbreviation)
142                                        )}
143                                        }
144                                        {element Long_Name {if (exists($DataCuratorRoleHolder/name/initials)) then (
145                                        string(concat(string($DataCuratorRoleHolder/name/initials), ' ', string($DataCuratorRoleHolder/name/familyName)))
146                                        )
147                                        else (string($DataCuratorRoleHolder/name))}
148                                        }
149                                        </Data_Center_Name>
150                                        {if (exists($DataCuratorRoleHolder/contactDetails/URI)) then (
151                                        element Data_Center_URL {data($DataCuratorRoleHolder/contactDetails/URI)}
152                                        )
153                                        else ()}
154                                        {for $DGID in $DE/dgDataEntity/dgDataGranule/dataModelID
155                                        return element Data_Set_ID {concat($DGID/repositoryIdentifier, ':', $DGID/schemeIdentifier, ':', $DGID/localIdentifier)}
156                                        }
157                                        <Personnel>
158                                        {element Role {'Data Center Contact'}}
159                                        {if (exists($DataCuratorRoleHolder/name/knownAs)) then (
160                                        element First_Name {string($DataCuratorRoleHolder/name/knownAs)}
161                                        )
162                                        else if (exists($DataCuratorRoleHolder/name/initials)) then (
163                                        element First_Name {string($DataCuratorRoleHolder/name/initials)}
164                                        )
165                                        else ()}                                       
166                                        {element Last_Name {if (exists($DataCuratorRoleHolder/name/familyName)) then (
167                                        string($DataCuratorRoleHolder/name/familyName)
168                                        )
169                                        else (string($DataCuratorRoleHolder/name))}
170                                        }
171                                        {if (exists($DataCuratorRole/contactDetails/eMail)) then (
172                                        element Email {string($DataCuratorRole/contactDetails/eMail)}
173                                        )
174                                        else (
175                                        if (exists($DataCuratorRoleHolder/contactDetails/eMail)) then (
176                                        element Email {string($DataCuratorRoleHolder/contactDetails/eMail)}
177                                        )
178                                        else ()
179                                        )}
180                                        {if (exists($DataCuratorRole/contactDetails/telephone)) then (
181                                        element Phone {string($DataCuratorRole/contactDetails/telephone)}
182                                        )
183                                        else (
184                                        if (exists($DataCuratorRoleHolder/contactDetails/telephone)) then (
185                                        element Phone {string($DataCuratorRoleHolder/contactDetails/telephone)}
186                                        )
187                                        else ()
188                                        )}
189                                        {if (exists($DataCuratorRole/contactDetails/fax)) then (
190                                        element Fax {string($DataCuratorRole/contactDetails/fax)}
191                                        )
192                                        else (
193                                        if (exists($DataCuratorRoleHolder/contactDetails/fax)) then (
194                                        element Fax {string($DataCuratorRoleHolder/contactDetails/fax)}
195                                        )
196                                        else ()
197                                        )}
198                                        {if (exists($DataCuratorRole/contactDetails/address/addressline)) then (
199                                        for $addressline in $DataCuratorRole/contactDetails/address/addressline
200                                        return element address {$addressline}
201                                        )
202                                        else (
203                                        if (exists($DataCuratorRoleHolder/contactDetails/addressline)) then (
204                                        for $addressline in $DataCuratorRoleHolder/contactDetails/address/addressline
205                                        return element address {$addressline}
206                                        )
207                                        else ()
208                                        )}
209                                        {if (exists($DataCuratorRole/contactDetails/address/city)) then (
210                                        element City {string($DataCuratorRole/contactDetails/city)}
211                                        )
212                                        else (
213                                        if (exists($DataCuratorRoleHolder/contactDetails/city)) then (
214                                        element Cityl {string($DataCuratorRoleHolder/contactDetails/city)}
215                                        )
216                                        else ()
217                                        )}
218                                        {if (exists($DataCuratorRole/contactDetails/address/postcode)) then (
219                                        element Postal_Code {string($DataCuratorRole/contactDetails/postcode)}
220                                        )
221                                        else (
222                                        if (exists($DataCuratorRoleHolder/contactDetails/postcode)) then (
223                                        element email {string($DataCuratorRoleHolder/contactDetails/postcode)}
224                                        )
225                                        else ()
226                                        )}
227                                        {if (exists($DataCuratorRole/contactDetails/address/country)) then (
228                                        element Postal_Code {string($DataCuratorRole/contactDetails/country)}
229                                        )
230                                        else (
231                                        if (exists($DataCuratorRoleHolder/contactDetails/postcode)) then (
232                                        element Postal_Code {string($DataCuratorRoleHolder/contactDetails/eMail)}
233                                        )
234                                        else ()
235                                                                         )}
236                                        </Personnel>
237                                </Data_Center>
238        }
239
240        <Distribution/>
241        <Multimedia_Sample/>
242        <Reference/>
243
244        <Summary>{string($DE/dgMetadataDescription/abstract/abstractText)}</Summary>
245
246        <Related_URL>
247            {element URL_Content_Type {'NDG_B_SERVICE'}}
248            {element URL {data($DE/dgMetadataID/repositoryIdentifier)}}
249            {element Description {'The NDG service for browsing metadata.'}}
250        </Related_URL>
251
252        {for $DG in $DE/dgDataEntity/dgDataGranule
253            return
254            if ($DG/dataModelID/schemeIdentifier='NDG-A0') then (
255            <Related_URL>
256            {element URL_Content_Type {'NDG_A_SERVICE'}}
257            {element URL {escape-uri('http://dmgdev1.esc.rl.ac.uk/cgi-bin/ndgDataAccess?datasetSource=dmgdev1.esc.rl.ac.uk&amp;datasetID=', true())}}
258            {element Description {'The NDG service delivering data via NDG A metadata.'}}
259            </Related_URL>
260            )
261            else if ($DG/dataModelID/schemeIdentifier='CSML-0') then (
262            <Related_URL>
263            {element URL_Content_Type {'NDG_A_SERVICE'}}
264            {element URL {escape-uri('http://cdat.badc.nerc.ac.uk/cgi-bin/dxui.py?datasetURI_1=/', true())}}
265            {element Description {'The NDG service delivering data via NDG A metadata.'}}
266            </Related_URL>
267            )
268            else if ($DG/dataModelID/schemeIdentifier='URI') then (
269            <Related_URL>
270            {element URL {data($DG/instance/URI)}}
271            {if (exists($DG/instance/instanceComment)) then (
272            element Description {data($DG/instance/instanceComment)}       
273            )
274            else (
275            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.'}
276            )
277            }
278            </Related_URL>
279            )
280            else ()
281        }
282        <Parent_DIF/>
283        <IDN_Node/>
284        <Originating_Metadata_Node/>   
285        <Metadata_Name>[CEOS IDN DIF]</Metadata_Name>
286        {element Metadata_Version {'9.4'}}
287
288        {if  (exists($DE/dgMetadataProvenance/RecordCreation)) then (
289        element DIF_Creation_Date {data($DE/dgMetadataProvenance/RecordCreation/CreatedDate)}
290        )
291        else ()
292        }
293        {for $MDUpdt in $DE/dgMetadataProvenance/RecordUpdate
294        return  element DIF_Revision_History {concat(data($MDUpdt/UpdateDate), ' - ', data($MDUpdt/UpdateSummary), ' - ', data($MDUpdt/UpdatedBy))}
295        }
296        {if  (exists($DE/dgMetadataProvenance/RecordReview)) then (
297        element Future_DIF_Review_Date {data($DE/dgMetadataProvenance/RecordReview/ReviewDate)}
298        )
299        else ()
300        }
301        </DIF>
Note: See TracBrowser for help on using the repository browser.