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

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

Initial classes for creating a data object to aid ingestion of ISO metadata records. difConvertedtoISO19139.py is the xpath definition class for the results of dif2iso xqueries. testIso.py is a test class to check output

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