active-fedora 4.0.0.rc16 → 4.0.0.rc17
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +15 -15
- data/active-fedora.gemspec +2 -2
- data/lib/active_fedora.rb +6 -1
- data/lib/active_fedora/base.rb +19 -13
- data/lib/active_fedora/content_model.rb +5 -0
- data/lib/active_fedora/datastream.rb +8 -13
- data/lib/active_fedora/fixture_loader.rb +1 -1
- data/lib/active_fedora/metadata_datastream.rb +0 -1
- data/lib/active_fedora/model.rb +1 -0
- data/lib/active_fedora/nokogiri_datastream.rb +11 -8
- data/lib/active_fedora/qualified_dublin_core_datastream.rb +95 -64
- data/lib/active_fedora/rdf_datastream.rb +23 -34
- data/lib/active_fedora/rels_ext_datastream.rb +0 -1
- data/lib/active_fedora/solr_digital_object.rb +4 -9
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora.rake +2 -1
- data/spec/integration/base_find_by_fields_spec.rb +3 -0
- data/spec/integration/full_featured_model_spec.rb +24 -18
- data/spec/integration/metadata_datastream_helper_spec.rb +15 -14
- data/spec/integration/model_spec.rb +0 -5
- data/spec/integration/solr_service_spec.rb +1 -8
- data/spec/samples/oral_history_sample_model.rb +2 -11
- data/spec/samples/special_thing.rb +1 -1
- data/spec/unit/base_extra_spec.rb +8 -14
- data/spec/unit/base_spec.rb +4 -8
- data/spec/unit/inheritance_spec.rb +4 -8
- data/spec/unit/qualified_dublin_core_datastream_spec.rb +60 -116
- data/spec/unit/solr_digital_object_spec.rb +2 -2
- data/spec/unit/solr_service_spec.rb +0 -1
- metadata +11 -13
- data/lib/active_fedora/attribute_methods.rb +0 -9
- data/spec/fixtures/oh_qdc.xml +0 -32
@@ -1,10 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
require 'active_fedora'
|
4
|
-
require 'active_fedora/base'
|
5
|
-
require 'active_fedora/metadata_datastream'
|
6
|
-
require 'active_fedora/qualified_dublin_core_datastream'
|
7
|
-
|
8
3
|
describe ActiveFedora::Base do
|
9
4
|
before(:each) do
|
10
5
|
#Fedora::Repository.instance.stubs(:nextid).returns("_nextid_")
|
@@ -12,9 +7,10 @@ describe ActiveFedora::Base do
|
|
12
7
|
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"foostream" do|m|
|
13
8
|
m.field "foostream", :string
|
14
9
|
end
|
15
|
-
has_metadata :type=>ActiveFedora::QualifiedDublinCoreDatastream, :name=>"dcstream"
|
16
|
-
|
17
|
-
|
10
|
+
has_metadata :type=>ActiveFedora::QualifiedDublinCoreDatastream, :name=>"dcstream"
|
11
|
+
# do|m|
|
12
|
+
# m.field "fz", :string
|
13
|
+
# end
|
18
14
|
end
|
19
15
|
class Bar < ActiveFedora::Base
|
20
16
|
has_metadata :type=>ActiveFedora::MetadataDatastream, :name=>"barstream" do |m|
|
@@ -1,52 +1,47 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ActiveFedora::QualifiedDublinCoreDatastream do
|
4
|
+
DC_ELEMENTS = [:contributor, :coverage, :creator, :date, :description, :identifier, :language, :publisher, :relation, :rights, :source]
|
4
5
|
|
5
6
|
before(:all) do
|
6
7
|
# Load Sample OralHistory Model
|
7
8
|
require File.join( File.dirname(__FILE__), "..", "samples","oral_history_sample_model" )
|
8
|
-
@dc_elements = [:contributor, :coverage, :creator, :date, :description, :format, :identifier, :language, :publisher, :relation, :rights, :source]
|
9
9
|
@dc_terms = []
|
10
10
|
end
|
11
11
|
|
12
12
|
before(:each) do
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
@sample_xml = "<dc xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:dcterms='http://purl.org/dc/terms/'>
|
14
|
+
<dcterms:type xsi:type='DCMITYPE'>sound</dcterms:type>
|
15
|
+
<dcterms:medium>medium</dcterms:medium>
|
16
|
+
<dcterms:rights>rights</dcterms:rights>
|
17
|
+
<dcterms:language>English</dcterms:language>
|
18
|
+
<dcterms:temporal>tmp</dcterms:temporal>
|
19
|
+
<dcterms:subject>kw1</dcterms:subject>
|
20
|
+
<dcterms:subject>kw2</dcterms:subject>
|
21
|
+
<dcterms:creator>creator</dcterms:creator>
|
22
|
+
<dcterms:creator>creator</dcterms:creator>
|
23
|
+
<dcterms:contributor>contributor</dcterms:contributor>
|
24
|
+
<dcterms:coverage>coverage</dcterms:coverage>
|
25
|
+
<dcterms:identifier>identifier</dcterms:identifier>
|
26
|
+
<dcterms:relation>relation</dcterms:relation>
|
27
|
+
<dcterms:source>source</dcterms:source>
|
28
|
+
<dcterms:title>title</dcterms:title>
|
29
|
+
<dcterms:extent>extent</dcterms:extent>
|
30
|
+
<dcterms:format>audio/x-wav</dcterms:format>
|
31
|
+
<dcterms:subject xsi:type='LCSH'>sh1</dcterms:subject>
|
32
|
+
<dcterms:subject xsi:type='LCSH'>sh2</dcterms:subject>
|
33
|
+
<dcterms:spatial>sp1</dcterms:spatial>
|
34
|
+
<dcterms:spatial>sp2</dcterms:spatial>
|
35
|
+
<dcterms:publisher>jwa</dcterms:publisher>
|
36
|
+
<dcterms:alternative>alt</dcterms:alternative>
|
37
|
+
<dcterms:description>desc</dcterms:description>
|
38
|
+
<dcterms:date>datestr</dcterms:date>
|
39
|
+
</dc>"
|
40
|
+
@test_ds = ActiveFedora::QualifiedDublinCoreDatastream.from_xml(@sample_xml )
|
18
41
|
|
19
42
|
end
|
20
43
|
it "from_xml should parse everything correctly" do
|
21
|
-
|
22
|
-
tmpl = OralHistorySampleModel.new.datastreams['dublin_core']
|
23
|
-
|
24
|
-
tmpl.expects(:subject_append).with('sh1')
|
25
|
-
tmpl.expects(:subject_append).with('sh2')
|
26
|
-
tmpl.expects(:subject_append).with('kw2')
|
27
|
-
tmpl.expects(:subject_append).with('kw1')
|
28
|
-
tmpl.expects(:spatial_append).with('sp1')
|
29
|
-
tmpl.expects(:spatial_append).with('sp2')
|
30
|
-
tmpl.expects(:language_append).with('English')
|
31
|
-
tmpl.expects(:alternative_append).with('alt')
|
32
|
-
tmpl.expects(:title_append).with('title')
|
33
|
-
tmpl.expects(:temporal_append).with('tmp')
|
34
|
-
tmpl.expects(:extent_append).with('extent')
|
35
|
-
tmpl.expects(:medium_append).with('medium')
|
36
|
-
tmpl.expects(:format_append).with('audio/x-wav')
|
37
|
-
tmpl.expects(:subject_heading_append).with('sh1')
|
38
|
-
tmpl.expects(:subject_heading_append).with('sh2')
|
39
|
-
tmpl.expects(:creator_append).with('creator')
|
40
|
-
tmpl.expects(:type_append).with('sound')
|
41
|
-
tmpl.expects(:rights_append).with('rights')
|
42
|
-
tmpl.expects(:publisher_append).with('jwa')
|
43
|
-
tmpl.expects(:description_append).with('desc')
|
44
|
-
|
45
|
-
sample_xml = fixture('oh_qdc.xml')
|
46
|
-
sample_ds_xml = Nokogiri::XML::Document.parse(sample_xml).xpath('//foxml:datastream/foxml:datastreamVersion/foxml:xmlContent/dc').first
|
47
|
-
|
48
|
-
z = ActiveFedora::QualifiedDublinCoreDatastream.from_xml(sample_ds_xml.to_s, tmpl)
|
49
|
-
z.should === tmpl
|
44
|
+
@test_ds.ng_xml.should be_equivalent_to @sample_xml
|
50
45
|
end
|
51
46
|
|
52
47
|
it "should create the right number of fields" do
|
@@ -58,31 +53,13 @@ describe ActiveFedora::QualifiedDublinCoreDatastream do
|
|
58
53
|
|
59
54
|
end
|
60
55
|
|
61
|
-
it "should have identity in and out" do
|
62
|
-
sample = fixture('oh_qdc.xml')
|
63
|
-
tmpl = OralHistorySampleModel.new.datastreams['dublin_core']
|
64
|
-
x1 = Nokogiri::XML::Document.parse(sample).xpath('/wrapper/foxml:datastream/foxml:datastreamVersion/foxml:xmlContent/dc').first.to_xml
|
65
|
-
z = ActiveFedora::QualifiedDublinCoreDatastream.from_xml(x1, tmpl)
|
66
|
-
y = ActiveFedora::QualifiedDublinCoreDatastream.from_xml(z.to_dc_xml, tmpl)
|
67
|
-
y.to_dc_xml.should == z.to_dc_xml
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should handle arbitrary attribs" do
|
71
|
-
tmpl = OralHistorySampleModel.new.datastreams['dublin_core']
|
72
|
-
tmpl.field :mycomplicated, :string, :xml_node=>'alt', :element_attrs=>{:foo=>'bar'}
|
73
|
-
tmpl.mycomplicated_values='fubar'
|
74
|
-
Nokogiri::XML(tmpl.to_dc_xml).should be_equivalent_to('<dc xmlns:xsi=\'http://www.w3.org/2001/XMLSchema-instance\' xmlns:dcterms=\'http://purl.org/dc/terms/\'><dcterms:alt foo=\'bar\'>fubar</dcterms:alt></dc>')
|
75
|
-
end
|
76
|
-
|
77
|
-
|
78
|
-
|
79
56
|
it "should parse dcterms and dcelements from xml" do
|
80
57
|
doc = Nokogiri::XML::Document.parse(File.open( File.dirname(__FILE__)+'/../fixtures/changeme155.xml') )
|
81
58
|
stream = doc.xpath('//foxml:datastream[@ID=\'dublin_core\']/foxml:datastreamVersion/foxml:xmlContent/dc')
|
82
59
|
ds = ActiveFedora::QualifiedDublinCoreDatastream.new(nil, nil)
|
83
60
|
n = ActiveFedora::QualifiedDublinCoreDatastream.from_xml(stream.to_xml, ds)
|
84
|
-
n.
|
85
|
-
n.
|
61
|
+
n.spatial.should == ["Boston [7013445]", "Dorchester [7013575]", "Roxbury [7015002]"]
|
62
|
+
n.title.should == ["Oral history with Frances Addelson, 1997 November 14"]
|
86
63
|
n.dirty?.should == false
|
87
64
|
|
88
65
|
end
|
@@ -102,79 +79,46 @@ describe ActiveFedora::QualifiedDublinCoreDatastream do
|
|
102
79
|
ActiveFedora::QualifiedDublinCoreDatastream.should respond_to(:new)
|
103
80
|
end
|
104
81
|
|
105
|
-
it 'should initialize an object with fields for all DC elements' do
|
106
|
-
@dc_elements.each do |el|
|
107
|
-
@test_ds.fields.should_not be_nil
|
108
|
-
@test_ds.fields.should have_key("#{el.to_s}".to_sym)
|
109
|
-
end
|
110
|
-
end
|
111
82
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
83
|
+
describe "model methods" do
|
84
|
+
|
85
|
+
DC_ELEMENTS.each do |el|
|
86
|
+
it "should respond to getters and setters for #{el} element" do
|
87
|
+
pending if el == :type
|
88
|
+
value = "Hey #{el}"
|
89
|
+
@test_ds.send("#{el.to_s}=", value)
|
90
|
+
@test_ds.send(el).first.should == value #Looking at first because creator has 2 nodes
|
91
|
+
end
|
118
92
|
end
|
119
93
|
end
|
120
94
|
|
121
95
|
end
|
122
96
|
|
123
|
-
describe '
|
124
|
-
it "should call .content= with to_dc_xml" do
|
125
|
-
result = @test_ds.to_dc_xml
|
126
|
-
@test_ds.ensure_xml_loaded
|
127
|
-
@test_ds.expects(:content=).with(result)
|
128
|
-
@test_ds.expects(:dirty?).returns(true)
|
129
|
-
@test_ds.serialize!
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
describe '.to_dc_xml' do
|
97
|
+
describe '.to_xml' do
|
134
98
|
|
135
|
-
it 'should respond to .to_dc_xml' do
|
136
|
-
@test_ds.should respond_to(:to_dc_xml)
|
137
|
-
end
|
138
|
-
|
139
|
-
|
140
|
-
#
|
141
|
-
# I think the fields should just be tracked as a Nokogiri::XML::Document internally. Too much BS otherwise.
|
142
|
-
#
|
143
|
-
|
144
|
-
|
145
99
|
it 'should output the fields hash as Qualified Dublin Core XML' do
|
100
|
+
#@test_ds.expects(:new?).returns(true).twice
|
146
101
|
sample_xml = "<dc xmlns:dcterms='http://purl.org/dc/terms/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><dcterms:title>title1</dcterms:title><dcterms:publisher>publisher1</dcterms:publisher><dcterms:creator>creator1</dcterms:creator><dcterms:creator>creator2</dcterms:creator></dc>"
|
147
|
-
|
148
|
-
|
149
|
-
@test_ds.
|
150
|
-
@test_ds.
|
151
|
-
|
152
|
-
|
153
|
-
|
102
|
+
@test_ds = ActiveFedora::QualifiedDublinCoreDatastream.new(nil, 'qdc' )
|
103
|
+
|
104
|
+
@test_ds.field :publisher
|
105
|
+
@test_ds.field :creator
|
106
|
+
@test_ds.field :title
|
107
|
+
|
108
|
+
@test_ds.publisher= ["publisher1"]
|
109
|
+
@test_ds.creator= ["creator1", "creator2"]
|
110
|
+
@test_ds.title= ["title1"]
|
111
|
+
|
112
|
+
@test_ds.to_xml.should be_equivalent_to('
|
113
|
+
<dc xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
114
|
+
<dcterms:publisher>publisher1</dcterms:publisher>
|
115
|
+
<dcterms:creator>creator1</dcterms:creator>
|
116
|
+
<dcterms:creator>creator2</dcterms:creator>
|
117
|
+
<dcterms:title>title1</dcterms:title>
|
118
|
+
</dc>')
|
154
119
|
end
|
155
120
|
|
156
|
-
it 'should not include :type information' do
|
157
|
-
@test_ds.publisher_values = ["publisher1"]
|
158
|
-
dc_xml = XmlSimple.xml_in(@test_ds.to_dc_xml)
|
159
|
-
@test_ds.fields[:publisher].should have_key(:type)
|
160
|
-
dc_xml["publisher"].should_not include("type")
|
161
|
-
end
|
162
|
-
|
163
|
-
it "should use specified :xml_node if it is available in the field Hash" do
|
164
|
-
@test_ds.stubs(:fields).returns({:myfieldname => {:values => ["sample spatial coverage"], :xml_node => "nodename" }})
|
165
|
-
Nokogiri::XML::Document.parse(@test_ds.to_dc_xml).xpath('./dc/dcterms:nodename').text.should == 'sample spatial coverage'
|
166
|
-
end
|
167
121
|
|
168
|
-
it "should use specified :xml_node if it was specified when .field was called" do
|
169
|
-
sample_xml = "<dc xmlns:dcterms='http://purl.org/dc/terms/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><dcterms:nodename>sample spatial coverage</dcterms:nodename></dc>"
|
170
|
-
@test_ds.field :myfieldname, :string, :xml_node => "nodename"
|
171
|
-
@test_ds.myfieldname_values = "sample spatial coverage"
|
172
|
-
dc_xml = XmlSimple.xml_in(@test_ds.to_dc_xml)
|
173
|
-
dc_xml.should == XmlSimple.xml_in(sample_xml)
|
174
|
-
end
|
175
|
-
|
176
|
-
it "should only apply encoding info and other qualifiers to the nodes that explicitly declare it" do
|
177
|
-
end
|
178
122
|
end
|
179
123
|
|
180
124
|
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe ActiveFedora::SolrDigitalObject do
|
4
4
|
describe "repository" do
|
5
|
-
subject { ActiveFedora::SolrDigitalObject.new({}) }
|
5
|
+
subject { ActiveFedora::SolrDigitalObject.new({},{'datastreams'=>{}}) }
|
6
6
|
describe "when not finished" do
|
7
7
|
it "should not respond_to? :repository" do
|
8
8
|
subject.should_not respond_to :repository
|
@@ -28,7 +28,7 @@ describe ActiveFedora::SolrDigitalObject do
|
|
28
28
|
after do
|
29
29
|
Object.send(:remove_const, :WithoutMetadataDs)
|
30
30
|
end
|
31
|
-
subject { ActiveFedora::SolrDigitalObject.new({'
|
31
|
+
subject { ActiveFedora::SolrDigitalObject.new({}, {'datastreams'=>{'properties'=>{'dsMIME'=>'text/xml'}}},WithoutMetadataDs) }
|
32
32
|
it "should create an xml datastream" do
|
33
33
|
subject.datastreams['properties'].should be_kind_of ActiveFedora::NokogiriDatastream
|
34
34
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15424183
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 4
|
8
8
|
- 0
|
9
9
|
- 0
|
10
10
|
- rc
|
11
|
-
-
|
12
|
-
version: 4.0.0.
|
11
|
+
- 17
|
12
|
+
version: 4.0.0.rc17
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Matt Zumwalt
|
@@ -19,7 +19,7 @@ autorequire:
|
|
19
19
|
bindir: bin
|
20
20
|
cert_chain: []
|
21
21
|
|
22
|
-
date: 2012-03-
|
22
|
+
date: 2012-03-29 00:00:00 Z
|
23
23
|
dependencies:
|
24
24
|
- !ruby/object:Gem::Dependency
|
25
25
|
prerelease: false
|
@@ -103,14 +103,14 @@ dependencies:
|
|
103
103
|
requirements:
|
104
104
|
- - ~>
|
105
105
|
- !ruby/object:Gem::Version
|
106
|
-
hash:
|
106
|
+
hash: 15424083
|
107
107
|
segments:
|
108
108
|
- 1
|
109
109
|
- 6
|
110
110
|
- 0
|
111
111
|
- rc
|
112
|
-
-
|
113
|
-
version: 1.6.0.
|
112
|
+
- 3
|
113
|
+
version: 1.6.0.rc3
|
114
114
|
version_requirements: *id006
|
115
115
|
name: om
|
116
116
|
type: :runtime
|
@@ -299,13 +299,14 @@ dependencies:
|
|
299
299
|
requirement: &id019 !ruby/object:Gem::Requirement
|
300
300
|
none: false
|
301
301
|
requirements:
|
302
|
-
- -
|
302
|
+
- - ">="
|
303
303
|
- !ruby/object:Gem::Version
|
304
|
-
hash:
|
304
|
+
hash: 43
|
305
305
|
segments:
|
306
306
|
- 2
|
307
|
+
- 9
|
307
308
|
- 0
|
308
|
-
version:
|
309
|
+
version: 2.9.0
|
309
310
|
version_requirements: *id019
|
310
311
|
name: rspec
|
311
312
|
type: :development
|
@@ -371,7 +372,6 @@ files:
|
|
371
372
|
- lib/active_fedora/associations/belongs_to_association.rb
|
372
373
|
- lib/active_fedora/associations/has_and_belongs_to_many_association.rb
|
373
374
|
- lib/active_fedora/associations/has_many_association.rb
|
374
|
-
- lib/active_fedora/attribute_methods.rb
|
375
375
|
- lib/active_fedora/base.rb
|
376
376
|
- lib/active_fedora/callbacks.rb
|
377
377
|
- lib/active_fedora/config.rb
|
@@ -432,7 +432,6 @@ files:
|
|
432
432
|
- spec/fixtures/minivan.jpg
|
433
433
|
- spec/fixtures/mixed_rdf_descMetadata.nt
|
434
434
|
- spec/fixtures/mods_articles/hydrangea_article1.xml
|
435
|
-
- spec/fixtures/oh_qdc.xml
|
436
435
|
- spec/fixtures/rails_root/config/fake_fedora.yml
|
437
436
|
- spec/fixtures/rails_root/config/fedora.yml
|
438
437
|
- spec/fixtures/rails_root/config/predicate_mappings.yml
|
@@ -593,7 +592,6 @@ test_files:
|
|
593
592
|
- spec/fixtures/minivan.jpg
|
594
593
|
- spec/fixtures/mixed_rdf_descMetadata.nt
|
595
594
|
- spec/fixtures/mods_articles/hydrangea_article1.xml
|
596
|
-
- spec/fixtures/oh_qdc.xml
|
597
595
|
- spec/fixtures/rails_root/config/fake_fedora.yml
|
598
596
|
- spec/fixtures/rails_root/config/fedora.yml
|
599
597
|
- spec/fixtures/rails_root/config/predicate_mappings.yml
|
data/spec/fixtures/oh_qdc.xml
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<wrapper xmlns:foxml="info:fedora/fedora-system:def/foxml#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
3
|
-
xsi:schemaLocation="info:fedora/fedora-system:def/foxml# http://www.fedora.info/definitions/1/0/foxml1-1.xsd">
|
4
|
-
|
5
|
-
<foxml:datastream ID='dublin_core' STATE='A' CONTROL_GROUP='X' VERSIONABLE='true'>
|
6
|
-
<foxml:datastreamVersion SIZE='1726' ID='dublin_core.0' MIMETYPE='text/xml' LABEL='' CREATED='2009-01-15T17:55:49.277Z'>
|
7
|
-
<foxml:xmlContent>
|
8
|
-
<dc xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:dcterms='http://purl.org/dc/terms/'>
|
9
|
-
<dcterms:type xsi:type='DCMITYPE'>sound</dcterms:type>
|
10
|
-
<dcterms:medium>medium</dcterms:medium>
|
11
|
-
<dcterms:rights>rights</dcterms:rights>
|
12
|
-
<dcterms:language>English</dcterms:language>
|
13
|
-
<dcterms:temporal>tmp</dcterms:temporal>
|
14
|
-
<dcterms:subject>kw1</dcterms:subject>
|
15
|
-
<dcterms:subject>kw2</dcterms:subject>
|
16
|
-
<dcterms:creator>creator</dcterms:creator>
|
17
|
-
<dcterms:title>title</dcterms:title>
|
18
|
-
<dcterms:extent>extent</dcterms:extent>
|
19
|
-
<dcterms:format>audio/x-wav</dcterms:format>
|
20
|
-
<dcterms:subject xsi:type='LCSH'>sh1</dcterms:subject>
|
21
|
-
<dcterms:subject xsi:type='LCSH'>sh2</dcterms:subject>
|
22
|
-
<dcterms:spatial>sp1</dcterms:spatial>
|
23
|
-
<dcterms:spatial>sp2</dcterms:spatial>
|
24
|
-
<dcterms:publisher>jwa</dcterms:publisher>
|
25
|
-
<dcterms:alternative>alt</dcterms:alternative>
|
26
|
-
<dcterms:description>desc</dcterms:description>
|
27
|
-
<dcterms:date>datestr</dcterms:date>
|
28
|
-
</dc>
|
29
|
-
</foxml:xmlContent>
|
30
|
-
</foxml:datastreamVersion>
|
31
|
-
</foxml:datastream>
|
32
|
-
</wrapper>
|