Scroll to navigation

MARC::Schema(3pm) User Contributed Perl Documentation MARC::Schema(3pm)

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 <https://pkiraly.github.io/2018/01/28/marc21-in-json/>.

METHODS

check( $record [, %options ] )

Check whether a given "Catmandu::Importer::MARC" or "MARC::Parser::*" <https://metacpan.org/search?q=%22MARC%3A%3AParser%22> record confirms to the schema and return a list of detected violations. Possible options include:

Don't report fields not included in the schema.
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 Peter Kiraly <https://github.com/pkiraly> as default. For more information see "Metadata assessment for MARC records" <https://github.com/pkiraly/metadata-qa-marc> and "MARC21 structure in JSON" <https://pkiraly.github.io/2018/01/28/marc21-in-json/>.

2023-03-12 perl v5.36.0