berkeley_library-marc 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/workflows/build.yml +18 -0
- data/.gitignore +388 -0
- data/.idea/inspectionProfiles/Project_Default.xml +20 -0
- data/.idea/marc.iml +101 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vcs.xml +6 -0
- data/.rubocop.yml +334 -0
- data/.ruby-version +1 -0
- data/.simplecov +8 -0
- data/.yardopts +1 -0
- data/CHANGES.md +12 -0
- data/Dockerfile +57 -0
- data/Gemfile +3 -0
- data/Jenkinsfile +18 -0
- data/LICENSE.md +21 -0
- data/README.md +4 -0
- data/Rakefile +20 -0
- data/berkeley_library-marc.gemspec +42 -0
- data/docker-compose.yml +15 -0
- data/lib/.rubocop.yml +6 -0
- data/lib/berkeley_library/marc.rb +3 -0
- data/lib/berkeley_library/marc/field_info.rb +1 -0
- data/lib/berkeley_library/marc/field_info/ctrl_fields/data/ctrl_fields_standard.txt +2143 -0
- data/lib/berkeley_library/marc/field_info/leader/data/leader_standard.txt +87 -0
- data/lib/berkeley_library/marc/field_info/var_fields.rb +46 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data.rb +4 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/mapping-orig.tsv +265 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/var_fields_berkeley_9xx.txt +53 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/var_fields_berkeley_9xx_parsed.rb +51 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/var_fields_standard.txt +5458 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/var_fields_standard_parsed.rb +6577 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/var_fields_tind_reserved.txt +44 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/var_fields_tind_reserved_parsed.rb +30 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/var_fields_ucblit_tind.txt +105 -0
- data/lib/berkeley_library/marc/field_info/var_fields/data/var_fields_ucblit_tind_parsed.rb +114 -0
- data/lib/berkeley_library/marc/field_info/var_fields/ind_def.rb +39 -0
- data/lib/berkeley_library/marc/field_info/var_fields/ind_val_def.rb +27 -0
- data/lib/berkeley_library/marc/field_info/var_fields/instrument_or_voices_code.rb +26 -0
- data/lib/berkeley_library/marc/field_info/var_fields/obsolescible.rb +55 -0
- data/lib/berkeley_library/marc/field_info/var_fields/section.rb +50 -0
- data/lib/berkeley_library/marc/field_info/var_fields/subfield_def.rb +50 -0
- data/lib/berkeley_library/marc/field_info/var_fields/subfield_val.rb +24 -0
- data/lib/berkeley_library/marc/field_info/var_fields/var_field_def.rb +62 -0
- data/lib/berkeley_library/marc/field_info/var_fields/var_field_list.rb +43 -0
- data/lib/berkeley_library/marc/field_info/var_fields/var_field_parser.rb +136 -0
- data/lib/berkeley_library/marc/field_info/var_fields/var_field_transform.rb +160 -0
- data/lib/berkeley_library/marc/module_info.rb +14 -0
- data/lib/marc_extensions.rb +1 -0
- data/lib/marc_extensions/data_field.rb +29 -0
- data/lib/marc_extensions/field_map.rb +63 -0
- data/lib/marc_extensions/record.rb +100 -0
- data/lib/marc_extensions/subfield.rb +21 -0
- data/lib/marc_extensions/xml_reader.rb +19 -0
- data/rakelib/bundle.rake +8 -0
- data/rakelib/coverage.rake +11 -0
- data/rakelib/gem.rake +54 -0
- data/rakelib/rubocop.rake +18 -0
- data/rakelib/spec.rake +2 -0
- data/spec/.rubocop.yml +37 -0
- data/spec/berkeley_library/marc/field_info/var_fields/var_field_def_spec.rb +26 -0
- data/spec/berkeley_library/marc/field_info/var_fields/var_field_parser_spec.rb +596 -0
- data/spec/berkeley_library/marc/field_info/var_fields/var_field_transform_spec.rb +173 -0
- data/spec/berkeley_library/marc/field_info/var_fields_spec.rb +112 -0
- data/spec/data/field_info/vf_046.txt +32 -0
- data/spec/data/field_info/vf_048.txt +112 -0
- data/spec/data/record-187888.xml +78 -0
- data/spec/marc_extensions/data_field_spec.rb +13 -0
- data/spec/marc_extensions/record_spec.rb +211 -0
- data/spec/spec_helper.rb +27 -0
- metadata +354 -0
@@ -0,0 +1,173 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module BerkeleyLibrary
|
4
|
+
module Marc
|
5
|
+
module FieldInfo
|
6
|
+
module VarFields
|
7
|
+
describe VarFieldTransform do
|
8
|
+
let(:parse_tree) do
|
9
|
+
{
|
10
|
+
doc_comments: [
|
11
|
+
{ comment: 'A doc comment' },
|
12
|
+
{ comment: 'TODO: a TODO' }
|
13
|
+
],
|
14
|
+
sections: [
|
15
|
+
{
|
16
|
+
desc: 'Number and Code Fields (01X-04X)',
|
17
|
+
var_fields: [
|
18
|
+
{
|
19
|
+
tag: '010',
|
20
|
+
desc: 'LIBRARY OF CONGRESS CONTROL NUMBER (NR)',
|
21
|
+
indicators: [
|
22
|
+
{
|
23
|
+
desc: 'Undefined',
|
24
|
+
ind1: [{ val: '#', desc: 'Undefined' }]
|
25
|
+
},
|
26
|
+
{
|
27
|
+
desc: 'Undefined',
|
28
|
+
ind2: [{ val: '#', desc: 'Undefined' }]
|
29
|
+
}
|
30
|
+
],
|
31
|
+
subfield_codes: [
|
32
|
+
{ code: 'a', desc: 'LC control number (NR)', values: [] },
|
33
|
+
{ code: '8', desc: 'Field link and sequence number (R)', values: [] }
|
34
|
+
]
|
35
|
+
},
|
36
|
+
{
|
37
|
+
tag: '034',
|
38
|
+
desc: 'CODED CARTOGRAPHIC MATHEMATICAL DATA (R)',
|
39
|
+
indicators: [
|
40
|
+
{ desc: 'Type of scale',
|
41
|
+
ind1: [
|
42
|
+
{ val: '0', desc: 'Scale indeterminable/No scale recorded' },
|
43
|
+
{ val: '1', desc: 'Single scale' }
|
44
|
+
] },
|
45
|
+
{
|
46
|
+
desc: 'Type of ring',
|
47
|
+
ind2: [
|
48
|
+
{ val: '0', desc: 'Outer ring' },
|
49
|
+
{ val: '1', desc: 'Exclusion ring' }
|
50
|
+
]
|
51
|
+
}
|
52
|
+
],
|
53
|
+
subfield_codes: [
|
54
|
+
{
|
55
|
+
code: 'a',
|
56
|
+
desc: 'Category of scale (NR)',
|
57
|
+
values: [
|
58
|
+
{ val: 'a', desc: 'Linear scale' },
|
59
|
+
{ val: 'b', desc: 'Angular scale' }
|
60
|
+
]
|
61
|
+
},
|
62
|
+
{ code: 'b', desc: 'Constant ratio linear horizontal scale (R)', values: [] },
|
63
|
+
{ code: 'c', desc: 'Constant ratio linear vertical scale (R)', values: [] },
|
64
|
+
{ code: 'd', desc: 'Coordinates--westernmost longitude (NR)', values: [] }
|
65
|
+
]
|
66
|
+
},
|
67
|
+
{
|
68
|
+
tag: '048',
|
69
|
+
desc: 'NUMBER OF MUSICAL INSTRUMENTS OR VOICES CODE (R)',
|
70
|
+
indicators: [
|
71
|
+
{
|
72
|
+
desc: 'Undefined',
|
73
|
+
ind1: [{ val: '#', desc: 'Undefined' }]
|
74
|
+
},
|
75
|
+
{
|
76
|
+
desc: 'Source of code',
|
77
|
+
ind2: [{ val: '7', desc: 'Source specified in subfield $2' }]
|
78
|
+
}
|
79
|
+
],
|
80
|
+
subfield_codes: [
|
81
|
+
{ code: 'a', desc: 'Performer or ensemble (R)', values: [] },
|
82
|
+
{ code: '8', desc: 'Field link and sequence number (R)', values: [] }
|
83
|
+
],
|
84
|
+
inst_or_voices_codes: [
|
85
|
+
{ val: 'bc', desc: 'Brass--Cornet' },
|
86
|
+
{ val: 'bd', desc: 'Brass--Trombone' }
|
87
|
+
]
|
88
|
+
}
|
89
|
+
]
|
90
|
+
},
|
91
|
+
{
|
92
|
+
desc: 'Classification and Call Number Fields (05X-08X)',
|
93
|
+
var_fields: [
|
94
|
+
{
|
95
|
+
tag: '050',
|
96
|
+
desc: 'LIBRARY OF CONGRESS CALL NUMBER (R)',
|
97
|
+
indicators: [
|
98
|
+
{
|
99
|
+
desc: 'Existence in LC collection',
|
100
|
+
ind1: [
|
101
|
+
{ val: '0', desc: 'Item is in LC' },
|
102
|
+
{ val: '1', desc: 'Item is not in LC' }
|
103
|
+
]
|
104
|
+
},
|
105
|
+
{
|
106
|
+
desc: 'Source of call number',
|
107
|
+
ind2: [
|
108
|
+
{ val: '0', desc: 'Assigned by LC' },
|
109
|
+
{ val: '4', desc: 'Assigned by agency other than LC' }
|
110
|
+
]
|
111
|
+
},
|
112
|
+
{
|
113
|
+
desc: 'Series call number (SE) [OBSOLETE]',
|
114
|
+
ind2: [
|
115
|
+
{ val: '0', desc: 'No series involved' },
|
116
|
+
{ val: '1', desc: 'Main series' }
|
117
|
+
]
|
118
|
+
}
|
119
|
+
],
|
120
|
+
subfield_codes: [
|
121
|
+
{ code: 'a', desc: 'Classification number (R)', values: [] },
|
122
|
+
{ code: 'b', desc: 'Item number (NR)', values: [] }
|
123
|
+
]
|
124
|
+
}
|
125
|
+
]
|
126
|
+
}
|
127
|
+
]
|
128
|
+
}
|
129
|
+
end
|
130
|
+
let(:xform) { VarFieldTransform.new }
|
131
|
+
|
132
|
+
it 'transforms a comment' do
|
133
|
+
comment = { comment: 'A doc comment' }
|
134
|
+
expect(xform.apply(comment)).to eq(comment[:comment])
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'transforms a value' do
|
138
|
+
ind_val = { val: '1', desc: 'Main series' }
|
139
|
+
expect(xform.apply(ind_val)).to be_a(VarFieldTransform::AnyValue)
|
140
|
+
end
|
141
|
+
|
142
|
+
it 'transforms an indicator definition' do
|
143
|
+
ind_def = {
|
144
|
+
desc: 'Source of call number',
|
145
|
+
ind2: [
|
146
|
+
{ val: '0', desc: 'Assigned by LC' },
|
147
|
+
{ val: '4', desc: 'Assigned by agency other than LC' }
|
148
|
+
]
|
149
|
+
}
|
150
|
+
expect(xform.apply(ind_def)).to be_a(IndDef)
|
151
|
+
end
|
152
|
+
|
153
|
+
# TODO: test range
|
154
|
+
it 'transforms a subfield definition' do
|
155
|
+
sf_code_def = { code: 'a', desc: 'Performer or ensemble (R)', values: [] }
|
156
|
+
expect(xform.apply(sf_code_def)).to be_a(SubfieldDef)
|
157
|
+
end
|
158
|
+
|
159
|
+
it 'transforms a section' do
|
160
|
+
section = parse_tree[:sections][0]
|
161
|
+
result = xform.apply(section)
|
162
|
+
expect(result).to be_a(Section)
|
163
|
+
end
|
164
|
+
|
165
|
+
it 'transforms a complete parse tree' do
|
166
|
+
result = xform.apply(parse_tree)
|
167
|
+
expect(result).to be_a(VarFieldList)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'berkeley_library/marc/field_info/var_fields'
|
3
|
+
|
4
|
+
module BerkeleyLibrary
|
5
|
+
module Marc
|
6
|
+
module FieldInfo
|
7
|
+
describe VarFields do
|
8
|
+
|
9
|
+
describe :standard do
|
10
|
+
let(:standard) { VarFields.standard }
|
11
|
+
|
12
|
+
it 'loads all standard fields' do
|
13
|
+
expect(standard).to be_a(VarFields::VarFieldList)
|
14
|
+
expect(standard.size).to eq(239) # TODO: more assertions
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'defines each tag only once' do
|
18
|
+
by_tag = {}
|
19
|
+
standard.each { |vf| (by_tag[vf.tag] ||= []) << vf }
|
20
|
+
aggregate_failures 'duplicate tags' do
|
21
|
+
by_tag.each do |tag, ff|
|
22
|
+
expect(ff.size).to eq(1), "Expected 1 definition for tag #{tag}, got #{ff.map { |vf| vf.to_s.inspect }.join(', ')}"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'by default, includes no obsolete anything' do
|
28
|
+
aggregate_failures 'obsolete stuff' do
|
29
|
+
standard.each do |vf|
|
30
|
+
expect(vf).not_to be_obsolete
|
31
|
+
expect(vf.desc).not_to include('OBSOLETE')
|
32
|
+
|
33
|
+
vf.indicators.each do |ind|
|
34
|
+
expect(ind).not_to be_obsolete
|
35
|
+
expect(ind.desc).not_to include('OBSOLETE')
|
36
|
+
|
37
|
+
ind.val_defs.each do |v|
|
38
|
+
expect(v).not_to be_obsolete
|
39
|
+
expect(v.desc).not_to include('OBSOLETE')
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
vf.subfield_codes.each do |sf|
|
44
|
+
expect(sf).not_to be_obsolete
|
45
|
+
expect(sf.desc).not_to include('OBSOLETE')
|
46
|
+
|
47
|
+
sf.each_value do |v|
|
48
|
+
expect(v).not_to be_obsolete
|
49
|
+
expect(v.desc).not_to include('OBSOLETE')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
vf.inst_or_voices_codes.each do |c|
|
54
|
+
expect(c).not_to be_obsolete
|
55
|
+
expect(c.desc).not_to include('OBSOLETE')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'returns obsolete fields with a flag' do
|
62
|
+
lines_actual = VarFields.standard(obsolete: true).to_s.lines(chomp: true).map(&:strip)
|
63
|
+
|
64
|
+
var_fields_standard_txt = File.read('lib/berkeley_library/marc/field_info/var_fields/data/var_fields_standard.txt')
|
65
|
+
lines_expected = var_fields_standard_txt
|
66
|
+
.lines(chomp: true)
|
67
|
+
.map(&:strip)
|
68
|
+
.reject { |line| line.empty? || line.start_with?('//') }
|
69
|
+
|
70
|
+
expect(lines_actual.size).to eq(lines_expected.size)
|
71
|
+
lines_expected.each_with_index do |l_ex, i|
|
72
|
+
# typo in standard.txt definition of 880 subfields
|
73
|
+
l_ex = l_ex.sub('Same', '- Same') if i >= 5052 && i <= 5056
|
74
|
+
expect(lines_actual[i]).to eq(l_ex), "Wrong value at line #{i}:\n\texpected: #{l_ex}, actual: #{lines_actual[i]}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe 'custom fields' do
|
81
|
+
describe :berkeley_9xx do
|
82
|
+
let(:berkeley_9xx) { VarFields.berkeley_9xx }
|
83
|
+
|
84
|
+
it 'loads all berkeley_9xx fields' do
|
85
|
+
expect(berkeley_9xx).to be_a(VarFields::VarFieldList)
|
86
|
+
expect(berkeley_9xx.size).to eq(25) # TODO: more assertions
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# TODO: get these working
|
91
|
+
xdescribe :tind_reserved do
|
92
|
+
let(:tind_reserved) { VarFields.tind_reserved }
|
93
|
+
|
94
|
+
it 'loads all tind_reserved fields' do
|
95
|
+
expect(tind_reserved).to be_a(VarFields::VarFieldList)
|
96
|
+
expect(tind_reserved.size).to eq(4) # TODO: more assertions
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
xdescribe :berkeley_tind do
|
101
|
+
let(:berkeley_tind) { VarFields.berkeley_tind }
|
102
|
+
|
103
|
+
it 'loads all berkeley_tind fields' do
|
104
|
+
expect(berkeley_tind).to be_a(VarFields::VarFieldList)
|
105
|
+
expect(berkeley_tind.size).to eq(9) # TODO: more assertions
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
046 - SPECIAL CODED DATES (R)
|
2
|
+
Indicators
|
3
|
+
First - Undefined
|
4
|
+
# - Undefined
|
5
|
+
Second - Undefined
|
6
|
+
# - Undefined
|
7
|
+
Subfield Codes
|
8
|
+
$a - Type of date code (NR)
|
9
|
+
i - Inclusive dates of collection
|
10
|
+
k - Bulk of collection
|
11
|
+
m - Multiple dates
|
12
|
+
n - Unknown dates
|
13
|
+
p - Distribution/release/issue and production/recording session dates
|
14
|
+
q - Questionable date
|
15
|
+
r - Reissue and originaldates
|
16
|
+
s - Single known/probable date
|
17
|
+
t - Publication date and copyright dates
|
18
|
+
x - Incorrect dates
|
19
|
+
$b - Date 1 (B.C.E. date) (NR)
|
20
|
+
$c - Date 1 (C.E. date) (NR)
|
21
|
+
$d - Date 2 (B.C.E. date) (NR)
|
22
|
+
$e - Date 2 (C.E. date) (NR)
|
23
|
+
$j - Date resource modified (NR)
|
24
|
+
$k - Beginning or single date created (NR)
|
25
|
+
$l - Ending date created (NR)
|
26
|
+
$m - Beginning of date valid (NR)
|
27
|
+
$o - Single or starting date for aggregated content (NR)
|
28
|
+
$p - Ending date for aggregated content (NR)
|
29
|
+
$n - End of date valid (NR)
|
30
|
+
$2 - Source of date (NR)
|
31
|
+
$6 - Linkage (NR)
|
32
|
+
$8 - Field link and sequence number (R)
|
@@ -0,0 +1,112 @@
|
|
1
|
+
048 - NUMBER OF MUSICAL INSTRUMENTS OR VOICES CODE (R)
|
2
|
+
Indicators
|
3
|
+
First - Undefined
|
4
|
+
# - Undefined
|
5
|
+
Second - Source of code
|
6
|
+
# - MARC code
|
7
|
+
7 - Source specified in subfield $2
|
8
|
+
Subfield Codes
|
9
|
+
$a - Performer or ensemble (R)
|
10
|
+
$b - Soloist (R)
|
11
|
+
$2 - Source of code (NR)
|
12
|
+
$8 - Field link and sequence number (R)
|
13
|
+
Instrument or Voices Codes
|
14
|
+
ba - Brass - Horn
|
15
|
+
bb - Brass--Trumpet
|
16
|
+
bc - Brass--Cornet
|
17
|
+
bd - Brass--Trombone
|
18
|
+
be - Brass--Tuba
|
19
|
+
bf - Brass--Baritone
|
20
|
+
bn - Brass--Unspecified
|
21
|
+
bu - Brass--Unknown
|
22
|
+
by - Brass--Ethnic
|
23
|
+
bz - Brass--Other
|
24
|
+
ca - Choruses--Mixed
|
25
|
+
cb - Choruses--Women's
|
26
|
+
cc - Choruses--Men's
|
27
|
+
cd - Choruses--Children's
|
28
|
+
cn - Choruses--Unspecified
|
29
|
+
cu - Choruses--Unknown
|
30
|
+
cy - Choruses--Ethnic
|
31
|
+
ea - Electronic--Synthesizer
|
32
|
+
eb - Electronic--Tape
|
33
|
+
ec - Electronic--Computer
|
34
|
+
ed - Electronic--Ondes Martinot
|
35
|
+
en - Electronic--Unspecified
|
36
|
+
eu - Electronic--Unknown
|
37
|
+
ez - Electronic--Other
|
38
|
+
ka - Keyboard--Piano
|
39
|
+
kb - Keyboard--Organ
|
40
|
+
kc - Keyboard--Harpsichord
|
41
|
+
kd - Keyboard--Clavichord
|
42
|
+
ke - Keyboard--Continuo
|
43
|
+
kf - Keyboard--Celeste
|
44
|
+
kn - Keyboard--Unspecified
|
45
|
+
ku - Keyboard--Unknown
|
46
|
+
ky - Keyboard--Ethnic
|
47
|
+
kz - Keyboard--Other
|
48
|
+
oa - Larger ensemble--Full orchestra
|
49
|
+
ob - Larger ensemble--Chamber orch.
|
50
|
+
oc - Larger ensemble--String orchestra
|
51
|
+
od - Larger ensemble--Band
|
52
|
+
oe - Larger ensemble--Dance orchestra
|
53
|
+
of - Larger ensemble--Brass band
|
54
|
+
on - Larger ensemble--Unspecified
|
55
|
+
ou - Larger ensemble--Unknown
|
56
|
+
oy - Larger ensemble--Ethnic
|
57
|
+
oz - Larger ensemble--Other
|
58
|
+
pa - Percussion--Timpani
|
59
|
+
pb - Percussion--Xylophone
|
60
|
+
pc - Percussion--Marimba
|
61
|
+
pd - Percussion--Drum
|
62
|
+
pn - Percussion--Unspecified
|
63
|
+
pu - Percussion--Unknown
|
64
|
+
py - Percussion--Ethnic
|
65
|
+
pz - Percussion--Other
|
66
|
+
sa - Strings, bowed--Violin
|
67
|
+
sb - Strings, bowed--Viola
|
68
|
+
sc - Strings, bowed--Violoncello
|
69
|
+
sd - Strings, bowed--Double bass
|
70
|
+
se - Strings, bowed--Viol
|
71
|
+
sf - Strings, bowed--Viola d'amore
|
72
|
+
sg - Strings, bowed--Viola da gamba
|
73
|
+
sn - Strings, bowed--Unspecified
|
74
|
+
su - Strings, bowed--Unknown
|
75
|
+
sy - Strings, bowed--Ethnic
|
76
|
+
sz - Strings, bowed--Other
|
77
|
+
ta - Strings, plucked--Harp
|
78
|
+
tb - Strings, plucked--Guitar
|
79
|
+
tc - Strings, plucked--Lute
|
80
|
+
td - Strings, plucked--Mandolin
|
81
|
+
tn - Strings, plucked--Unspecified
|
82
|
+
tu - Strings, plucked--Unknown
|
83
|
+
ty - Strings, plucked--Ethnic
|
84
|
+
tz - Strings, plucked--Other
|
85
|
+
va - Voices--Soprano
|
86
|
+
vb - Voices--Mezzo Soprano
|
87
|
+
vc - Voices--Alto
|
88
|
+
vd - Voices--Tenor
|
89
|
+
ve - Voices--Baritone
|
90
|
+
vf - Voices--Bass
|
91
|
+
vg - Voices--Counter tenor
|
92
|
+
vh - Voices--High voice
|
93
|
+
vi - Voices--Medium voice
|
94
|
+
vj - Voices--Low voice
|
95
|
+
vn - Voices--Unspecified
|
96
|
+
vu - Voices--Unknown
|
97
|
+
vy - Voices--Ethnic
|
98
|
+
wa - Woodwinds--Flute
|
99
|
+
wb - Woodwinds--Oboe
|
100
|
+
wc - Woodwinds--Clarinet
|
101
|
+
wd - Woodwinds--Bassoon
|
102
|
+
we - Woodwinds--Piccolo
|
103
|
+
wf - Woodwinds--English horn
|
104
|
+
wg - Woodwinds--Bass clarinet
|
105
|
+
wh - Woodwinds--Recorder
|
106
|
+
wi - Woodwinds--Saxophone
|
107
|
+
wn - Woodwinds--Unspecified
|
108
|
+
wu - Woodwinds--Unknown
|
109
|
+
wy - Woodwinds--Ethnic
|
110
|
+
wz - Woodwinds--Other
|
111
|
+
zn - Unspecified instruments
|
112
|
+
zu - Unknown
|
@@ -0,0 +1,78 @@
|
|
1
|
+
|
2
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
3
|
+
<collection xmlns="http://www.loc.gov/MARC21/slim">
|
4
|
+
<record>
|
5
|
+
<controlfield tag="001">187888</controlfield>
|
6
|
+
<controlfield tag="005">20201109133856.0</controlfield>
|
7
|
+
<datafield tag="024" ind1="8" ind2="0">
|
8
|
+
<subfield code="a">BANC FILM 2216: 82.3</subfield>
|
9
|
+
</datafield>
|
10
|
+
<datafield tag="035" ind1=" " ind2=" ">
|
11
|
+
<subfield code="a">ethnodocs_cubanc_57_1_00188380</subfield>
|
12
|
+
</datafield>
|
13
|
+
<datafield tag="245" ind1=" " ind2=" ">
|
14
|
+
<subfield code="a">Notes on Cupeño grammar, II (198 pp.). <ref actuate="onrequest" show="replace" target="fnote120">[Note 120]</ref></subfield>
|
15
|
+
</datafield>
|
16
|
+
|
17
|
+
<datafield tag="336" ind1=" " ind2=" ">
|
18
|
+
<subfield code="a">Text</subfield>
|
19
|
+
</datafield>
|
20
|
+
<datafield tag="505" ind1=" " ind2=" ">
|
21
|
+
<subfield code="a">PDF 1: Grammar notes</subfield>
|
22
|
+
</datafield>
|
23
|
+
<datafield tag="505" ind1=" " ind2=" ">
|
24
|
+
<subfield code="a">PDF 1: Filename: cubanc82_3_1.pdf</subfield>
|
25
|
+
</datafield>
|
26
|
+
<datafield tag="505" ind1=" " ind2=" ">
|
27
|
+
<subfield code="a">PDF 1: BANC FILM 2216: 82.3.1</subfield>
|
28
|
+
</datafield>
|
29
|
+
<datafield tag="505" ind1=" " ind2=" ">
|
30
|
+
<subfield code="a">PDF 2: Grammar notes</subfield>
|
31
|
+
</datafield>
|
32
|
+
<datafield tag="505" ind1=" " ind2=" ">
|
33
|
+
<subfield code="a">PDF 2: Filename: cubanc82_3_2.pdf</subfield>
|
34
|
+
</datafield>
|
35
|
+
<datafield tag="505" ind1=" " ind2=" ">
|
36
|
+
<subfield code="a">PDF 2: BANC FILM 2216: 82.3.2</subfield>
|
37
|
+
</datafield>
|
38
|
+
<datafield tag="540" ind1=" " ind2=" ">
|
39
|
+
<subfield code="a">Researchers may make free and open use of the UC Berkeley Library’s digitized public domain materials. However, some materials in our online collections may be protected by U.S. copyright law (Title 17, U.S.C.). Use or reproduction of materials protected by copyright beyond that allowed by fair use (Title 17, U.S.C. § 107) requires permission from the copyright owners. The use or reproduction of some materials may also be restricted by terms of University of California gift or purchase agreements, privacy and publicity rights, or trademark law. Responsibility for determining rights status and permissibility of any use or reproduction rests exclusively with the researcher. To learn more or make inquiries, please see our permissions policies (https://www.lib.berkeley.edu/about/permissions-policies).</subfield>
|
40
|
+
</datafield>
|
41
|
+
<datafield tag="852" ind1=" " ind2=" ">
|
42
|
+
<subfield code="c">The Bancroft Library</subfield>
|
43
|
+
</datafield>
|
44
|
+
<datafield tag="856" ind1="4" ind2=" ">
|
45
|
+
<subfield code="y">PDF 1: Grammar notes</subfield>
|
46
|
+
<subfield code="9">4a939fe2-2665-4c67-832b-b0e5267db449</subfield>
|
47
|
+
<subfield code="s">46606766</subfield>
|
48
|
+
<subfield code="u">http://digicoll.lib.berkeley.edu/record/187888/files/cubanc82_3_1.pdf</subfield>
|
49
|
+
</datafield>
|
50
|
+
<datafield tag="856" ind1="4" ind2=" ">
|
51
|
+
<subfield code="y">PDF 2: Grammar notes</subfield>
|
52
|
+
<subfield code="9">0aacdd29-b467-4c5c-93ab-415069f431c0</subfield>
|
53
|
+
<subfield code="s">56588923</subfield>
|
54
|
+
<subfield code="u">http://digicoll.lib.berkeley.edu/record/187888/files/cubanc82_3_2.pdf</subfield>
|
55
|
+
</datafield>
|
56
|
+
<datafield tag="901" ind1=" " ind2=" ">
|
57
|
+
<subfield code="a">ark:/28722/bk00153517n</subfield>
|
58
|
+
<subfield code="g">57:1</subfield>
|
59
|
+
</datafield>
|
60
|
+
<datafield tag="902" ind1=" " ind2=" ">
|
61
|
+
<subfield code="n">DZ</subfield>
|
62
|
+
<subfield code="d">2020-11-09 13:28:11</subfield>
|
63
|
+
</datafield>
|
64
|
+
<datafield tag="902" ind1=" " ind2=" ">
|
65
|
+
<subfield code="f">cubanc_57_1_00188380.xml</subfield>
|
66
|
+
</datafield>
|
67
|
+
<datafield tag="980" ind1=" " ind2=" ">
|
68
|
+
<subfield code="a">EthnoDocs: Ethno Docs</subfield>
|
69
|
+
</datafield>
|
70
|
+
<datafield tag="982" ind1=" " ind2=" ">
|
71
|
+
<subfield code="a">Ethnological Documents</subfield>
|
72
|
+
<subfield code="b">Ethnological Documents of the Department and Museum of Anthropology, University of California, Berkeley, 1875-1958</subfield>
|
73
|
+
</datafield>
|
74
|
+
<datafield tag="991" ind1=" " ind2=" ">
|
75
|
+
<subfield code="a">Restricted2Bancroft</subfield>
|
76
|
+
</datafield>
|
77
|
+
</record>
|
78
|
+
</collection>
|