Differences
This shows you the differences between two versions of the page.
— | details:rda2marcr2 [2023/06/07 20:39] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Learn About: MARC Mapping ====== | ||
+ | |||
+ | //**[This page is currently under development, | ||
+ | |||
+ | Most of the notes here are written from the perspective of RDA2MARC rather than MARC2RDA. | ||
+ | |||
+ | ===== Marc Mapping window ===== | ||
+ | |||
+ | Go to [[menu: | ||
+ | |||
+ | {{: | ||
+ | |||
+ | There are two components of a MARC mapping in RIMMF: | ||
+ | * The mapping context | ||
+ | * The mapping instruction | ||
+ | |||
+ | RIMMF supports five //mapping contexts// for each element: | ||
+ | * R2M/B (RDA to MARC Bibliographic) | ||
+ | * R2M/A (RDA to MARC Authorities) | ||
+ | * As AAP ('As Authorized Access Point', | ||
+ | * M2R/B (MARC Bibliographic to RDA) | ||
+ | * M2R/A (MARC Authorities to RDA) | ||
+ | |||
+ | The current mapping context is always highlighted. In the above example, the current context is R2M/B. | ||
+ | |||
+ | The //mapping instruction// | ||
+ | |||
+ | The ' | ||
+ | - First, this context contains the mapping instruction for authority headings when they are used in bibliographic records (example, Creator Of A Work) | ||
+ | - Second, this context contains the punctuation used during the auto-composition of an entity' | ||
+ | |||
+ | [this explanation needs to be improved] | ||
+ | |||
+ | ---- | ||
+ | |||
+ | The fields available in the mapping instruction form should be self-explanatory, | ||
+ | |||
+ | **Condition** | ||
+ | |||
+ | The first column, the one without a label, is called ' | ||
+ | |||
+ | If the mapping for an element requires only one row, this column is blank. | ||
+ | |||
+ | If the mapping for an element requires two rows, the condition will be one of the following: | ||
+ | * and | ||
+ | * or | ||
+ | * 2+ | ||
+ | |||
+ | ' | ||
+ | |||
+ | ' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | The purpose of ' | ||
+ | |||
+ | ' | ||
+ | |||
+ | Note: In the event there are more than two rows in a mapping, all subsequent rows after the first must have the same ' | ||
+ | |||
+ | **Tag** | ||
+ | |||
+ | The Tag column must contain one of the following: | ||
+ | |||
+ | * A three-digit tag (Note: Do not use ' | ||
+ | * One of the following directives: ' | ||
+ | |||
+ | The directive ' | ||
+ | |||
+ | Note: when the ' | ||
+ | |||
+ | The directives ' | ||
+ | |||
+ | On the contrary, the ' | ||
+ | |||
+ | Note: when a ' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | In the example above, we see the ' | ||
+ | |||
+ | **Indicators** | ||
+ | |||
+ | These columns should contain the values to be placed in the corresponding MARC Tag; if no indicators are entered, the program will save them as undefined (As opposed to blank) | ||
+ | |||
+ | **Punct** | ||
+ | |||
+ | This column should contain the ISBD punctuation for the element. | ||
+ | |||
+ | **Subf** | ||
+ | |||
+ | This column should contain the subfield for the element in the corresponding MARC Tag. If the MARC Tag indicates a fixed field, this column should contain the position of the data element in the field (eg. Language of the work might map to 008 35, and ' | ||
+ | |||
+ | **Constant Data** | ||
+ | |||
+ | Any text entered into thee ConstData column is prepended to the user text in mapped record, with the following exceptions: | ||
+ | * If the text ends with ' | ||
+ | |||
+ | This goes at the end of my field$ | ||
+ | |||
+ | * If the text begins with ' | ||
+ | |||
+ | $2rdamedia | ||
+ | |||
+ | * To force a complete subfield to be prepended to the mapped text, prefix it with ' | ||
+ | |||
+ | ^$6880-01 | ||
+ | |||
+ | * To specify a literal ' | ||
+ | |||
+ | \$ | ||
+ | |||
+ | |||
+ | |||
+ | ===== How mapping works ===== | ||
+ | |||
+ | In RIMMF2 we have a new table called // | ||
+ | |||
+ | When a record is displayed in RIMMF2, the mapping data for each element is populated in the following order of precedence: | ||
+ | - from any mapping for that element explicitly specified in the record; or, if none, then | ||
+ | - from any mapping for that element defined by the user as a default (// | ||
+ | - whatever mapping is present for that element in the TMQ default table (// | ||
+ | |||
+ | While editing a record in RIMMF2, if the user changes a mapping, that change will be written to the record; in addition, if they press 'Make default', | ||
+ | |||
+ | When a record is saved in RIMMF2, the program fetches the mapping value for each element (based on the current context; eg. for manifestation, | ||
+ | |||
+ | If a fetched mapping matches the TMQ default (from the Properties table), no mapping is output for that element; but if the fetched mapping comes from the // | ||
+ | |||
+ | ===== Mapping and occurrences ===== | ||
+ | |||
+ | Problem: Sometimes we want Element B to be mapped to the same Tag/ | ||
+ | but with a piece of punctuation between Element A and Element B in the mapping. | ||
+ | |||
+ | Example: | ||
+ | Place of Publication: | ||
+ | Place of Publication: | ||
+ | Publisher' | ||
+ | Publisher' | ||
+ | |||
+ | Solution: Use the ' | ||
+ | 264\.1\a\/ | ||
+ | 2+ same\.1\a\; | ||
+ | |||
+ | The use of ' | ||
+ | as the preceding element, but with punctuation of ';' | ||
+ | |||
+ | 264 1 $aChicago ;$aAtlanta :$bAmerican Library Association ... | ||
+ | |||
+ | Note: If we do not want to repeat the subfield, but simply insert the punctuation, | ||
+ | For example: | ||
+ | Statement of Responsibility Relating to Title Proper: Deborah A. Fritz | ||
+ | Statement of Responsibility Relating to Title Proper: Richard J. Fritz | ||
+ | |||
+ | Omit the ' | ||
+ | 245\..\c\/ | ||
+ | 2+ same\..\\; | ||
+ | |||
+ | to get: | ||
+ | /$cDeborah A.Fritz ; Richard J. Fritz | ||
+ | |||
+ | In the second case, the mapper always adds a blank space in the position where the missing subfield normally would be found. | ||
+ | |||
+ | Implementation Issues: the mapper must watch out for differing element occurences in these ' | ||
+ | | ||
+ | |||
+ | For example, the raw record for the above looks something((element names have been shortened for readability)) like this: | ||
+ | rName=placeOfPublicationManifestation_1 ; rMap=" | ||
+ | rName=placeOfPublicationManifestation_2 ; rMap=" | ||
+ | |||
+ | A cleanup routine (normalizeMappedElements) must change the occurrence of the second element from _2 to _1 ; | ||
+ | if it does not, the tag grouper will generate a new tag because of the differing occurrence | ||
+ | |||
+ | Dependencies: | ||
+ | in the case of a '2+ same' mapping, an element order like the following | ||
+ | |||
+ | Place of Publication: | ||
+ | Name of Publisher: ALA | ||
+ | Place of Publication: | ||
+ | Name of Publisher: Grossett | ||
+ | |||
+ | will change the above mapping from | ||
+ | 264 1 $aChicago ;$aAtlanta :$bAmerican Library Association ; | ||
+ | to | ||
+ | 264 1 $aChicago :$bAmerican Library Association ;$aAtlanta ; | ||
+ | |||
+ | Although this works in the 26X, it may not work in other fields, so be careful | ||
+ | |||
+ | ===== Punctuation issues ===== | ||
+ | |||
+ | As noted above, with two elements like this: | ||
+ | Statement of Responsibility Relating to Title Proper: Deborah A. Fritz | ||
+ | Statement of Responsibility Relating to Title Proper: Richard J. Fritz | ||
+ | |||
+ | We omit the ' | ||
+ | 245\..\c\/ | ||
+ | 2+ same\..\\; | ||
+ | |||
+ | and get: | ||
+ | /$cDeborah A.Fritz ; Richard J. Fritz | ||
+ | |||
+ | In the second element, the mapper: | ||
+ | 1) knows that a semi-colon is preceded with a blank space (the isbdify subroutine), | ||
+ | 2) always adds a blank space in the position where the missing subfield normally would be found. | ||
+ | |||
+ | Perhaps the second blank space could be specified more explicitly? (by typing the blank where the subfield would go in the mapping form)? | ||
+ | |||
+ | A related problem is found when mapping Birth and Death dates in a Person. | ||
+ | For example, a raw record like this: | ||
+ | |||
+ | rName=dateOfBirthDateAssociated_1 ; rMap=" | ||
+ | rName=dateOfDeathDateAssociated_1 ; rMap=" | ||
+ | |||
+ | maps (literally) to: | ||
+ | |||
+ | 100 .. ,$d1775- - 1817 | ||
+ | |||
+ | In the Birth date, we specify a comma as preceding punct, and add the trailing dash as ConstData. We also add a blank after the trailing | ||
+ | dash so that the default (People with birthdates and not deathdates) will format correctly in headings. But if there is a Death date | ||
+ | then the default mapping adds another dash as preceding punct, plus the blank space BECAUSE NO SUBFIELD WAS SPECIFIED, resulting in '- - '. | ||
+ | |||
+ | This is fixed by a hard-coded cleanup routine in rimmfRda2Marc.postProcessRdaToMarc | ||
+ | |||
+ | ===== XX Tags ===== | ||
+ | |||
+ | ' | ||
+ | | ||
+ | |||
+ | When the mapper reaches a FID for one of these relationships, | ||
+ | on return, if the mapping Tag for the FID contains ' | ||
+ | |||
+ | Problem: the tag grouper joins RDA elements mapped to the same MARC tag, but still needs to respect the need for repeated elements to be | ||
+ | mapped to new tags. | ||
+ | |||
+ | Example: | ||
+ | rName=preferredNameForThePerson_1 ; rMap=" | ||
+ | rName=preferredNameForTheFamily_1 ; rMap=" | ||
+ | |||
+ | All of these elements map to the same MARC Tag/Subf, 500$a. | ||
+ | |||
+ | Current solution (may need refinement): | ||
+ | the above example, we look for repeated $a in either 500\1. or 500\3., but not simply in 500\.. | ||
+ | happens if we implement this indy approach willy-nilly), | ||
+ | |||
+ | ===== Implementation problems ===== | ||
+ | |||
+ | Problem: mapping uses element order in the RIMMF document. | ||
+ | |||
+ | Example 1: If user has a Work template with Title before Creator (as it is in the | ||
+ | | ||
+ | Marc21 for everyone. Fritz, Deborah. | ||
+ | |||
+ | Solution: Whenever an AAP component is a link to another document, it should go first in the AAP being composed. The autofiller will now | ||
+ | check each element, and if it find one that is a link, it will insert it (rather than append it) to the list being composed. | ||
+ | |||
+ | Example 2: In a manifestation, | ||
+ | |||
+ | Solution: The user may now ' | ||
+ | This was accomplished by adding an exception to the OnMoveTo method in rimmfDoc: the rimmfId' | ||
+ | | ||
+ | | ||
+ | |||
+ | |||