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

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

Adding files from v4.2.0 tag to form basis for v4.3.0 version

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       
61        def boundingDates(self):
62                '''
63                See notes in metadataDates for tuple format
64                '''
65                               
66                date = (self.boundingDates.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition'}},
67                                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition'}},
68                                                                                        {'order':{'start':1,'end':2}})
69                                                               
70               
71                return date
72       
73        def coordinates(self):
74               
75                '''
76                See notes in metadataDates for tuple format
77                '''
78                               
79                #NOTE coords in north,south,east,west sequence
80                coordinates = (self.coordinates.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:northBoundLongitude/gco:Decimal'}},
81                                                                        {2:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:southBoundLongitude/gco:Decimal'}},
82                                                                        {3:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:eastBoundLongitude/gco:Decimal'}},
83                                                                        {4:{'xpath':'gmd:identificationInfo/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicBoundingBox/gmd:westBoundLongitude/gco:Decimal'}},
84                                                                        {'order':{'north':1,'south':2,'east':3,'west':4}})
85               
86                return coordinates
87       
88               
89       
90        def originalFormat(self):
91                '''
92                See notes in metadataDates for tuple format
93                '''
94               
95                originalFormat = (self.originalFormat.__name__,{1:{'xpath':'metadataStandardName/gco:CharacterString'}})
96               
97                return originalFormat
98       
99       
100        def authors(self):
101                '''
102                See notes in metadataDates for tuple format
103                '''
104               
105                authors = (self.authors.__name__,{1:{'xpath':'gmd:contact/gmd:CI_ResponsibleParty/gmd:individualName/gco:CharacterString'}})
106               
107                return authors
108       
109       
110        def parameters(self):
111                '''
112                See notes in metadataDates for tuple format
113                '''
114                #Note that in StubISO same element structure is used for related_urls!
115                parameters = (self.parameters.__name__,{1:{                                                                     
116                'baseXpath':'distributionInfo/gmd:MD_Distribution/transferOptions',
117                'elValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/description/gco:CharacterString',
118                'depValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/function/gmd:CI_onLineFunctionCode',
119                'depVal':'DIF:PARAMETERS'}})
120               
121                return parameters
122               
123       
124        def keywords(self):
125               
126                '''
127                See notes in metadataDates for tuple format
128                '''
129                keywords = (self.keywords.__name__,{1:{'xpath':'gmd:identificationInfo/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gmx:anchor'}},
130                                                                                {2:{'xpath':'gmd:identificationInfo/gmd:topicCategory/gmd:MD_TopicCategoryCode'}}
131                                               
132                                )
133               
134                return keywords
135       
136       
137        def urlsToChange(self):
138                '''
139                Method containing standard iso xpath for URL's to be changed for purposes of NDG redirect
140               
141                '''
142               
143                urls = (self.urlsToChange.__name__,{1:{'xpath':'gmd:dataSetURI/gco:CharacterString'}},
144                        {2:{                                                                   
145                'baseXpath':'distributionInfo/gmd:MD_Distribution/transferOptions',
146                'elValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/gmd:linkage/gmd:URL',
147                'depValXpath':'gmd:MD_DigitalTransferOptions/gmd:onLine/gmd:CI_OnlineResource/function/gmd:CI_onLineFunctionCode',
148                'depVal':'DIF:RELATED_URL'}},
149                {3:{'baseXpath':'gmd:contact/gmd:CI_ResponsibleParty/gmd:contactInfo/gmd:CI_Contact/gmd:onlineResource',
150                                                                                                        'elValXpath':'gmd;linkage/gmd:URL',
151                                                                                                        'depValXpath':'function/gmd:CI_onLineFunctionCode',
152                                                                                                        'depVal':'DIF:DC_URL'}}
153                )
154               
155                return urls
156               
157       
158       
159       
160        def metadataCreationDate(self):
161               
162               
163                '''revised
164                Tuple to hold information data - return list of lists if list has 4 values
165                then its a dependant type in which case the list is the following format:
166                        [0] Base Xpath: the xpath from the root element to the element subtree at which point the required and dependant value branches
167                        [1] Value required xpath: the xpath to the subelement for the desired value
168                        [2] Dependant value xpath: the xpath to the subelement in which the dependant value resides i.e. an ISO role code
169                        [3] Dependant value: the value to match [2] - if it matches then value [1] returned, otherwise None returned
170                USE "returnDependantElementVal" method with this type!!
171               
172                If List has a SINGLE element then this is the xpath from the root element to the desired value
173                '''
174               
175                creationDate = (self.metadataCreationDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/date',
176                                                                                                                        'elValXpath':'gmd:CI_Date/date/gco:DateTime',
177                                                                                                                        'depValXpath':'gmd:CI_Date/dateType/gmd:CI_DateTypeCode',
178                                                                                                                        'depVal':'creation'}})
179               
180               
181                return creationDate
182       
183        '''
184        Return xpaths to revisionDate
185        '''
186        def metadataRevisionDate(self):
187               
188                revisionDate = (self.metadataRevisionDate.__name__,{1:{'baseXpath':'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/date',
189                                                                                                                        'elValXpath':'gmd:CI_Date/date/gco:DateTime',
190                                                                                                                        'depValXpath':'gmd:CI_Date/dateType/gmd:CI_DateTypeCode',
191                                                                                                                        'depVal':'revision'}})
192               
193                return revisionDate
194               
Note: See TracBrowser for help on using the repository browser.