Advanced Authority

General knowledge

Evergreen respects the full LoC standards when it comes to the Authority MARC. Authority headings are found in an authority record denoted by the 1XX field. Of which, there should only be one. The "related" bib record depends on the last two characters in the 1XX field.

All of the core definitions are here:

select
*
from
authority.control_set_authority_field acsaf
join authority.heading_field ahf on (ahf.id=acsaf.heading_field)
order by tag,name;

-- And showing all* authority fields (some that do not connect to heading_field)

select
*
from
authority.control_set_authority_field
order by tag,name

Tag

Heading Name

Purpose

100

Heading — Personal Name

main

110

Heading — Corporate Name

main

111

Heading — Meeting Name

main

130

Heading — Uniform Title

main

150

Heading — Topical Term

main

151

Heading — Geographic Name

main

155

Heading — Genre/Form Term

main

400

See From Tracing — Personal Name

variant

410

See From Tracing — Corporate Name

variant

411

See From Tracing — Meeting Name

variant

430

See From Tracing — Uniform Title

variant

450

See From Tracing — Topical Term

variant

451

See From Tracing — Geographic Name

variant

455

See From Tracing — Genre/Form Term

variant

500

See Also From Tracing — Personal Name

related

510

See Also From Tracing — Corporate Name

related

511

See Also From Tracing — Meeting Name

related

530

See Also From Tracing — Uniform Title

related

550

See Also From Tracing — Topical Term

related

551

See Also From Tracing — Geographic Name

related

555

See Also From Tracing — Genre/Form Term

related

Connection to bibs

Evergreen requires manual linking from bibs to authorities. This can be done from the Bib MARC edit interface. But there is a script that attempts to make some connections automatically (authority_control_fields.pl). This script is generally setup to run nightly, linking all of the bibs that were updated for the previous 24 hours.

Table authority.bib_linking table also retains the connection map.

When a connection is made, Evergreen will update the appropriate field in the MARC record (650, 100, etc) to match the Authority record (1XX) field. It will also append the magic $0 field onto the bib record denoting which authority control record ID is controling that field. This makes it possible for Evergreen to update the controlled field when the authority record gets updated.

Database functions

authority.reingest_authority_full_rec

This function parses authority.record_entry and populates authority.full_rec.

authority.propagate_changes

This gets called when an already-existing authority record gets updated. This will speed through all of the linked bibs (authority.bib_linking table contains the links) and make sure that the controlled field(s) within the bib record get the field language updated to match the heading from the authority record (1XX field in authority record).

metabib.browse

Function responsible for returning related authority search results. It’s possible for authority records to turn up in search results even without a linked bib.

metabib.staged_browse

A secondary function that metabib.browse calls. This includes a section for authority record:

Excerpt from metabib.staged_browse function

....
...
..

    --Is unauthorized?
    SELECT INTO unauthorized_entry *
    FROM metabib.browse_entry_simple_heading_map mbeshm
    INNER JOIN authority.simple_heading ash ON ( mbeshm.simple_heading = ash.id )
    INNER JOIN authority.control_set_authority_field acsaf ON ( acsaf.id = ash.atag )
    JOIN authority.heading_field ahf ON (ahf.id = acsaf.heading_field)
    WHERE mbeshm.entry = rec.id
    AND   ahf.heading_purpose = 'variant';
..
...
....

As mentioned above, Evergreen will integrate browse search results from Authority control records. Standard search does not include Authority records. The Authority heading 1XX fields are the "main" search results from Authority records. However, the 4XX fields are "variant" fields and are also included as the "See" search result.

Search references table: metabib.browse_entry_simple_heading_map. This table links to authority.simple_heading. authority.simple_heading links to authority.control_set_authority_field which defines the different authority control fields and their "purpose". Only fields that are defined as "variant" will be included in the "See" results.

Making more authority fields "See"

As mentioned above, Evergreen has a feature that will cause some search results to give the user a "See" result. Giving the user a clue that their search term is "related" or is a "variant" of the search results. By default, only the 4XX fields are included for the "See" results. If you would like to add more defined authority record fields in the "See" results, you will need to update the definition of the defined field. The database functions: metabib.browse and metabib.staged_browse have a hard-coded definition of "variant". Your desired fields need to be defined as "variant".

Example of adding the "5XX" fields to the "See" search results

begin;

    update authority.heading_field
    set
    heading_purpose='variant'
    where
    id in
    (
        select ahf.id
        from
        authority.control_set_authority_field acsaf
        join authority.heading_field ahf on (ahf.id=acsaf.heading_field)
        where
        acsaf.tag ~'^5..' and
        acsaf.tag !='555' and
        heading_purpose='related'
    );

