uwdc 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/uwdc/mods.rb ADDED
@@ -0,0 +1,206 @@
1
+ require 'ostruct'
2
+
3
+ module UWDC
4
+ # Public: Obtain the MODS metadata for a UWDC METS object
5
+ #
6
+ # Example
7
+ #
8
+ # @mods = UWDC::Mods.new('ECJ6ZXEYWUE7B8W')
9
+ # # => MODS object fetched from Fedora
10
+ #
11
+ # @mods = UWDC::Mods.new('ECJ6ZXEYWUE7B8W', File.read('../file.xml'))
12
+ # # => object constructed from XML file
13
+ class Mods < Mets
14
+
15
+ # Public: standardized, supported MODS attributes
16
+ def self.attributes
17
+ [:titles, :names, :dates, :forms, :abstracts, :subjects, :related_items]
18
+ end
19
+
20
+ # Public: Access the XML nodes of the MODS XML
21
+ #
22
+ # Example
23
+ #
24
+ # @mods.nodes
25
+ # # => Nokogiri::XML::NodeSet
26
+ #
27
+ # Returns the Nokogiri::XML::NodeSet for the parsed MODS XML
28
+ def nodes
29
+ @xml.nodes.xpath("//dmdSec[contains(@ID,'#{@id}')]//mods[1]")
30
+ end
31
+
32
+ # Public: Access the XML nodes of the METS file
33
+ #
34
+ # Example
35
+ #
36
+ # @mods.metadata
37
+ # # => {:title => ['A life idyl', ...], ...}
38
+ #
39
+ # Returns Hash
40
+ def metadata
41
+ attributes = UWDC::Mods.attributes.inject({}) do |result, method|
42
+ result[method] = self.send(method)
43
+ result
44
+ end
45
+ attributes[:access_conditions] = self.access_conditions
46
+ attributes
47
+ end
48
+
49
+ # Public: Array of title data
50
+ #
51
+ # Example
52
+ #
53
+ # @mods.titles
54
+ # # => ['A life ldyl', ...]
55
+ #
56
+ # Returns Array
57
+ def titles
58
+ clean_nodes(nodes.xpath("//mods/titleInfo//title"))
59
+ end
60
+
61
+ # Public: Array of roles and nameParts
62
+ #
63
+ # Example
64
+ #
65
+ # @mods.names
66
+ # # => [#<OpenStruct name="Foo", role="Bar">, ...]
67
+ #
68
+ # @mods.names.first.name
69
+ # # => "Foo"
70
+ #
71
+ # Returns Array of OpenStructs
72
+ def names
73
+ nodes.xpath("//mods/name").inject([]){|arr,node| arr << capture_name(node); arr}
74
+ end
75
+
76
+ # Public: Array of dates
77
+ #
78
+ # Example
79
+ #
80
+ # @mods.dates
81
+ # # => ["1985", ...]
82
+ #
83
+ # Returns Array of Strings
84
+ def dates
85
+ clean_nodes(nodes.xpath("//mods/originInfo//dateIssued"))
86
+ end
87
+
88
+ # Public: Array of forms
89
+ # Example
90
+ #
91
+ # @mods.forms
92
+ # # => ["StillImage", ...]
93
+ #
94
+ # Returns Array of Strings
95
+ def forms
96
+ clean_nodes(nodes.xpath("//mods/physicalDescription//form"))
97
+ end
98
+
99
+ # Public: Array of abstracts (sometimes translated)
100
+ # @TODO: support lang here
101
+ #
102
+ # Example
103
+ #
104
+ # @mods.abstracts
105
+ # # => ["The man is an entertainer who captured the wild hyena...", ...]
106
+ #
107
+ # Returns Array of Strings
108
+ def abstracts
109
+ clean_nodes(nodes.xpath("//mods//abstract"))
110
+ end
111
+
112
+ # Public: Array of subject data
113
+ #
114
+ # Example
115
+ #
116
+ # @mods.subjects
117
+ # # => ["Delehanty, James", "Animals", ...]
118
+ #
119
+ # Returns Array of Strings
120
+ def subjects
121
+ clean_nodes(nodes.xpath("//mods/subject//topic"))
122
+ end
123
+
124
+ # Public: Array of geographic subject data
125
+ # @TODO: subjects_heirarchical_geographic
126
+ #
127
+ # Example
128
+ # @mods.subjects_heirarchical_geographic
129
+ # # => ["Foo", "Bar", "Baz"]
130
+ def subjects_heirarchical_geographic
131
+ end
132
+
133
+ # Public: OpenStruct - Terms of Use and Reuse Rights
134
+ #
135
+ # Example
136
+ #
137
+ # @mods.access_conditions
138
+ # # => #<OpenStruct rights=["Delehanty, Jim"], reuse=["Delehanty, Jim"]>
139
+ #
140
+ # @mods.access_conditions.rights
141
+ # # => "Delehanty, Jim"
142
+ #
143
+ # Retuns an OpenStruct
144
+ def access_conditions
145
+ OpenStruct.new(rights: rights, reuse: reuse)
146
+ end
147
+
148
+ # Public: Array of Structs - Related items' label and value
149
+ #
150
+ # Example
151
+ #
152
+ # @mods.related_items
153
+ # # => [#<OpenStruct label="Part of", name="Africa Focus">, ...]
154
+ #
155
+ # @mods.related_items.first.name
156
+ # # => "Africa Focus"
157
+ #
158
+ # Retuns Array of OpenStruct
159
+ def related_items
160
+ nodes.xpath("//mods/relatedItem").inject([]){|arr,node| arr << capture_relation(node) ; arr }
161
+ end
162
+
163
+ # Public: Check MODS for validity
164
+ # @TODO: Use the UWDC MODS Schema
165
+ #
166
+ # Example
167
+ #
168
+ # @mods.valid?
169
+ # # => true
170
+ #
171
+ # Returns Boolean
172
+ def valid?
173
+ response = http_client.get("http://www.loc.gov/standards/mods/mods.xsd")
174
+ xsd = Nokogiri::XML::Schema.new(response.body)
175
+ xml = Nokogiri::XML(nodes.to_xml)
176
+ xsd.valid?(xml)
177
+ end
178
+
179
+ private
180
+
181
+ # Internal: Rights/Ownership String
182
+ def rights
183
+ clean_nodes(nodes.xpath("//accessCondition[@type='rightsOwnership']"))
184
+ end
185
+
186
+ # Internal: Reuse Rights String
187
+ def reuse
188
+ clean_nodes(nodes.xpath("//accessCondition[@type='useAndReproduction']"))
189
+ end
190
+
191
+ # Internal: Related Label String
192
+ def related_label(node)
193
+ node['displayLabel'] ? node['displayLabel'] : "Related item"
194
+ end
195
+
196
+ # Internal: Capture relation metadata
197
+ def capture_relation(node)
198
+ OpenStruct.new(label: related_label(node), name: node.xpath('.//name | .//title').text)
199
+ end
200
+
201
+ # Internal: Capture name metadata
202
+ def capture_name(node)
203
+ OpenStruct.new(name: node.xpath('.//namePart').text, role: node.xpath('.//role/roleTerm').text)
204
+ end
205
+ end
206
+ end
@@ -0,0 +1,12 @@
1
+ module UWDC
2
+ # Return the UWDC/PREMIS-ish submitters of a METS file
3
+ class Origin < Mets
4
+ def nodes
5
+ @xml.nodes.xpath("//amdSec[contains(@ID,'#{@id}')]//origin[1]")
6
+ end
7
+
8
+ def submitters
9
+ clean_nodes(nodes.xpath(".//agentName"))
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ module UWDC
2
+ # Return the CMODELS related to METS file objects
3
+ class RelsExt < Mets
4
+ def nodes
5
+ @xml.nodes.xpath("//amdSec[contains(@ID,'#{@id}')]//RDF[1]")
6
+ end
7
+
8
+ def models
9
+ nodes.xpath("//amdSec[contains(@ID,'RELS-EXT')]").inject({}) do |result, node|
10
+ result["#{node.attribute('ID')}"] = pick_attribute(node.xpath(".//hasModel"), 'resource')
11
+ result
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ module UWDC
2
+ # Return the structure of a METS file
3
+ class StructMap < Mets
4
+ def nodes
5
+ @xml.nodes.xpath("//structMap[contains(@ID,'#{@id}')]")
6
+ end
7
+
8
+ def structure
9
+ nodes.xpath('div').inject([]){|result, div| result << Div.new(div)}
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module UWDC
2
+ VERSION = "0.0.1"
3
+ end
data/lib/uwdc/xml.rb ADDED
@@ -0,0 +1,38 @@
1
+ module UWDC
2
+ # Read or Fetch METS XML files
3
+ class XML
4
+ extend HTTPClient::IncludeClient
5
+ include_http_client
6
+
7
+ attr_accessor :xml, :nodes, :status
8
+
9
+ def initialize(id, xml=nil, status=nil)
10
+ @id ||= id
11
+ @xml,@status = http_xml(xml,status)
12
+ end
13
+
14
+ def http_xml(xml,status)
15
+ unless xml
16
+ begin
17
+ # http://depot.library.wisc.edu:9090/fedora/objects/1711.dl:33QOBSVPJLWEM8S/methods/1711.dl:SDefineFirstClassObject/viewMets
18
+ #response = http_client.get("http://depot.library.wisc.edu/uwdcutils/METS/1711.dl:#{@id}")
19
+ response = http_client.get("http://depot.library.wisc.edu:9090/fedora/objects/1711.dl:#{@id}/methods/1711.dl:SDefineFirstClassObject/viewMets")
20
+ xml = response.body
21
+ status = response.status
22
+ rescue TimeoutError, HTTPClient::ConfigurationError, HTTPClient::BadResponseError, Nokogiri::SyntaxError => error
23
+ exception = error
24
+ end
25
+ end
26
+ [xml,status]
27
+ end
28
+
29
+ def nodes
30
+ nokogiri_parse(@xml)
31
+ end
32
+
33
+ def nokogiri_parse(xml)
34
+ nodes = Nokogiri::XML.parse(xml)
35
+ nodes.remove_namespaces!
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,178 @@
1
+ <?xml version="1.0" encoding="utf-8" standalone="no"?>
2
+ <mets OBJID="1711.dl:ECJ6ZXEYWUE7B8W" LABEL="Hyena Wrestler with Muzzled Hyena" xmlns="http://www.loc.gov/METS/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/METS/ http://depot.library.wisc.edu:9090/fedora/get/1711.dl:XMLSchema-METS-1.7/XSD">
3
+ <metsHdr/>
4
+ <dmdSec ID="x1711-dl_ECJ6ZXEYWUE7B8W-BIB0">
5
+ <mdWrap MIMETYPE="text/xml" MDTYPE="MODS" LABEL="MODS">
6
+ <xmlData>
7
+ <mods:mods xmlns:mods="http://www.loc.gov/mods/v3">
8
+ <mods:titleInfo>
9
+ <mods:title>Hyena Wrestler with Muzzled Hyena</mods:title>
10
+ </mods:titleInfo>
11
+ <mods:identifier type="hdl">1711.dl/ECJ6ZXEYWUE7B8W</mods:identifier>
12
+ <mods:name>
13
+ <mods:namePart>Delehanty, James</mods:namePart>
14
+ <mods:role>
15
+ <mods:roleTerm type="text">Photographer</mods:roleTerm>
16
+ </mods:role>
17
+ </mods:name>
18
+ <mods:subject>
19
+ <mods:topic>Delehanty, James</mods:topic>
20
+ </mods:subject>
21
+ <mods:subject>
22
+ <mods:topic>Animals</mods:topic>
23
+ </mods:subject>
24
+ <mods:subject>
25
+ <mods:topic>Hyenas</mods:topic>
26
+ </mods:subject>
27
+ <mods:subject>
28
+ <mods:topic>Portraits</mods:topic>
29
+ </mods:subject>
30
+ <mods:subject>
31
+ <mods:topic>Sports</mods:topic>
32
+ </mods:subject>
33
+ <mods:subject>
34
+ <mods:topic>Wrestling</mods:topic>
35
+ </mods:subject>
36
+ <mods:subject>
37
+ <mods:topic>West Africa</mods:topic>
38
+ </mods:subject>
39
+ <mods:abstract> The man is an entertainer who captured the wild hyena when it was a cub. He earns his living by wandering from village to village in Central Niger wrestling the hyena for the amusement of the crowd.</mods:abstract>
40
+ <mods:originInfo>
41
+ <mods:dateIssued encoding="iso8601">1985</mods:dateIssued>
42
+ </mods:originInfo>
43
+ <mods:typeOfResource>still image</mods:typeOfResource>
44
+ <mods:physicalDescription>
45
+ <mods:form>StillImage</mods:form>
46
+ </mods:physicalDescription>
47
+ <mods:relatedItem displayLabel="Part of" type="host">
48
+ <mods:titleInfo>
49
+ <mods:title>Africa Focus</mods:title>
50
+ </mods:titleInfo>
51
+ </mods:relatedItem>
52
+ <mods:accessCondition type="useAndReproduction">Delehanty, Jim</mods:accessCondition>
53
+ <mods:accessCondition type="rightsOwnership">Delehanty, Jim</mods:accessCondition>
54
+ <mods:recordInfo>
55
+ <mods:recordIdentifier>1711.dl:ECJ6ZXEYWUE7B8W.BIB0</mods:recordIdentifier>
56
+ <mods:recordOrigin>UWDCC</mods:recordOrigin>
57
+ <mods:recordChangeDate encoding="w3cdtf">2004-08-02</mods:recordChangeDate>
58
+ <mods:languageOfCataloging>
59
+ <mods:languageTerm authority="iso639-2b">eng</mods:languageTerm>
60
+ </mods:languageOfCataloging>
61
+ </mods:recordInfo>
62
+ <mods:relatedItem displayLabel="Collection" type="host">
63
+ <mods:identifier>1711.dl:CollectionAfricaFocus</mods:identifier>
64
+ <mods:name>Africa Focus: Sights and Sounds of a Continent</mods:name>
65
+ </mods:relatedItem>
66
+ </mods:mods>
67
+ </xmlData>
68
+ </mdWrap>
69
+ </dmdSec>
70
+ <dmdSec ID="x1711-dl_S2OGIJADZCOBF83-DC">
71
+ <mdWrap MIMETYPE="text/xml" MDTYPE="DC" LABEL="Dublin Core Record for this object">
72
+ <xmlData>
73
+ <oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
74
+ <dc:identifier>1711.dl:S2OGIJADZCOBF83</dc:identifier>
75
+ </oai_dc:dc>
76
+ </xmlData>
77
+ </mdWrap>
78
+ </dmdSec>
79
+ <amdSec ID="x1711-dl_ECJ6ZXEYWUE7B8W-ORIGIN">
80
+ <digiprovMD ID="x1711-dl_ECJ6ZXEYWUE7B8W-ORIGIN-PROV0">
81
+ <mdWrap MIMETYPE="text/xml" MDTYPE="OTHER" OTHERMDTYPE="UNSPECIFIED" LABEL="ORIGIN">
82
+ <xmlData>
83
+ <uwdcProv:origin xmlns:premis="info:lc/xmlns/premis-v2" xmlns:uwdcProv="http://digital.library.wisc.edu/1711.dl/UWDCProv-1.0">
84
+ <uwdcProv:projectID>AfricaFocus</uwdcProv:projectID>
85
+ <uwdcProv:localID>2913jd27</uwdcProv:localID>
86
+ <uwdcProv:submitter>
87
+ <premis:agent>
88
+ <premis:agentIdentifier>
89
+ <premis:agentIdentifierType>UWDC Agent ID</premis:agentIdentifierType>
90
+ <premis:agentIdentifierValue>UWMadCLSASP</premis:agentIdentifierValue>
91
+ </premis:agentIdentifier>
92
+ <premis:agentName>University of Wisconsin--Madison. African Studies Program.</premis:agentName>
93
+ </premis:agent>
94
+ </uwdcProv:submitter>
95
+ </uwdcProv:origin>
96
+ </xmlData>
97
+ </mdWrap>
98
+ </digiprovMD>
99
+ </amdSec>
100
+ <amdSec ID="x1711-dl_ECJ6ZXEYWUE7B8W-RELS-EXT">
101
+ <techMD ID="x1711-dl_ECJ6ZXEYWUE7B8W-RELS-EXT-TECHMD">
102
+ <mdWrap MIMETYPE="application/rdf+xml" MDTYPE="OTHER" OTHERMDTYPE="UNSPECIFIED" LABEL="Relationships">
103
+ <xmlData>
104
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
105
+
106
+ <rdf:Description rdf:about="info:fedora/1711.dl:ECJ6ZXEYWUE7B8W">
107
+ <hasMember xmlns="info:fedora/fedora-system:def/relations-external#" rdf:resource="info:fedora/1711.dl:S2OGIJADZCOBF83"/>
108
+ <hasModel xmlns="info:fedora/fedora-system:def/model#" rdf:resource="info:fedora/1711.dl:CModelUWDCObject"/>
109
+ <hasModel xmlns="info:fedora/fedora-system:def/model#" rdf:resource="info:fedora/1711.dl:CModelFirstClassObject"/>
110
+ <hasModel xmlns="info:fedora/fedora-system:def/model#" rdf:resource="info:fedora/1711.dl:CModelCompositeObject"/>
111
+ <isMemberOfProject xmlns="http://digital.library.wisc.edu/1711.dl/rdf/1.0/relations#" rdf:resource="hdl:1711.dl/AfricaFocus"/>
112
+ <isMemberOfCollection xmlns="info:fedora/fedora-system:def/relations-external#" rdf:resource="info:fedora/1711.dl:CollectionAfricaFocus"/>
113
+ </rdf:Description>
114
+
115
+ </rdf:RDF>
116
+ </xmlData>
117
+ </mdWrap>
118
+ </techMD>
119
+ </amdSec>
120
+ <amdSec ID="x1711-dl_S2OGIJADZCOBF83-RELS-EXT">
121
+ <techMD ID="x1711-dl_S2OGIJADZCOBF83-RELS-EXT-TECHMD">
122
+ <mdWrap MIMETYPE="application/rdf+xml" MDTYPE="OTHER" OTHERMDTYPE="UNSPECIFIED" LABEL="Relationships">
123
+ <xmlData>
124
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
125
+
126
+ <rdf:Description rdf:about="info:fedora/1711.dl:S2OGIJADZCOBF83">
127
+ <hasModel xmlns="info:fedora/fedora-system:def/model#" rdf:resource="info:fedora/1711.dl:CModelUWDCObject"/>
128
+ <hasModel xmlns="info:fedora/fedora-system:def/model#" rdf:resource="info:fedora/1711.dl:CModelImageWithDefaultRes"/>
129
+ <isMemberOfProject xmlns="http://digital.library.wisc.edu/1711.dl/rdf/1.0/relations#" rdf:resource="hdl:1711.dl/AfricaFocus"/>
130
+ <isMemberOf xmlns="info:fedora/fedora-system:def/relations-external#" rdf:resource="info:fedora/1711.dl:ECJ6ZXEYWUE7B8W"/>
131
+ </rdf:Description>
132
+
133
+ </rdf:RDF>
134
+ </xmlData>
135
+ </mdWrap>
136
+ </techMD>
137
+ </amdSec>
138
+ <fileSec>
139
+ <fileGrp ID="x1711-dl_ECJ6ZXEYWUE7B8W-DISSEMINATORS">
140
+ <file ID="x1711-dl_ECJ6ZXEYWUE7B8W-title" MIMETYPE="text/plain;charset=UTF-8" USE="title">
141
+ <FLocat LOCTYPE="URL" xlink:type="simple" xlink:href="http://depot.library.wisc.edu/repository/fedora/1711.dl:ECJ6ZXEYWUE7B8W/methods/1711.dl:SDefineUWDCObject/getTitle"/>
142
+ </file>
143
+ <file ID="x1711-dl_ECJ6ZXEYWUE7B8W-visualrepresentation" MIMETYPE="image/jpeg" USE="visualrepresentation">
144
+ <FLocat LOCTYPE="URL" xlink:type="simple" xlink:href="http://depot.library.wisc.edu/repository/fedora/1711.dl:ECJ6ZXEYWUE7B8W/methods/1711.dl:SDefineCompositeObject/getVisualRepresentation"/>
145
+ </file>
146
+ </fileGrp>
147
+ <fileGrp ID="x1711-dl_S2OGIJADZCOBF83-DISSEMINATORS">
148
+ <file ID="x1711-dl_S2OGIJADZCOBF83-title" MIMETYPE="text/plain;charset=UTF-8" USE="title">
149
+ <FLocat LOCTYPE="URL" xlink:type="simple" xlink:href="http://depot.library.wisc.edu/repository/fedora/1711.dl:S2OGIJADZCOBF83/methods/1711.dl:SDefineUWDCObject/getTitle"/>
150
+ </file>
151
+ <file ID="x1711-dl_S2OGIJADZCOBF83-thumb" MIMETYPE="image/jpeg" USE="thumb">
152
+ <FLocat LOCTYPE="URL" xlink:type="simple" xlink:href="http://depot.library.wisc.edu/repository/fedora/1711.dl:S2OGIJADZCOBF83/methods/1711.dl:SDefineImageWithDefaultRes/getThumb"/>
153
+ </file>
154
+ <file ID="x1711-dl_S2OGIJADZCOBF83-reference" MIMETYPE="image/jpeg" USE="reference">
155
+ <FLocat LOCTYPE="URL" xlink:type="simple" xlink:href="http://depot.library.wisc.edu/repository/fedora/1711.dl:S2OGIJADZCOBF83/methods/1711.dl:SDefineImageWithDefaultRes/getReference"/>
156
+ </file>
157
+ <file ID="x1711-dl_S2OGIJADZCOBF83-large" MIMETYPE="image/jpeg" USE="large">
158
+ <FLocat LOCTYPE="URL" xlink:type="simple" xlink:href="http://depot.library.wisc.edu/repository/fedora/1711.dl:S2OGIJADZCOBF83/methods/1711.dl:SDefineImageWithDefaultRes/getLarge"/>
159
+ </file>
160
+ <file ID="x1711-dl_S2OGIJADZCOBF83-icon" MIMETYPE="image/jpeg" USE="icon">
161
+ <FLocat LOCTYPE="URL" xlink:type="simple" xlink:href="http://depot.library.wisc.edu/repository/fedora/1711.dl:S2OGIJADZCOBF83/methods/1711.dl:SDefineImageWithIcon/getIcon"/>
162
+ </file>
163
+ </fileGrp>
164
+ </fileSec>
165
+ <structMap ID="x1711-dl_ECJ6ZXEYWUE7B8W-STRUCTMAP">
166
+ <div ID="x1711-dl_ECJ6ZXEYWUE7B8W-STRUCT" DMDID="x1711-dl_ECJ6ZXEYWUE7B8W-BIB0" ADMID="x1711-dl_ECJ6ZXEYWUE7B8W-RELS-EXT x1711-dl_ECJ6ZXEYWUE7B8W-ORIGIN">
167
+ <fptr FILEID="x1711-dl_ECJ6ZXEYWUE7B8W-title"/>
168
+ <fptr FILEID="x1711-dl_ECJ6ZXEYWUE7B8W-visualrepresentation"/>
169
+ <div ID="x1711-dl_S2OGIJADZCOBF83-STRUCT" ORDER="1" DMDID="x1711-dl_S2OGIJADZCOBF83-DC" ADMID="x1711-dl_S2OGIJADZCOBF83-RELS-EXT" CONTENTIDS="info:fedora/1711.dl:S2OGIJADZCOBF83">
170
+ <fptr FILEID="x1711-dl_S2OGIJADZCOBF83-title"/>
171
+ <fptr FILEID="x1711-dl_S2OGIJADZCOBF83-thumb"/>
172
+ <fptr FILEID="x1711-dl_S2OGIJADZCOBF83-reference"/>
173
+ <fptr FILEID="x1711-dl_S2OGIJADZCOBF83-large"/>
174
+ <fptr FILEID="x1711-dl_S2OGIJADZCOBF83-icon"/>
175
+ </div>
176
+ </div>
177
+ </structMap>
178
+ </mets>