source: TI07-MOLES/trunk/StubB/XQuery/NDG-DEStubB.xquery @ 2171

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI07-MOLES/trunk/StubB/XQuery/NDG-DEStubB.xquery@2171
Revision 2171, 7.5 KB checked in by ko23, 13 years ago (diff)

Refactoring intermediate

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1import module namespace voclib='http://ndg.nerc.ac.uk/xquery/lib/vocab' at 'xmldb:exist:///db/xqueryLib/Vocabs/vocab_xquery_lib.xquery';
2import module namespace utillib='http://ndg.nerc.ac.uk/xquery/lib/utilities' at 'xmldb:exist:///db/xqueryLib/Utilities/utility_xquery_lib.xquery';
3import module namespace stubblib='http://ndg.nerc.ac.uk/xquery/lib/stubb' at 'xmldb:exist:///db/xqueryLib/StubB/stubb_xquery_lib.xquery';
4declare default element namespace 'http://ndg.nerc.ac.uk/moles/dataentity';
5declare namespace moles='http://ndg.nerc.ac.uk/moles';
6
7declare variable $targetCollection as xs:string {'TargetCollection'};
8declare variable $repositoryIdentifier as xs:string {'RepositoryID'};
9declare variable $localIdentifier as xs:string {'LocalID'};
10
11for $DE in collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[
12moles:dgDataEntity!=''
13and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'
14and moles:dgMetadataID/moles:repositoryIdentifier=$repositoryIdentifier
15and moles:dgMetadataID/moles:localIdentifier=$localIdentifier]
16return
17utillib:strip-namespace(element dgMetadataRecord {
18        element dgMetadataID {
19                element schemeIdentifier {'NDG-B1'},
20                $DE/moles:dgMetadataID/moles:repositoryIdentifier,
21                $DE/moles:dgMetadataID/moles:localIdentifier
22        }, (: </dgMetadataID> :)
23        $DE/moles:dgMetadataDescription,
24        $DE/moles:name,
25        $DE/moles:abbreviation,
26        element dgDataEntity {
27                $DE/moles:dgDataEntity/moles:dgDataSetType,
28                $DE/moles:dgDataEntity/moles:dgDataObjectType,
29                $DE/moles:dgDataEntity/moles:dgDataGranule,
30                $DE/moles:dgDataEntity/moles:dgDataSummary,
31                element dgDataRoles {
32                        if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgMetadataID)) then
33                                element dgDataCreator {
34                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgMetadataID,
35                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:roleName,
36                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:abbreviation,
37                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:contactDetails,
38                                for $DataCreatorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCreator/moles:dgRoleHolder
39                                        order by $DataCreatorRole/moles:startDate empty least, $DataCreatorRole/moles:endDate empty least
40                                        return
41                                                element dgRoleHolder {
42                                                        if (exists($DataCreatorRole/moles:dgOrganisationID)) then
43                                                                stubblib:return-stub-organisation('organisation', data($DataCreatorRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($DataCreatorRole/moles:dgOrganisationID/moles:localIdentifier))
44                                                         else if (exists($DataCreatorRole/moles:dgPersonID)) then
45                                                                stubblib:return-stub-person('person', string($DataCreatorRole/moles:dgPersonID/moles:repositoryIdentifier), string($DataCreatorRole/moles:dgPersonID/moles:localIdentifier))
46                                                         else (),
47                                                        $DataCreatorRole/moles:startDate,
48                                                        $DataCreatorRole/moles:endDate,
49                                                        $DataCreatorRole/moles:localName
50                                                } (: </dgRoleHolder> :)
51                                        } (: </dgDataCreator>) :)
52                        else (),
53                        if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgMetadataID)) then
54                                element dgDataCurator {
55                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgMetadataID,
56                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:roleName,
57                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:abbreviation,
58                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:contactDetails,
59                                for $DataCuratorRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataCurator/moles:dgRoleHolder
60                                        order by $DataCuratorRole/moles:startDate empty least, $DataCuratorRole/moles:endDate empty least
61                                        return
62                                                element dgRoleHolder {
63                                                        if (exists($DataCuratorRole/moles:dgOrganisationID)) then
64                                                                stubblib:return-stub-organisation('organisation', data($DataCuratorRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($DataCuratorRole/moles:dgOrganisationID/moles:localIdentifier))
65                                                         else if (exists($DataCuratorRole/moles:dgPersonID)) then
66                                                                stubblib:return-stub-person('person', string($DataCuratorRole/moles:dgPersonID/moles:repositoryIdentifier), string($DataCuratorRole/moles:dgPersonID/moles:localIdentifier))
67                                                         else (),
68                                                        $DataCuratorRole/moles:startDate,
69                                                        $DataCuratorRole/moles:endDate,
70                                                        $DataCuratorRole/moles:localName
71                                                } (: </dgRoleHolder> :)
72                        } (: </dgDataCurator> :)
73                        else (),
74                        if (exists($DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:dgMetadataID)) then
75                                element dgDataOtherRoles {
76                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:dgMetadataID,
77                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:roleName,
78                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:abbreviation,
79                                $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:contactDetails,
80                                for $DataOtherRolesRole in $DE/moles:dgDataEntity/moles:dgDataRoles/moles:dgDataOtherRoles/moles:dgRoleHolder
81                                        order by $DataOtherRolesRole/moles:startDate empty least, $DataOtherRolesRole/moles:endDate empty least
82                                        return
83                                                element dgRoleHolder {
84                                                        if (exists($DataOtherRolesRole/moles:dgOrganisationID)) then
85                                                                stubblib:return-stub-organisation('organisation', data($DataOtherRolesRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($DataOtherRolesRole/moles:dgOrganisationID/moles:localIdentifier))
86                                                         else if (exists($DataOtherRolesRole/moles:dgPersonID)) then
87                                                                stubblib:return-stub-person('person', string($DataOtherRolesRole/moles:dgPersonID/moles:repositoryIdentifier), string($DataOtherRolesRole/moles:dgPersonID/moles:localIdentifier))
88                                                         else (),
89                                                        $DataOtherRolesRole/moles:startDate,
90                                                        $DataOtherRolesRole/moles:endDate,
91                                                        $DataOtherRolesRole/moles:localName
92                                                } (: </dgRoleHolder> :)
93                        } (: </dgDataOtherRoles> :)
94                        else ()
95                } , (: </dgDataRoles> :)
96                for $RelDep in $DE/moles:dgDataEntity/moles:RelatedDeployment
97                        return
98                        element RelatedDeployment {
99                        $RelDep/moles:DateStart,
100                        $RelDep/moles:DateEnd,
101                        $RelDep/moles:dgMetadataID,
102                        stubblib:return-stub-activity('activity', data($RelDep/moles:ActivityID/moles:repositoryIdentifier), data($RelDep/moles:ActivityID/moles:localIdentifier)),
103                        stubblib:return-stub-dpt('dataproductiontool', data($RelDep/moles:DataProductionToolID/moles:repositoryIdentifier), data($RelDep/moles:DataProductionToolID/moles:localIdentifier)),
104                        stubblib:return-stub-obsstn('observationstation', data($RelDep/moles:ObservationStationID/moles:repositoryIdentifier), data($RelDep/moles:ObservationStationID/moles:localIdentifier)),
105                        $RelDep/moles:Coverage
106                } (: </RelatedDeployment> :)
107                ,
108                for $RelatedDataEntity in $DE/moles:dgDataEntity/moles:dgRelatedDataEntity
109                        return
110                                element relateddataentity {
111                                element relation {
112                                        $RelatedDataEntity/moles:RelationID/moles:dgValidTerm,
113                                        $RelatedDataEntity/moles:RelationID/moles:dgValidTermID
114                                }, (: </relation> :)
115                                stubblib:return-stub-dataentity('dataentity', data($RelatedDataEntity/(moles:RelatedDataEntityID | moles:RelatedDataGranuleID)/moles:repositoryIdentifier), data($RelatedDataEntity/(moles:RelatedDataEntityID | moles:RelatedDataGranuleID)/moles:localIdentifier))
116                                } (: </relateddataentity> :)
117        } (: </dgDataEntity> :),
118        for $strkwrd in $DE/moles:dgStructuredKeyword return $strkwrd,
119        if (exists($DE/moles:dgMetadataProvenance)) then $DE/moles:dgMetadataProvenance else (),
120        if (exists($DE/moles:dgMetadataSecurity)) then $DE/moles:dgMetadataSecurity else ()
121} (: </dgMetadataRecord> :)
122) (: end of namespace strip :)
Note: See TracBrowser for help on using the repository browser.