commit;

Subject vs. Author vs. Title vs. Series

You might notice that when you import/create new authority records, you are not prompted to choose an index. Evergreen "figures out" the search index to which the authority record belongs. It does this based up on the heading field. You’ll notice that some authority records have a 1XX field like "150" or "100". The second and third digit "means" which index it’s for.

Though, I don’t think that Evergreen pays much respect to the 008, I think it’s worth mentioning.

There are some indicators in the 008 field defined by LoC:

008 characters "14", "15", "16" definitions:

008 Position

Definition

14

Heading use-main or added entry

15

Heading use-subject added entry

16

Heading use-series added entry

Value definition

Value

Definition

a

Appropriate

b

Not Appropriate

|

No attempt to code

Evergreen will choose the destinition index for the authority record index based upon the 1XX heading definition.

Putting Authority records into different indexes

You might find yourself wanting the Browse Subject index to also include some of the search terms that are found only in the Author index. Or visa versa. The "glue" that puts makes the connection between an index and an Authority heading can be queried like this:

select
acsaf.tag "Authority Tag",acsaf.name,cmf.field_class
from
authority.control_set_bib_field acsbf
join authority.control_set_authority_field acsaf on (acsbf.authority_field=acsaf.id)
join authority.control_set_bib_field_metabib_field_map acsbfmfm on(acsbfmfm.bib_field=acsbf.id)
join config.metabib_field cmf on (cmf.id=acsbfmfm.metabib_field)
order by 3,1


-- Another angle

select b.*,a.id,a.tag,a.name,m.field_class,m.label,m.name,m.id from
 authority.control_set_bib_field b
JOIN authority.control_set_authority_field a ON (b.authority_field = a.id),
 config.metabib_field m,
authority.control_set_bib_field_metabib_field_map map
where
map.bib_field=b.id and
map.metabib_field=m.id
order by field_class
The main connection (glue) table is authority.control_set_bib_field_metabib_field_map

And now the insert

-- Make new glue
begin;


-- Traditional AUTHOR getting applied to SUBJECT
INSERT INTO authority.control_set_bib_field_metabib_field_map (bib_field, metabib_field)
    SELECT  DISTINCT b.id AS bib_field, m.id AS metabib_field
      FROM  authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m
      WHERE a.tag = '110' AND m.name = 'topic_browse'

      union

SELECT  DISTINCT b.id AS bib_field, m.id AS metabib_field
      FROM  authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m
      WHERE a.tag = '100' AND m.name = 'topic_browse'

      union

SELECT  DISTINCT b.id AS bib_field, m.id AS metabib_field
      FROM  authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m
      WHERE a.tag = '111' AND m.name = 'topic_browse'

      union

SELECT  DISTINCT b.id AS bib_field, m.id AS metabib_field
      FROM  authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m
      WHERE a.tag = '130' AND m.name = 'topic_browse'

      union

SELECT  DISTINCT b.id AS bib_field, m.id AS metabib_field
      FROM  authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m
      WHERE a.tag = '151' AND m.name = 'topic_browse'

      union

-- Traditional SUBJECT getting applied to AUTHOR
    SELECT  DISTINCT b.id AS bib_field, m.id AS metabib_field
      FROM  authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m
      WHERE a.tag = '150' AND m.name = 'corporate'

      union

SELECT  DISTINCT b.id AS bib_field, m.id AS metabib_field
      FROM  authority.control_set_bib_field b JOIN authority.control_set_authority_field a ON (b.authority_field = a.id), config.metabib_field m
      WHERE a.tag = '130' AND m.name = 'corporate'

;

commit;

Auxillary "axis" table

Evergreen has another table that makes refernces to "axis" (subject, author, title, topic) but it’s not directly for the purpose of browse search results.

-- Show axis mappings
select abaafm.*,acsaf.tag from
authority.browse_axis_authority_field_map abaafm,
authority.control_set_authority_field acsaf
where
acsaf.id=abaafm.field
order by 4;

It can’t hurt to also make the same connections in this table to mirror what you did above.

-- Edit axis mappings
begin;

-- Author headings (110) mapped to "subject"
insert into authority.browse_axis_authority_field_map(axis,field)
values('subject',2);

-- Subject headings (150) mapped to "Author"
insert into authority.browse_axis_authority_field_map(axis,field)
values('author',5);

commit;