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

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI07-MOLES/trunk/StubB/XQuery/NDG-ActStubB.xquery@2171
Revision 2171, 9.7 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/activity';
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 $Act in collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord[
12        moles:dgActivity!=''
13        and moles:dgMetadataID/moles:schemeIdentifier='NDG-B0'
14        and moles:dgMetadataID/moles:repositoryIdentifier=$repositoryIdentifier
15        and moles:dgMetadataID/moles:localIdentifier=$localIdentifier]
16return
17utillib:strip-namespace(element dgMetadataRecord {
18        element dgMetadataID {
19                element schemeIdentifier {'NDG-B1'},
20                (element repositoryIdentifier {data($Act/moles:dgMetadataID/moles:repositoryIdentifier)}),
21                element localIdentifier {data($Act/moles:dgMetadataID/moles:localIdentifier)}
22        },
23        $Act/moles:dgMetadataDescription,
24        $Act/moles:name,
25        $Act/moles:abbreviation,
26        element dgActivity {
27                for $RelatedActivities in $Act/dgActivity/moles:relatedActivity
28                        return
29                                element relatedActivity {
30                                        $RelatedActivities/moles:activityRelation,
31                                        stubblib:return-stub-activity('activity', data($RelatedActivities/moles:relatedActivityID/moles:repositoryIdentifier), data($RelatedActivities/moles:relatedActivityID/moles:localIdentifier))
32                        },      (: </relatedActivity> :)
33                if (exists($Act/moles:dgActivity/moles:dgActivityDataCollection)) then ($Act/moles:dgActivity/moles:dgActivityDataCollection)
34                else if (exists($Act/moles:dgActivity/moles:dgActivityDataProject)) then ($Act/moles:dgActivity/moles:dgActivityDataProject)
35                else if (exists($Act/moles:dgActivity/moles:dgActivityDataInvestigation)) then ($Act/moles:dgActivity/moles:dgActivityDataInvestigation)
36                else if (exists($Act/moles:dgActivity/moles:dgActivityDataCampaign)) then ($Act/moles:dgActivity/moles:dgActivityDataCampaign)
37                else (),
38                element dgActivityRole {
39                        element dgInvestigator {
40                                element dgPrincipalInvestigator {
41                                        ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:dgMetadataID),
42                                        ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:roleName),
43                                        ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:abbreviation),
44                                        ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:contactDetails),
45                                        for $PIRole in $Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgPrincipalInvestigator/moles:dgRoleHolder
46                                                order by $PIRole/moles:startDate empty least, $PIRole/moles:endDate empty least
47                                                return
48                                                element dgRoleHolder {
49                                                        if (exists($PIRole/moles:dgOrganisationID)) then
50                                                                stubblib:return-stub-organisation('organisation', data($PIRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($PIRole/moles:dgOrganisationID/moles:localIdentifier))
51                                                         else if (exists($PIRole/moles:dgPersonID)) then
52                                                                stubblib:return-stub-person('person', string($PIRole/moles:dgPersonID/moles:repositoryIdentifier), string($PIRole/moles:dgPersonID/moles:localIdentifier))
53                                                         else (),
54                                                        ($PIRole/moles:startDate),
55                                                        if (exists($PIRole/moles:endDate)) then
56                                                            ($PIRole/moles:endDate)
57                                                        else (),
58                                                        if (exists($PIRole/moles:localName)) then
59                                                            ($PIRole/moles:localName)
60                                                        else ()
61                                                } (: </dgRoleHolder> :)
62                                }, (: </dgPrincipalInvestigator> :)
63                                for $CI in $Act/moles:dgActivity/moles:dgActivityRole/moles:dgInvestigator/moles:dgCoInvestigator
64                                return 
65                                        element dgCoInvestigator {
66                                            ($CI/moles:dgMetadataID),
67                                            ($CI/moles:roleName),
68                                            ($CI/moles:abbreviation),
69                                            ($CI/moles:contactDetails),
70                                            for $CIRole in $CI/moles:dgRoleHolder
71                                                order by $CIRole/moles:startDate empty least, $CIRole/moles:endDate empty least
72                                            return
73                                                element dgRoleHolder {
74                                                        if (exists(CIRole/moles:dgOrganisationID)) then
75                                                                stubblib:return-stub-organisation('organisation', data($CIRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($CIRole/moles:dgOrganisationID/moles:localIdentifier))
76                                                         else if (exists($CIRole/moles:dgPersonID)) then
77                                                                stubblib:return-stub-person('person', string($CIRole/moles:dgPersonID/moles:repositoryIdentifier), string($CIRole/moles:dgPersonID/moles:localIdentifier))
78                                                         else (),
79                                                        ($CIRole/moles:startDate),
80                                                        if (exists($CIRole/moles:endDate)) then
81                                                            ($CIRole/moles:endDate)
82                                                        else (),
83                                                        if (exists($CIRole/moles:localName)) then
84                                                            ($CIRole/moles:localName)
85                                                        else ()
86                                                } (: </dgRoleHolder> :)
87                                } (: </dgCoInvestigator> :)
88                }, (: </dgInvestigator> :)
89                if (exists($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact)) then (
90                        element dgTechnicalContact {
91                                ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:dgMetadataID),
92                                ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:roleName),
93                                ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:abbreviation),
94                                ($Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:contactDetails),
95                                for $TechConRole in $Act/moles:dgActivity/moles:dgActivityRole/moles:dgTechnicalContact/moles:dgRoleHolder
96                                        order by $TechConRole/moles:startDate empty least, $TechConRole/moles:endDate empty least
97                                        return
98                                        element dgRoleHolder {
99                                                if (exists($TechConRole/moles:dgOrganisationID)) then
100                                                        stubblib:return-stub-organisation('organisation', data($TechConRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($TechConRole/moles:dgOrganisationID/moles:localIdentifier))
101                                                 else if (exists($TechConRole/moles:dgPersonID)) then
102                                                        stubblib:return-stub-person('person', string($TechConRole/moles:dgPersonID/moles:repositoryIdentifier), string($TechConRole/moles:dgPersonID/moles:localIdentifier))
103                                                 else (),
104                                            ($TechConRole/moles:startDate),
105                                            if (exists($TechConRole/moles:endDate)) then
106                                                ($TechConRole/moles:endDate)
107                                            else (),
108                                            if (exists($TechConRole/moles:localName)) then
109                                                    ($TechConRole/moles:localName)
110                                            else ()
111                                        } (: </dgRoleHolder> :)
112                        } (: </dgTechnicalContact> :)
113                )
114                else (),
115                if (exists($Act/dgActivity/dgActivityRole/dgProjectManager)) then (
116                        element dgProjectManager {
117                                ($Act/dgActivity/dgActivityRole/dgProjectManager/dgMetadataID),
118                                ($Act/dgActivity/dgActivityRole/dgProjectManager/roleName),
119                                ($Act/dgActivity/dgActivityRole/dgProjectManager/abbreviation),
120                                ($Act/dgActivity/dgActivityRole/dgProjectManager/contactDetails),
121                                for $PMRole in $Act/dgActivity/dgActivityRole/dgProjectManager/dgRoleHolder
122                                        order by $PMRole/startDate empty least, $PMRole/endDate empty least
123                                        return
124                                        element dgRoleHolder {
125                                                if (exists($PMRole/moles:dgOrganisationID)) then
126                                                        stubblib:return-stub-organisation('organisation', data($PMRole/moles:dgOrganisationID/moles:repositoryIdentifier), data($PMRole/moles:dgOrganisationID/moles:localIdentifier))
127                                                 else if (exists($PMRole/moles:dgPersonID)) then
128                                                        stubblib:return-stub-person('person', string($PMRole/moles:dgPersonID/moles:repositoryIdentifier), string($PMRole/moles:dgPersonID/moles:localIdentifier))
129                                                 else (),
130                                                ($PMRole/startDate),
131                                                if (exists($PMRole/moles:endDate)) then
132                                                    ($PMRole/moles:endDate)
133                                                else (),
134                                                if (exists($PMRole/moles:localName)) then
135                                                    ($PMRole/moles:localName)
136                                                else ()
137                                        } (: </dgRoleHolder> :)
138                        } (: </dgProjectManager> :)
139                )
140                else ()
141        }, (: </dgActivityRole> :)
142        for $RelDep in $Act/moles:dgActivity/moles:ActivityDeployment
143                return
144                element ActivityDeployment {
145                        ($RelDep/moles:DateStart),
146                        if (exists($RelDep/moles:DateEnd)) then
147                            ($RelDep/moles:DateEnd)
148                        else (),
149                        ($RelDep/moles:dgMetadataID),
150                        stubblib:return-stub-dpt('dataproductiontool', data($RelDep/moles:DataProductionToolID/moles:repositoryIdentifier), data($RelDep/moles:DataProductionToolID/moles:localIdentifier)),
151                        stubblib:return-stub-obsstn('observationstation', data($RelDep/moles:ObservationStationID/moles:repositoryIdentifier), data($RelDep/moles:ObservationStationID/moles:localIdentifier)),
152                        for $DE in collection($targetCollection)/moles:dgMetadata/moles:dgMetadataRecord
153                                where $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:repositoryIdentifier=$RelDep/moles:dgMetadataID/moles:repositoryIdentifier
154                                        and $DE/moles:dgDataEntity/moles:RelatedDeployment/moles:dgMetadataID/moles:localIdentifier=$RelDep/moles:dgMetadataID/moles:localIdentifier
155                        return
156                                stubblib:return-stub-dataentity('dataentity', data($DE/moles:dgMetadataID/moles:repositoryIdentifier), data($DE/moles:dgMetadataID/moles:localIdentifier))
157                }, (: </ActivityDeployment> :)
158                if (exists($Act/dgActivityCoverage)) then
159                    ($Act/dgActivityCoverage)
160                    else (),
161                if (exists($Act/dgActivityDuration)) then
162                    ($Act/dgActivityDuration)
163                    else ()
164        } , (: </dgActivity> :)
165        for $strkwrd in $Act/moles:dgStructuredKeyword return $strkwrd,
166        if (exists($Act/moles:dgMetadataProvenance)) then $Act/moles:dgMetadataProvenance else (),
167        if (exists($Act/moles:dgMetadataSecurity)) then $Act/moles:dgMetadataSecurity else ()
168} (:</dgMRecord>:)
169) (: End namespace strip :)
Note: See TracBrowser for help on using the repository browser.