-
Notifications
You must be signed in to change notification settings - Fork 10
Mapping rules
Given the MARC record:
245 $aTitle / $cName
500 $aA$aB$aC$xD
650 $aAlpha
650 $aBeta
650 $aGamma
999 $aX$aY
999 $aZ
245 has only unique subfield codes
245 $aTitle / $cName
Fix | Result |
---|---|
marc_map(245, title) marc_spec(245, title) |
title: "Title / Name" |
marc_map(245a, title) marc_map(245$a, title) marc_spec(245$a, title) |
title: "Title / " |
marc_map(245ac, title) marc_map(245$a$c, title) marc_spec(245$a$c, title) |
title: "Title / Name" |
marc_map(245ca, title) marc_map(245$c$a, title) marc_spec(245$c$a, title) |
title: "Title / Name" |
marc_map(245ca, title, pluck:1) marc_map(245$c$a, title, pluck:1) marc_spec(245$c$a, title, pluck:1) |
title: "NameTitle / " |
marc_map(245ca, title, pluck:1, join:" ") marc_map(245$c$a, title, pluck:1, join:" ") marc_spec(245$c$a, title, pluck:1, join:" ") |
title: "Name Title / " |
marc_spec(245$a, title, invert:1) | title: "Name" |
Append adds the result to a list
Fix | Result |
---|---|
marc_map(245, title.$append) marc_spec(245, title.$append) |
title: ["Title / Name"] |
marc_map(245a, title.$append) marc_map(245$a, title.$append) marc_spec(245$a, title.$append) |
title: ["Title / "] |
Split creates a list out of subfields
Fix | Result |
---|---|
marc_map(245, title, split:1) marc_spec(245, title, split:1) |
title: ["Title / ", "Name"] |
marc_map(245, title.$append, split:1) marc_spec(245, title.$append, split:1) |
title: [["Title / ", "Name"]] |
Nest creates a list for every field found
Fix | Result |
---|---|
marc_map(245, title, split:1, nested_arrays:1) marc_spec(245, title, split:1, nested_arrays:1) |
title: [["Title / ", "Name"]] |
marc_map(245, title.$append, split:1, nested_arrays:1) marc_spec(245, title.$append, split:1, nested_arrays:1) |
title: [[["Title / ", "Name"]]] |
Field 500 has repeated subfields
500 $aA$aB$aC$xD
Fix | Result |
---|---|
marc_map(500, note) marc_spec(500, note) |
note: "ABCD" |
marc_map(500a, note) marc_map(500$a, note) marc_spec(500$a, note) |
note: "ABC" |
marc_spec(500$a, note, invert:1) | note: "D" |
Append adds the result to a list
Fix | Result |
---|---|
marc_map(500, note.$append) marc_spec(500, note.$append) |
note: ["ABCD"] |
marc_map(500a, note.$append) marc_spec(500$a, note.$append) |
note: ["ABC"] |
marc_spec(500$a, note.$append, invert:1) | note: ["D"] |
Split creates a list out of subfields
Fix | Result |
---|---|
marc_map(500, note, split:1) |
note: ["A", "B", "C", "D"] |
marc_map(500a, note, split:1) marc_map(500$a, note, split:1) marc_spec(500$a, note, split:1) |
note: ["A", "B", "C"] |
marc_map(500a, note.$append, split:1) marc_map(500$a, note.$append, split:1) marc_spec(500$a, note.$append, split:1) |
note : [["A", "B", "C"]] |
Nest creates a list for every field found
Fix | Result |
---|---|
marc_map(500a, note, split:1, nested_arrays:1) marc_map(500$a, note, split:1, nested_arrays:1) marc_spec(500$a, note, split:1, nested_arrays:1) |
note: [["A", "B", "C"]] |
marc_map(500a, note.$append, split:1, nested_arrays: 1) marc_map(500$a, note.$append, split:1, nested_arrays: 1) marc_spec(500$a, note.$append, split:1, nested_arrays: 1) |
note : [[["A", "B", "C"]]] |
Field 650 is repeated
650 $aAlpha
650 $aBeta
650 $aGamma
Fix | Result |
---|---|
marc_map(650, subject) marc_spec(650, subject) |
subject: "AlphaBetaGamma" |
marc_map(650a, subject) marc_map(650$a, subject) marc_spec(650$a, subject) |
subject: "AlphaBetaGamma" |
Append adds the result to a list
Fix | Result |
---|---|
marc_map(650a, subject.$append) marc_map(650$a, subject.$append) marc_spec(650$a, subject.$append) |
subject: ["Alpha", "Beta", "Gamma"] |
Split creates a list out of subfields
Fix | Result |
---|---|
marc_map(650a, subject, split:1) marc_map(650$a, subject, split:1) marc_spec(650$a, subject, split:1) |
subject: ["Alpha", "Beta", "Gamma"] |
marc_map(650a, subject.$append, split:1) marc_map(650$a, subject.$append, split:1) marc_spec(650$a, subject.$append, split:1) |
subject: [["Alpha", "Beta", "Gamma"]] |
Nest creates a list for every field found
Fix | Result |
---|---|
marc_map(650a, subject, split:1, nested_arrays:1) marc_map(650$a, subject, split:1, nested_arrays:1) marc_spec(650$a, subject, split:1, nested_arrays:1) |
subject: [["Alpha"], ["Beta"], ["Gamma"]] |
marc_map(650a, subject.$append, split:1, nested_arrays:1) marc_map(650$a, subject.$append, split:1, nested_arrays:1) marc_spec(650$a, subject.$append, split:1, nested_arrays:1) |
subject: [[["Alpha"], ["Beta"], ["Gamma"]]] |
Field 999 has repeated fields and subfields
999 $aX$aY
999 $aZ
Fix | Result |
---|---|
marc_map(999, local) marc_spec(999, local) |
local: "XYZ" |
marc_map(999a, local) marc_map(999$a, local) marc_spec(999$a, local) |
local: "XYZ" |
Append adds the result to a list
Fix | Result |
---|---|
marc_map(999a, local.$append) marc_map(999$a, local.$append) marc_spec(999$a, local.$append) |
local: ["XY", "Z"] |
Split creates a list out of subfields
Fix | Result |
---|---|
marc_map(999a, local, split:1) marc_map(999$a, local, split:1) marc_spec(999$a, local, split:1) |
local: ["X", "Y", "Z"] |
marc_map(999a, local.$append, split:1) marc_map(999$a, local.$append, split:1) marc_spec(999$a, local.$append, split:1) |
local: [["X", "Y", "Z"]] |
Nest creates a list for every field found
Fix | Result |
---|---|
marc_map(999a, local, split:1, nested_arrays:1) marc_map(999$a, local, split:1, nested_arrays:1) marc_spec(999$a, local, split:1, nested_arrays:1) |
local: [["X", "Y"], ["Z"]] |
marc_map(999a, local.$append, split:1, nested_arrays:1) marc_map(999$a, local.$append, split:1, nested_arrays:1) marc_spec(999$a, local.$append, split:1, nested_arrays:1) |
local: [[["X", "Y"], ["Z"]]] |
The dot (.) is a wildcard
(...) means take any field
245 $aTitle / $cName
500 $aA$aB$aC$xD
650 $aAlpha
650 $aBeta
650 $aGamma
999 $aX$aY
999 $aZ
Fix | Result |
---|---|
marc_map(..., all) marc_spec(..., all) |
all: "Title / NameABCDAlphaBetaGammaXYZ" |
marc_map(...a, all) marc_map(...$a, all) marc_spec(...$a, all) |
all: "Title / ABCAlphaBetaGammaXYZ" |
marc_spec(...$a, invert:1) | all: "Name" |
Append adds the result to a list
Fix | Result |
---|---|
marc_map(...a, all.$append) marc_map(...$a, all.$append) marc_spec(...$a, all.$append) |
all: ["Title / ", "ABC", "Alpha", "Beta", "Gamma", "XY", "Z"] |
Split creates a list out of subfields
Fix | Result |
---|---|
marc_map(...a, all, split:1) marc_map(...$a, all, split:1) marc_spec(...$a, all, split:1) |
all: ["Title / ", "A", "B", "C", "Alpha", "Beta", "Gamma", "X", "Y", "Z"] |
marc_map(...a, all.$append, split:1) marc_map(...$a, all.$append, split:1) marc_spec(...$a, all.$append, split:1) |
all: [["Title / ", "A", "B", "C", "Alpha", "Beta", "Gamma", "X", "Y", "Z"]] |
Nest creates a list for every field found
Fix | Result |
---|---|
marc_map(...a, all, split:1, nested_arrays:1) marc_map(...$a, all, split:1, nested_arrays:1) marc_spec(...$a, all, split:1, nested_arrays:1) |
all: [["Title / "], ["A", "B", "C"], ["Alpha"], ["Beta"], ["Gamma"], ["X", "Y"], ["Z"]] |
marc_map(...a, all.$append, split:1, nested_arrays:1) marc_map(...$a, all.$append, split:1, nested_arrays:1) marc_spec(...$a, all.$append, split:1, nested_arrays:1) |
all: [[["Title / "], ["A", "B", "C"], ["Alpha"], ["Beta"], ["Gamma"], ["X", "Y"], ["Z"]]] |