NAME

MARC::Schema - Specification of the MARC21 format

SYNOPSIS

# in Perl
use MARC::Schema;

my $record = {
    _id    => 'fol05865967',
    record => [
        [ 'LDR', undef, undef, '_', '00661nam  22002538a 4500' ],
        [ '001', undef, undef, '_', 'fol05865967' ],
        [ '001', undef, undef, '_', 'field is not repeatable' ],
        [   '245', '1', '0', 'a', 'Programming Perl /',
            'c', 'Larry Wall, Tom Christiansen & Jon Orwant.',
            'a', 'subfield is not repeatable',
            'x', 'unknown subfield',
        ],
        [ '999', undef, undef, '_', 'not a standard field']
    ]
};

# load default schema
my $schema = MARC::Schema->new();

# load custom schema from file
my $schema = MARC::Schema->new({ file => share/marc-schema.json });


# load custom schema
my $schema = MARC::Schema->new(
    {   fields => {
            '001' => { label => 'Control Number', repetable => 0 }
        }
    }
);
my @check = $schema->check($record);

# via the command line
$ marcvalidate t/camel.mrc
$ marcvalidate --schema marc_schema.json t/camel.mrc
$ marcvalidate --type XML marc.xml

DESCRIPTION

MARC::Schema defines a set of MARC21 fields and subfields to validate Catmandu::MARC records. A schema is given as hash reference such as:

{   fields => {
        LDR => {
            positions =>
                [ { position => '00-04', label => 'Record length' } ],
            repeatable => 0,
        },
        '001' => { label => 'Control Number', repeatable => 0 }
    }
}

For a more detailed description of the (default) schema see MARC21 structure in JSON.

METHODS

check( $record [, %options ] )

Check whether a given "Catmandu::Importer::MARC" or "MARC::Parser::*" record confirms to the schema and return a list of detected violations. Possible options include:

ignore_unknown_fields

Don't report fields not included in the schema.

ignore_unknown_subfields

Don't report subfields not included in the schema.

Errors are given as list of hash references with keys error, tag, type and value of the violated field. error contains a human-readable error message for each violated field and/or subfield.

check_field( $field [, %options ] )

Check whether a MARC21 field confirms to the schema. Use same options as method check.

AUTHOR

Johann Rolschewski <jorol@cpan.org>

CONTRIBUTORS

Patrick Hochstenbach

Steve Rogerson

COPYRIGHT

Copyright 2018- Johann Rolschewski

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Catmandu::Validator

JSON::Schema

PICA::Schema

MARC::Lint

ACKNOWLEDGEMENT

MARC::Schema uses the MARC21 schema developed by Péter Király as default. For more information see "Metadata assessment for MARC records" and "MARC21 structure in JSON".