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

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

VArious updates to debug utf8 handling and refactored logging and NERC scope detection

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
1028/10/2010: Updated to extract values from NERC Discovery Metadata Standard (based on MEDIN).  SJD.
11
12'''
13class NERC_DMS_0_7:
14       
15        def __init__(self):
16               
17                logging.info("Initiated ISO data model: NERC DMS 0.7 profile (accessor class date = 01/11/2010 SJD")
18       
19       
20        '''
21        This is NERC Vocabulary server term that defines the ingested document as a NERC record and will assign this a "NERC_DDC" equivalent flag for ingest
22       
23        '''
24        def ingestKeywordIdentifier(self):
25               
26                acceptableIDs = ["http://vocab.ndg.nerc.ac.uk/term/N010/1/NDGO0003","http://vocab.ndg.nerc.ac.uk/term/N010/current/NDGO0003"]
27               
28                return acceptableIDs
29       
30       
31       
32        def scopeCode(self,scopeValue):
33               
34                '''
35                Mapping method that points to the value of the scope code as defined in ingestKeywordIdentifier
36                '''
37               
38                scope = (self.scopeCode.__name__,{3:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword',
39                                                                                                                        'elValXpath':'gmx:Anchor',
40                                                                                                                        'depValXpath':'gmx:Anchor/@xlink:href',
41                                                                                                                        'depVal':scopeValue}}
42                ) 
43               
44                return scope
45       
46       
47        '''
48        Method to extract the dataset ID from the xml - for service datasets
49        '''
50        def fileIdentifier(self):
51                               
52                fileIdentifier = (self.fileIdentifier.__name__,{1:{'xpath':'gmd:fileIdentifier/gco:CharacterString'}})
53               
54                return fileIdentifier
55       
56        '''
57        Method to extract the dataset ID from the xml - for non service type datasets
58        '''
59        def datasetID(self):
60               
61                #datasetID = (self.datasetID.__name__,{1:{'xpath':'gmd:fileIdentifier/gco:CharacterString'}})
62                datasetID = (self.datasetID.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString'}},
63                                                                                         {2:{'xpath':'gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString'}})
64               
65                return datasetID
66       
67        def dataSetName(self):
68                '''
69                See notes in metadataDates for tuple format
70                '''
71               
72                datasetName = (self.dataSetName.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString'}},
73                                                                                                 {2:{'xpath':'gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString'}})
74               
75                return datasetName
76       
77       
78        def dataSetAbstract(self):
79                '''
80                See notes in metadataDates for tuple format
81                '''
82               
83                datasetName = (self.dataSetAbstract.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString'}})
84               
85                return datasetName
86       
87       
88        def dataCentreName(self):
89                '''
90                See notes in metadataDates for tuple format
91                '''
92               
93                dataCentreName = (self.dataCentreName.__name__,{1:{
94                                                                                                        'baseXpath':'gmd:contact/gmd:CI_ResponsibleParty',
95                                                                                                        'elValXpath':'gmd:organisationName/gco:CharacterString',
96                                                                                                        'depValXpath':'gmd:role/gmd:CI_RoleCode',
97                                                                                                        'depVal':'pointOfContact'}},
98                                                                                                        {2:{
99                                                                                                        'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty',
100                                                                                                        'elValXpath':'gmd:organisationName/gco:CharacterString',
101                                                                                                        'depValXpath':'gmd:role/gmd:CI_RoleCode',
102                                                                                                        'depVal':'pointOfContact'}},
103                                                                                                        {2:{
104                                                                                                        'baseXpath':'gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty',
105                                                                                                        'elValXpath':'gmd:organisationName/gco:CharacterString',
106                                                                                                        'depValXpath':'gmd:role/gmd:CI_RoleCode',
107                                                                                                        'depVal':'pointOfContact'}})
108               
109                return dataCentreName
110       
111               
112       
113        def boundingDates(self):
114                '''
115                See notes in metadataDates for tuple format
116                '''
117                               
118                date = (self.boundingDates.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition'}},
119                                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition'}},
120                                                                                        {'order':{'start':1,'end':2}})
121               
122               
123                                                               
124               
125                return date
126       
127        def coordinates(self):
128               
129                '''
130                See notes in metadataDates for tuple format
131                '''
132                               
133                #NOTE coords in north,south,east,west sequence
134                coordinates = (self.coordinates.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLatitude/gco:Decimal'}},
135                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLatitude/gco:Decimal'}},
136                                                                        {3:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal'}},
137                                                                        {4:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal'}},
138                                                                        {'order':{'north':1,'south':2,'east':3,'west':4}})
139               
140                return coordinates
141       
142               
143       
144        def originalFormat(self):
145                '''
146                See notes in metadataDates for tuple format
147                '''
148               
149                originalFormat = (self.originalFormat.__name__,{1:{'xpath':'metadataStandardName/gco:CharacterString'}})
150               
151                return originalFormat
152       
153       
154        def originalFormatVersion(self):
155                '''
156                See notes in metadataDates for tuple format
157                '''
158               
159                originalFormatVersion = (self.originalFormatVersion.__name__,{1:{'xpath':'metadataStandardVersion/gco:CharacterString'}})
160               
161                return originalFormatVersion
162       
163       
164       
165        def dataFormats(self):
166                '''
167                See notes in metadataDates for tuple format
168                '''
169               
170                originalFormat = (self.originalFormat.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceFormat/gmd:MD_Format/gmd:name/gco:CharacterString'}})
171               
172                return originalFormat
173       
174       
175        def authors(self):
176                '''
177                See notes in metadataDates for tuple format
178               
179                1. According to MEDIN profile (element 22 p37) -for authors I will use "individualName" whatever roleCode is - as currently (11/02/10) understand author in this context
180                   to be any identified individual contributing to the dataset.  To restrict to actual roles, use compound xpath type.
181               
182                '''
183               
184                authors = (self.authors.__name__,{1:{'xpath':'gmd:contact/gmd:CI_ResponsibleParty/gmd:individualName/gco:CharacterString'}},{2:{'xpath':'gmd:contact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString'}},{3:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString'}})
185                                       
186                return authors
187       
188       
189        def parameters(self):
190                '''
191                See notes in metadataDates for tuple format NOTE - USE KEYWORDS!!
192               
193                1. For MEDIN use the TopicCategories for parameters (not handled differently than in DIF's
194                '''
195                #Note that in StubISO same element structure is used for related_urls!
196               
197                parameters = (self.parameters.__name__, {1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_TopicCategoryCode'}})
198               
199                '''
200                parameters = (self.parameters.__name__,{1:{                                                                     
201                'baseXpath':'distributionInfo/gmd:MD_Distribution/transferOptions',
202                'elValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/description/gco:CharacterString',
203                'depValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/function/gmd:CI_onLineFunctionCode',
204                'depVal':'DIF:PARAMETERS'}})
205                '''
206               
207                return parameters
208       
209       
210       
211        def resourceType(self):
212       
213                '''
214                Method to extract and return resourceType - extra column required for this 'searchTarget' requested by Gaynor.
215               
216                MEDIN element 4 p12             
217               
218                '''
219               
220                resource = (self.resourceType.__name__,{1:{'xpath':'gmd:hierarchyLevel/gmd:MD_ScopeCode@codeListValue'}})
221       
222                return resource
223       
224       
225       
226       
227        def topicCategory(self):
228                '''
229                Method to extract and return topicCategory
230               
231                MEDIN element 9 p16,
232               
233                NB - equivalent to standard NDG ingest field
234                '''
235               
236                topicCategory = (self.topicCategory.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode'}})
237       
238                return topicCategory
239               
240       
241       
242       
243        def lineage(self):
244                '''
245                Method to extract and return lineage values. - extra column required for this 'searchTarget' requested by Gaynor.
246               
247                MEDIN element 17 p29
248                '''
249               
250                lineage = (self.lineage.__name__,{1:{'xpath':'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage/gmd:statement/gco:CharacterString'}})
251               
252                return lineage
253       
254       
255        def publicAccessLimitations(self):
256                '''
257                Method to extract and return info on public access limitations - extra column required for this 'searchTarget' requested by Gaynor.
258               
259                MEDIN element 20 p33
260                '''
261               
262                publicAccess = (self.publicAccessLimitations.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_RestrictionCode'}},
263                                                                                                                          {2:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:useLimitation/gco:CharacterString'}})
264               
265                return publicAccess
266       
267       
268        def dataOriginator(self):
269                '''
270                Method to extract and return info on the Data Originator
271               
272                MEDIN element 22.1 p35.  For this will return a list of organisation names
273               
274                Mandatory - must have minimum of Organisation Name or Person Name.
275                '''
276               
277                #originator = (self.dataOriginator.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString'}})
278               
279                #revised 07/06/10 SJD - Needs to pick out values where CI_RoleCode = originator (not sure why its not already doing this..)
280                # also may not have Organisation name, so look uo
281                originator = (self.dataOriginator.__name__,{1:{
282                                                                                                        'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty',
283                                                                                                        'elValXpath':'gmd:organisationName/gco:CharacterString',
284                                                                                                        'depValXpath':'gmd:role/gmd:CI_RoleCode',
285                                                                                                        'depVal':'originator'}},
286                                                                                                        {2:{
287                                                                                                        'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty',
288                                                                                                        'elValXpath':'gmd:individualName/gco:CharacterString',
289                                                                                                        'depValXpath':'gmd:role/gmd:CI_RoleCode',
290                                                                                                        'depVal':'originator'}})
291               
292                return originator
293       
294       
295       
296        def keywords(self):
297               
298                '''
299                See notes in metadataDates for tuple format
300               
301                1. For MEDIN see Element 11 p18 - currently this method LUMPS ALL ISO keywords together!!!
302                '''
303                keywords = (self.keywords.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString'}},
304                                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gmx:Anchor'}},
305                                                                                        {3:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword',
306                                                                                                                        'elValXpath':'gmx:Anchor',
307                                                                                                                        'depValXpath':'gmx:Anchor/@xlink:href',
308                                                                                                                        'depVal':'http://vocab.ndg.nerc.ac.uk/term/N010/1/NDGO0003'}},
309                                                                                        {4:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword',
310                                                                                                                        'elValXpath':'gmx:Anchor',
311                                                                                                                        'depValXpath':'gmx:Anchor/@xlink:href',
312                                                                                                                        'depVal':'http://vocab.ndg.nerc.ac.uk/term/N010/current/NDGO0003'}},
313                                                                                        {5:{'xpath':'gmd:identificationInfo/srv:SV_ServiceIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString'}}
314                                                                               
315                                )
316               
317                #{3:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords',
318                #                                                                                       'elValXpath':'gmd:keyword/gmx:Anchor',
319                        #                                                                               'depValXpath':'gmd:keyword/gmx:Anchor',
320                        #                                                                               'depVal':'Natural Environment Research Council Designated Data Centres'}}
321               
322                return keywords
323       
324       
325        def INSPIREthemes(self):
326               
327                '''
328                Updated for NERC API v4.3.0 - type of keyword so extract using dependant value type of tuple
329               
330                '''
331               
332                themes = (self.INSPIREthemes.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords',
333                                                                                                        'elValXpath':'gmd:keyword/gco:CharacterString',
334                                                                                                        'depValXpath':'gmd:thesaurusName/gmd:CI_Citation/gmd:title/gco:CharacterString',
335                                                                                                        'depVal':'GEMET - INSPIRE themes, version 1.0'}},
336                                                                                          {2:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords',
337                                                                                                        'elValXpath':'gmd:keyword/gco:CharacterString',
338                                                                                                        'depValXpath':'gmd:thesaurusName/gmd:CI_Citation/gmd:title/gco:CharacterString',
339                                                                                                        'depVal':'INSPIRE themes'}}
340                                                                                                        )
341               
342                return themes
343       
344       
345        def resourceLocator(self):
346               
347                '''
348                Updated for NERC API v4.3.0 - returns url of actual data location if available - is dependant val - code must be 'download'
349               
350                Update 02/03/11: CI_onlineFunctionCode=download structure is not available for all records: Kay wants us to just go on the presence
351                                                 of the gmd:transferOptions//gmd:URL as indicator of a resource locator..
352               
353               
354               
355                resource = (self.resourceLocator.__name__,{1:{
356                                                                                                        'baseXpath':'gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource',
357                                                                                                        'elValXpath':'gmd:linkage/gmd:URL',
358                                                                                                        'depValXpath':'gmd:function/gmd:CI_onLineFunctionCode',
359                                                                                                        'depVal':'download'}}) '''
360               
361                resource = (self.resourceLocator.__name__,{1:{'xpath':'gmd:distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL'}})
362                                                                                       
363                                       
364                return resource
365       
366       
367        def verticalExtentKeyword(self):
368               
369                '''
370                Updated for NERC API v4.3.0 - returns info on vertical extent
371                '''
372               
373               
374                extent = (self.verticalExtentKeyword.__name__,{1:{
375                                                                                                        'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier/gmd:MD_Identifier',
376                                                                                                        'elValXpath':'gmd:code/gco:CharacterString',
377                                                                                                        'depValXpath':'gmd:authority/gmd:CI_Citation/gmd:title/gco:CharacterString',
378                                                                                                        'depVal':'SeaDataNet vertical extent keywords'}},
379                                                                                                       
380                                                                                                        {2:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords',
381                                                                                                        'elValXpath':'gmd:keyword/gco:CharacterString',
382                                                                                                        'depValXpath':'gmd:thesaurusName/gmd:CI_Citation/gmd:title/gco:CharacterString',
383                                                                                                        'depVal':'Vertical Coverages'}}
384                                                                                                        )
385               
386               
387                #debug xpath - all extents
388                #extent = (self.verticalExtentKeyword.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString'}})
389               
390                return extent
391       
392       
393        def urlsToChange(self):
394                '''
395                Method containing standard iso xpath for URL's to be changed for purposes of NDG redirect
396               
397                MEDIN - updated to change home pages, resources etc : Element 5.1 (resource locator url), Element 7 (coupled resource)
398               
399                '''
400               
401                urls = (self.urlsToChange.__name__,
402                        {1:{'xpath':'distributionInfo/gmd:MD_Distribution/gmd:transferOptions/gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL'}})
403                       
404                '''                                                             
405                'baseXpath':'distributionInfo/gmd:MD_Distribution/transferOptions',
406                'elValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL',
407                'depValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/function/gmd:CI_onLineFunctionCode',
408                'depVal':'DIF:RELATED_URL'}},
409                {3:{'baseXpath':'gmd:contact/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource',
410                                                                                                        'elValXpath':'gmd;linkage/gmd:URL',
411                                                                                                        'depValXpath':'function/gmd:CI_onLineFunctionCode',
412                                                                                                        'depVal':'DIF:DC_URL'}}
413                '''
414               
415                return urls
416               
417       
418       
419        def metadataCreationDate(self):
420               
421               
422                '''revised
423                Tuple to hold information data - return list of lists if list has 4 values
424                then its a dependant type in which case the list is the following format:
425                        [0] Base Xpath: the xpath from the root element to the element subtree at which point the required and dependant value branches
426                        [1] Value required xpath: the xpath to the subelement for the desired value
427                        [2] Dependant value xpath: the xpath to the subelement in which the dependant value resides i.e. an ISO role code
428                        [3] Dependant value: the value to match [2] - if it matches then value [1] returned, otherwise None returned
429                USE "returnDependantElementVal" method with this type!!
430               
431                If List has a SINGLE element then this is the xpath from the root element to the desired value
432                '''
433               
434                creationDate = (self.metadataCreationDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date',
435                                                                                                                        'elValXpath':'gmd:CI_Date/gmd:date/gco:Date',
436                                                                                                                        'depValXpath':'gmd:CI_Date/gmd:dateType/gmd:CI_DateTypeCode',
437                                                                                                                        'depVal':'creation'}})
438                               
439                return creationDate
440       
441       
442        '''
443        Return xpaths to revisionDate
444        '''
445        def metadataPublicationDate(self):
446               
447                publicationDate = (self.metadataPublicationDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date',
448                                                                                                                        'elValXpath':'gmd:CI_Date/gmd:date/gco:Date',
449                                                                                                                        'depValXpath':'gmd:CI_Date/gmd:dateType/gmd:CI_DateTypeCode',
450                                                                                                                        'depVal':'publication'}})
451               
452                return publicationDate
453       
454       
455        '''
456        Return xpaths to revisionDate
457        '''
458        def metadataRevisionDate(self):
459               
460                '''
461                revisionDate = (self.metadataRevisionDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date',
462                                                                                                                        'elValXpath':'gmd:CI_Date/gmd:date/gco:Date',
463                                                                                                                        'depValXpath':'gmd:CI_Date/gmd:dateType/gmd:CI_DateTypeCode',
464                                                                                                                        'depVal':'revision'}})
465                '''
466               
467                #for medin - revisionDate is same as updateDate
468                revisionDate = (self.metadataRevisionDate.__name__,{1:{'xpath':'gmd:dateStamp/gco:Date'}},
469                                                                                                                        {2:{'xpath':'gmd:dateStamp/gco:DateTime'}})
470               
471                return revisionDate
472       
473       
474        def metadataUpdateDate(self):           
475                '''
476                Method to extract and return the timestamp of the metadata
477               
478                MEDIN element 26 p 43
479                '''
480               
481                updateDate = (self.metadataUpdateDate.__name__,{1:{'xpath':'gmd:dateStamp/gco:Date'}})
482               
483                return updateDate
484               
Note: See TracBrowser for help on using the repository browser.