Skip to content

Commit

Permalink
Implementing MARC Update No. 36 (June 2023) #333
Browse files Browse the repository at this point in the history
  • Loading branch information
pkiraly committed Oct 23, 2023
1 parent 65716f5 commit a62b43b
Show file tree
Hide file tree
Showing 7 changed files with 363 additions and 0 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

## v0.8.0

### New features

- [\#326](https://github.com/pkiraly/qa-catalogue/issues/326) Use GETOPT for the command line scripts
- [\#103](https://github.com/pkiraly/qa-catalogue/issues/103) Implementing MARC Update No. 31, December 2020
- [\#104](https://github.com/pkiraly/qa-catalogue/issues/104) Implementing MARC Update No. 32, June 2021
- [\#330](https://github.com/pkiraly/qa-catalogue/issues/330) Implementing MARC Update No. 33 (November 2021)
- [\#331](https://github.com/pkiraly/qa-catalogue/issues/331) Implementing MARC Update No. 34 (July 2022)
- [\#332](https://github.com/pkiraly/qa-catalogue/issues/332) Implementing MARC Update No. 35 (December 2022)
- [\#333](https://github.com/pkiraly/qa-catalogue/issues/333) Implementing MARC Update No. 36 (June 2023)


## v0.5.0

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ private void initialize() {
"r", "Language code of accessible visual language (non-textual)", "R",
"t", "Language code of accompanying transcripts for audiovisual materials", "R",
"2", "Source of code", "NR",
"3", "Materials specified", "NR",
"6", "Linkage", "NR",
"7", "Data provenance", "R",
"8", "Field link and sequence number", "R"
Expand Down Expand Up @@ -171,6 +172,9 @@ private void initialize() {
.setMqTag("source")
.setFrbrFunctions(ManagementIdentify, ManagementProcess);

getSubfield("3")
.setMqTag("materialsSpecified");

getSubfield("6")
.setBibframeTag("linkage")
.setFrbrFunctions(ManagementIdentify, ManagementProcess)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
package de.gwdg.metadataqa.marc.definition.tags.tags3xx;

import de.gwdg.metadataqa.marc.definition.Cardinality;
import de.gwdg.metadataqa.marc.definition.MarcVersion;
import de.gwdg.metadataqa.marc.definition.general.parser.LinkageParser;
import de.gwdg.metadataqa.marc.definition.general.parser.RecordControlNumberParser;
import de.gwdg.metadataqa.marc.definition.structure.DataFieldDefinition;
import de.gwdg.metadataqa.marc.definition.structure.Indicator;
import de.gwdg.metadataqa.marc.definition.structure.SubfieldDefinition;

import java.util.Arrays;

/**
* Structured Ownership and Custodial History
* http://www.loc.gov/marc/bibliographic/bd361.html
*/
public class Tag361 extends DataFieldDefinition {
private static Tag361 uniqueInstance;

private Tag361() {
initialize();
postCreation();
}

public static Tag361 getInstance() {
if (uniqueInstance == null)
uniqueInstance = new Tag361();
return uniqueInstance;
}

private void initialize() {

tag = "361";
label = "Structured Ownership and Custodial History";
mqTag = "StructuredOwnershipAndCustodialHistory";
cardinality = Cardinality.Repeatable;
descriptionUrl = "https://www.loc.gov/marc/bibliographic/bd361.html";

ind1 = new Indicator("Privacy")
.setCodes(
" ", "No information provided",
"0", "Private",
"1", "Not private"
)
.setMqTag("privacy");

ind2 = new Indicator();

setSubfieldsWithCardinality(
"a", "Name", "NR",
"f", "Ownership and custodial history evidence term", "R",
"k", "Formatted date", "NR",
"l", "Date", "NR",
"o", "Type of ownership and custodial history information", "R",
"s", "Shelf mark of copy described", "NR",
"u", "Uniform Resource Identifier", "R",
"x", "Nonpublic note", "R",
"y", "Identifier of the copy described", "NR",
"z", "Public note", "R",
"0", "Authority record control number or standard number", "R",
"1", "Real World Object URI", "R",
"3", "Materials specified", "NR",
"5", "Institution to which field applies", "NR",
"6", "Linkage", "NR",
"7", "Data provenance", "R",
"8", "Field link and sequence number", "R"
);

getSubfield("6").setContentParser(LinkageParser.getInstance());

getSubfield("a")
.setMqTag("name");

getSubfield("f")
.setMqTag("term");

getSubfield("k")
.setMqTag("formattedDate");

getSubfield("l")
.setMqTag("date");

getSubfield("o")
.setMqTag("type");

getSubfield("s")
.setMqTag("shelfMark");

getSubfield("u")
.setMqTag("uri");

getSubfield("x")
.setMqTag("nonpublicNote");

getSubfield("y")
.setMqTag("identifierOfTheCopy");

getSubfield("z")
.setMqTag("publicNote");

getSubfield("0")
.setMqTag("authorityRecordControlNumber")
.setContentParser(RecordControlNumberParser.getInstance());

getSubfield("1")
.setMqTag("uri");

getSubfield("3")
.setMqTag("materialsSpecified");

getSubfield("5")
.setMqTag("institutionToWhichFieldApplies");

getSubfield("6")
.setBibframeTag("linkage");

getSubfield("7")
.setMqTag("dataProvenance");

getSubfield("8")
.setMqTag("fieldLink");

putVersionSpecificSubfields(MarcVersion.KBR, Arrays.asList(
new SubfieldDefinition("*", "Link with identifier", "NR").setMqTag("link"),
new SubfieldDefinition("@", "Language of field", "NR").setMqTag("language"),
new SubfieldDefinition("#", "number/occurrence of field", "NR").setMqTag("number")
));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import de.gwdg.metadataqa.marc.definition.MarcVersion;
import de.gwdg.metadataqa.marc.definition.SourceSpecificationType;
import de.gwdg.metadataqa.marc.definition.general.parser.LinkageParser;
import de.gwdg.metadataqa.marc.definition.general.parser.RecordControlNumberParser;
import de.gwdg.metadataqa.marc.definition.structure.DataFieldDefinition;
import de.gwdg.metadataqa.marc.definition.structure.Indicator;
import de.gwdg.metadataqa.marc.definition.structure.SubfieldDefinition;
Expand Down Expand Up @@ -68,6 +69,9 @@ private void initialize() {

setSubfieldsWithCardinality(
"a", "Uncontrolled term", "R",
"0", "Authority record control number or standard number", "R",
"1", "Real World Object URI", "R",
"5", "Institution to which field applies", "NR",
"6", "Linkage", "NR",
"7", "Data provenance", "R",
"8", "Field link and sequence number", "R"
Expand All @@ -80,6 +84,16 @@ private void initialize() {
.setFrbrFunctions(DiscoverySearch, DiscoveryIdentify)
.setCompilanceLevels("M");

getSubfield("0")
.setMqTag("authorityRecordControlNumber")
.setContentParser(RecordControlNumberParser.getInstance());

getSubfield("1")
.setMqTag("uri");

getSubfield("5")
.setMqTag("institutionToWhichFieldApplies");

getSubfield("6")
.setMqTag("linkage")
.setFrbrFunctions(ManagementIdentify, ManagementProcess)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import de.gwdg.metadataqa.marc.definition.Cardinality;
import de.gwdg.metadataqa.marc.definition.MarcVersion;
import de.gwdg.metadataqa.marc.definition.general.parser.RecordControlNumberParser;
import de.gwdg.metadataqa.marc.definition.structure.DataFieldDefinition;
import de.gwdg.metadataqa.marc.definition.structure.Indicator;
import de.gwdg.metadataqa.marc.definition.SourceSpecificationType;
Expand Down Expand Up @@ -51,6 +52,8 @@ private void initialize() {
"b", "Subordinate curriculum objective", "R",
"c", "Curriculum code", "NR",
"d", "Correlation factor", "NR",
"0", "Authority record control number or standard number", "R",
"1", "Real World Object URI", "R",
"2", "Source of term or code", "NR",
"6", "Linkage", "NR",
"8", "Field link and sequence number", "R"
Expand Down Expand Up @@ -79,6 +82,13 @@ private void initialize() {
.setMqTag("correlationFactor")
.setCompilanceLevels("A");

getSubfield("0")
.setMqTag("authorityRecordControlNumber")
.setContentParser(RecordControlNumberParser.getInstance());

getSubfield("1")
.setMqTag("uri");

getSubfield("2")
.setMqTag("source")
.setFrbrFunctions(ManagementIdentify, ManagementProcess)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import de.gwdg.metadataqa.marc.definition.Cardinality;
import de.gwdg.metadataqa.marc.definition.MarcVersion;
import de.gwdg.metadataqa.marc.definition.general.parser.RecordControlNumberParser;
import de.gwdg.metadataqa.marc.definition.structure.DataFieldDefinition;
import de.gwdg.metadataqa.marc.definition.structure.Indicator;
import de.gwdg.metadataqa.marc.definition.general.codelist.RelatorCodes;
Expand Down Expand Up @@ -55,8 +56,12 @@ private void initialize() {
setSubfieldsWithCardinality(
"a", "Name", "NR",
"e", "Relator term", "R",
"0", "Authority record control number or standard number", "R",
"1", "Real World Object URI", "R",
"4", "Relationship", "R",
"5", "Institution to which field applies", "NR",
"6", "Linkage", "NR",
"7", "Data provenance", "R",
"8", "Field link and sequence number", "R"
);

Expand All @@ -72,17 +77,30 @@ private void initialize() {
.setFrbrFunctions(DiscoveryIdentify)
.setCompilanceLevels("O");

getSubfield("0")
.setMqTag("authorityRecordControlNumber")
.setContentParser(RecordControlNumberParser.getInstance());

getSubfield("1")
.setMqTag("uri");

getSubfield("4")
.setMqTag("relationship")
.setCodeList(RelatorCodes.getInstance())
.setFrbrFunctions(DiscoveryIdentify)
.setCompilanceLevels("O");

getSubfield("5")
.setMqTag("institutionToWhichFieldApplies");

getSubfield("6")
.setBibframeTag("linkage")
.setFrbrFunctions(ManagementIdentify, ManagementProcess)
.setCompilanceLevels("A");

getSubfield("7")
.setMqTag("dataProvenance");

getSubfield("8")
.setMqTag("fieldLink")
.setFrbrFunctions(ManagementIdentify, ManagementProcess)
Expand Down
Loading

0 comments on commit a62b43b

Please sign in to comment.