source: TI01-discovery/branches/ingestion-MEDIN/ingestAutomation-upgrade/OAIBatch/difConvertedto_ISO19139.py @ 6312

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI01-discovery/branches/ingestion-MEDIN/ingestAutomation-upgrade/OAIBatch/difConvertedto_ISO19139.py@6312
Revision 6312, 5.6 KB checked in by sdonegan, 11 years ago (diff)

added method to extract datasetID ..doh

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 dataCentreName(self):
37                '''
38                See notes in metadataDates for tuple format
39                '''
40               
41                dataCentreName = (self.dataCentreName.__name__,{1:{
42                                                                                                        'baseXpath':'gmd:contact/gmd:CI_ResponsibleParty',
43                                                                                                        'elValXpath':'organisationName/gco:CharacterString',
44                                                                                                        'depValXpath':'role/gmd:CI_RoleCode',
45                                                                                                        'depVal':'disributor'}})
46               
47                return dataCentreName
48       
49               
50       
51        def boundingDates(self):
52                '''
53                See notes in metadataDates for tuple format
54                '''
55                               
56                date = (self.boundingDates.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition'}},
57                                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition'}},
58                                                                                        {'order':{'start':1,'end':2}})
59                                                               
60               
61                return date
62       
63        def coordinates(self):
64               
65                '''
66                See notes in metadataDates for tuple format
67                '''
68                               
69                #NOTE coords in north,south,east,west sequence
70                coordinates = (self.coordinates.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLongitude/gco:Decimal'}},
71                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLongitude/gco:Decimal'}},
72                                                                        {3:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal'}},
73                                                                        {4:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal'}},
74                                                                        {'order':{'north':1,'south':2,'east':3,'west':4}})
75               
76                return coordinates
77       
78               
79       
80        def originalFormat(self):
81                '''
82                See notes in metadataDates for tuple format
83                '''
84               
85                originalFormat = (self.originalFormat.__name__,{1:{'xpath':'metadataStandardName/gco:CharacterString'}})
86               
87                return originalFormat
88       
89       
90        def authors(self):
91                '''
92                See notes in metadataDates for tuple format
93                '''
94               
95                authors = (self.authors.__name__,{1:{'xpath':'gmd:contact/gmd:CI_ResponsibleParty/gmd:individualName/gco:CharacterString'}})
96               
97                return authors
98       
99       
100        def parameters(self):
101                '''
102                See notes in metadataDates for tuple format
103                '''
104                #Note that in StubISO same element structure is used for related_urls!
105                parameters = (self.parameters.__name__,{1:{                                                                     
106                'baseXpath':'distributionInfo/gmd:MD_Distribution/transferOptions',
107                'elValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/description/gco:CharacterString',
108                'depValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/function/gmd:CI_onLineFunctionCode',
109                'depVal':'DIF:PARAMETERS'}})
110               
111                return parameters
112               
113       
114        def keywords(self):
115               
116                '''
117                See notes in metadataDates for tuple format
118                '''
119                keywords = (self.keywords.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gmx:anchor'}},
120                                                                                {2:{'xpath':'gmd:identificationInfo/gmd:topicCategory/gmd:MD_TopicCategoryCode'}}
121                                               
122                                )
123               
124                return keywords
125               
126       
127       
128       
129        def metadataCreationDate(self):
130               
131               
132                '''revised
133                Tuple to hold information data - return list of lists if list has 4 values
134                then its a dependant type in which case the list is the following format:
135                        [0] Base Xpath: the xpath from the root element to the element subtree at which point the required and dependant value branches
136                        [1] Value required xpath: the xpath to the subelement for the desired value
137                        [2] Dependant value xpath: the xpath to the subelement in which the dependant value resides i.e. an ISO role code
138                        [3] Dependant value: the value to match [2] - if it matches then value [1] returned, otherwise None returned
139                USE "returnDependantElementVal" method with this type!!
140               
141                If List has a SINGLE element then this is the xpath from the root element to the desired value
142                '''
143               
144                creationDate = (self.metadataCreationDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/date',
145                                                                                                                        'elValXpath':'gmd:CI_Date/date/gco:DateTime',
146                                                                                                                        'depValXpath':'gmd:CI_Date/dateType/gmd:CI_DateTypeCode',
147                                                                                                                        'depVal':'creation'}})
148               
149               
150                return creationDate
151       
152        '''
153        Return xpaths to revisionDate
154        '''
155        def metadataRevisionDate(self):
156               
157                revisionDate = (self.metadataRevisionDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/date',
158                                                                                                                        'elValXpath':'gmd:CI_Date/date/gco:DateTime',
159                                                                                                                        'depValXpath':'gmd:CI_Date/dateType/gmd:CI_DateTypeCode',
160                                                                                                                        'depVal':'revision'}})
161               
162                return revisionDate
163               
Note: See TracBrowser for help on using the repository browser.