NAME
PICA::Schema - Validate PICA based formats with Avram Schemas
SYNOPSIS
$schema = PICA::Schema->new({ ... });
@errors = $schema->check($record);
DESCRIPTION
A PICA Schema defines a set of PICA+ fields and subfields to validate PICA::Data records. Schemas are given as hash reference in Avram Schema language, for instance:
{
fields => {
'021A' => { }, # field without additional information
'003@' => { # field with additional constraints
label => 'Pica-Produktionsnummer',
repeatable => 0,
required => 1,
subfields => {
'0' => { repeatable => 0, required => 1 }
}
}
}
}
See PICA::Schema::Builder to automatically construct schemas from PICA sample records.
Schema information can also be used for documentation of records with PICA::Writer::XML.
METHODS
check( $record [, %options ] )
Check whether a given PICA::Data record confirms to the schema and return a list of PICA::Error. 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.
- ignore_unknown
-
Don't report fields and subfields not included in the schema.
- allow_deprecated_fields
-
Don't report deprecated fields.
- allow_deprecated_subfields
-
Don't report deprecated subfields.
- allow_deprecated_codes
-
Don't report deprecated codes.
- allow_deprecated
-
Don't report deprecated fields, subfields, and codes.
- allow_empty_subfields
-
Don't report subfields with empty string values.
- ignore_subfield_order
-
Don't report errors resulting on wrong subfield order.
- ignore_subfields
-
Don't check subfields at all.
- check_annotation
-
Require or forbid annotated fields if set to true or false. Otherwise just check whether given annotation is a valid character.
check_field( $field [, %options ] )
Check whether a PICA field confirms to the schema. Use same options as method check
. Returns a PICA::Error on schema violation.
abbreviated
Return an abbreviated data structure of the schema without inferable and calculated fields such as tag
, occurrence
, code
, total
and records
.
FUNCTIONS
clean_pica( $record[, %options] )
Syntactically check a PICA record and return it as array of arrays on success. Syntactic check is performed on schema validation before checking the record against a schema and before writing a record.
Options include:
- error
-
Error handler, prints instances of PICA::Error to STDERR by default. Use
undef
to ignore all errors. - ignore_empty_records
-
Don't emit an error if the record has no fields.
- ignore_subfields
-
Don't check subfields.
field_identifier( [$schema, ] $field )
Return the field identifier of a given PICA field. The identifier consists of field tag and optional occurrence. If this function is used as method of a schema, the field_identifier may contain an occurrence ranges instead of the plain occurrence.
check_value( $value, $schedule [, %options ] )
Check a subfield value against a subfield schedule. On malformed values returns a subfield error without message
key.
check_pattern( $value, $pattern )
Check a value against a pattern and return an error on failure.
parse_subfield_schedule( $string )
Parse a stringified subfield schedule. The string must contain of ordered subfield codes, each optionally followed by ?
, +
, or *
to indicate repeatability and whether the subfield is required.
LIMITATIONS
Fields types and deprecated (sub)fields in Avram Schemas are not fully supported yet.