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

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@7953
Revision 7953, 18.4 KB checked in by sdonegan, 9 years ago (diff)

Updated keyword handling to allow proper detection and use of vocab list entered keywords. Note that only BODC and CEDA are currently using this so still need to keep old methods for other DCs

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