source: TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/difConvertedto_ISO19139.py @ 7456

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI01-discovery-Ingest/trunk/v4.3.0/ingestAutomation-upgrade/OAIBatch/difConvertedto_ISO19139.py@7456
Revision 7456, 8.3 KB checked in by sdonegan, 10 years ago (diff)

various updates and tweaks so can support other DC difs

Line 
1import string,logging
2
3'''
4Class to hold methods that define the tuples holding xpath information to be used with the iso accessor class to
5return information for various parameters needed to complete the NDG Discovery Service database as part of the MEDIN
6Upgraded ingest system.
7
8Steve Donegan Dec/Jan 2009/2010.
9
10'''
11class difConvertedto_ISO19139:
12       
13        def __init__(self):
14               
15                logging.info("Initiated ISO data model: GCMD converted to ISO19139 MEDIN v? profile")
16       
17        '''
18        Method to extract the dataset ID from the xml
19        '''
20        def datasetID(self):
21               
22                datasetID = (self.dataSetName.__name__,{1:{'xpath':'gmd:fileIdentifier/gco:CharacterString'}})
23               
24                return datasetID
25       
26        def dataSetName(self):
27                '''
28                See notes in metadataDates for tuple format
29                '''
30               
31                datasetName = (self.dataSetName.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/title/gco:CharacterString'}})
32               
33                return datasetName
34       
35       
36        def dataSetAbstract(self):
37                '''
38                See notes in metadataDates for tuple format
39                '''
40               
41                datasetName = (self.dataSetAbstract.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString'}})
42               
43                return datasetName
44       
45       
46        def dataCentreName(self):
47                '''
48                See notes in metadataDates for tuple format
49                '''
50               
51                dataCentreName = (self.dataCentreName.__name__,{1:{
52                                                                                                        'baseXpath':'gmd:contact/gmd:CI_ResponsibleParty',
53                                                                                                        'elValXpath':'organisationName/gco:CharacterString',
54                                                                                                        'depValXpath':'role/gmd:CI_RoleCode',
55                                                                                                        'depVal':'disributor'}})
56               
57                return dataCentreName
58       
59       
60        def dataOriginator(self):
61                '''
62                Method to extract and return info on the Data Originator
63               
64                MEDIN element 22.1 p35.  For this will return a list of organisation names
65               
66                Mandatory - must have minimum of Organisation Name or Person Name.
67                '''
68               
69                #originator = (self.dataOriginator.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString'}})
70               
71                #revised 07/06/10 SJD - Needs to pick out values where CI_RoleCode = originator (not sure why its not already doing this..)
72                # also may not have Organisation name, so look uo
73                originator = (self.dataOriginator.__name__,{1:{
74                                                                                                        'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty',
75                                                                                                        'elValXpath':'gmd:organisationName/gco:CharacterString',
76                                                                                                        'depValXpath':'gmd:role/gmd:CI_RoleCode',
77                                                                                                        'depVal':'originator'}},
78                                                                                                        {2:{
79                                                                                                        'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty',
80                                                                                                        'elValXpath':'gmd:individualName/gco:CharacterString',
81                                                                                                        'depValXpath':'gmd:role/gmd:CI_RoleCode',
82                                                                                                        'depVal':'originator'}})
83               
84                return originator
85       
86               
87       
88        def boundingDates(self):
89                '''
90                See notes in metadataDates for tuple format
91                '''
92                               
93                date = (self.boundingDates.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition'}},
94                                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition'}},
95                                                                                        {'order':{'start':1,'end':2}})
96                                                               
97               
98                return date
99       
100        def coordinates(self):
101               
102                '''
103                See notes in metadataDates for tuple format
104                '''
105                               
106                #NOTE coords in north,south,east,west sequence
107                coordinates = (self.coordinates.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLongitude/gco:Decimal'}},
108                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLongitude/gco:Decimal'}},
109                                                                        {3:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal'}},
110                                                                        {4:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal'}},
111                                                                        {'order':{'north':1,'south':2,'east':3,'west':4}})
112               
113                return coordinates
114       
115               
116       
117        def originalFormat(self):
118                '''
119                See notes in metadataDates for tuple format
120                '''
121               
122                originalFormat = (self.originalFormat.__name__,{1:{'xpath':'metadataStandardName/gco:CharacterString'}})
123               
124                return originalFormat
125       
126       
127        def authors(self):
128                '''
129                See notes in metadataDates for tuple format
130                '''
131               
132                authors = (self.authors.__name__,{1:{'xpath':'gmd:contact/gmd:CI_ResponsibleParty/gmd:individualName/gco:CharacterString'}})
133               
134                return authors
135       
136       
137        def parameters(self):
138                '''
139                See notes in metadataDates for tuple format
140                '''
141                #Note that in StubISO same element structure is used for related_urls!
142                parameters = (self.parameters.__name__,{1:{                                                                     
143                'baseXpath':'distributionInfo/gmd:MD_Distribution/transferOptions',
144                'elValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/description/gco:CharacterString',
145                'depValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/function/gmd:CI_onLineFunctionCode',
146                'depVal':'DIF:PARAMETERS'}})
147               
148                return parameters
149               
150       
151        def keywords(self):
152               
153                '''
154                See notes in metadataDates for tuple format
155                '''
156                keywords = (self.keywords.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gmx:anchor'}},
157                                                                                {2:{'xpath':'gmd:identificationInfo/gmd:topicCategory/gmd:MD_TopicCategoryCode'}}
158                                               
159                                )
160               
161                return keywords
162       
163       
164        def urlsToChange(self):
165                '''
166                Method containing standard iso xpath for URL's to be changed for purposes of NDG redirect
167               
168                '''
169               
170                urls = (self.urlsToChange.__name__,{1:{'xpath':'gmd:dataSetURI/gco:CharacterString'}},
171                        {2:{                                                                   
172                'baseXpath':'distributionInfo/gmd:MD_Distribution/transferOptions',
173                'elValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL',
174                'depValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/function/gmd:CI_onLineFunctionCode',
175                'depVal':'DIF:RELATED_URL'}},
176                {3:{'baseXpath':'gmd:contact/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource',
177                                                                                                        'elValXpath':'gmd;linkage/gmd:URL',
178                                                                                                        'depValXpath':'function/gmd:CI_onLineFunctionCode',
179                                                                                                        'depVal':'DIF:DC_URL'}}
180                )
181               
182                return urls
183       
184       
185        def topicCategory(self):
186                '''
187                Method to extract and return topicCategory
188               
189                MEDIN element 9 p16,
190               
191                NB - equivalent to standard NDG ingest field
192                '''
193               
194                topicCategory = (self.topicCategory.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode'}})
195       
196                return topicCategory
197               
198               
199       
200        def metadataCreationDate(self):
201               
202               
203                '''revised
204                Tuple to hold information data - return list of lists if list has 4 values
205                then its a dependant type in which case the list is the following format:
206                        [0] Base Xpath: the xpath from the root element to the element subtree at which point the required and dependant value branches
207                        [1] Value required xpath: the xpath to the subelement for the desired value
208                        [2] Dependant value xpath: the xpath to the subelement in which the dependant value resides i.e. an ISO role code
209                        [3] Dependant value: the value to match [2] - if it matches then value [1] returned, otherwise None returned
210                USE "returnDependantElementVal" method with this type!!
211               
212                If List has a SINGLE element then this is the xpath from the root element to the desired value
213                '''
214               
215                creationDate = (self.metadataCreationDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/date',
216                                                                                                                        'elValXpath':'gmd:CI_Date/date/gco:DateTime',
217                                                                                                                        'depValXpath':'gmd:CI_Date/dateType/gmd:CI_DateTypeCode',
218                                                                                                                        'depVal':'creation'}})
219               
220               
221                return creationDate
222       
223        '''
224        Return xpaths to revisionDate
225        '''
226        def metadataRevisionDate(self):
227               
228                revisionDate = (self.metadataRevisionDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/date',
229                                                                                                                        'elValXpath':'gmd:CI_Date/date/gco:DateTime',
230                                                                                                                        'depValXpath':'gmd:CI_Date/dateType/gmd:CI_DateTypeCode',
231                                                                                                                        'depVal':'revision'}})
232               
233                return revisionDate
234               
Note: See TracBrowser for help on using the repository browser.