Normalisoimissääntöjä auktoriteettivalvontaan

Last modified by Ville Huhtala on 2024/02/16 16:23

Tuplaosakenttien ja tuplakenttien poistaminen käsin tallennettaessa

Normalisointisääntö "korjaa tupla-$0-osakentät suomalaisissa auktorisoiduissa muodoissa" (päivitetty 9.5.2023)

Tämä sääntö poistaa kaikki muut paisi ensimmäisen $0 osakentän jos $0 osakentässä viitataan suomalaiseen auktoriteettiin

  • kun kuvailija tallentaa tietueen manuaalisesti
  • Tämä sääntö ei pure Preferred Term Correction jobin ajoon → tuplaantuneet $0 osakentät kaiveltava Preferred Term Correction jobin raportista tai sääntöä ajettava säännöllisesti koko kannalle

Lisätty 9.5.2023

  • teosviittaukset $0 130, 240, 600, 610, 611, 630, 700, 710, 711, 730, 800, 810, 811, 830 FI-ASTERI-W

Korjattu 7.12.2022:

  • replaceContentsExceptFirst "110.0" with "" if (exists "100.0.(FI-ASTERI-N)*") → (exists "110
  • replaceContentsExceptFirst "111.0" with "" if (exists "100.0.(FI-ASTERI-N)*") → (exists "111

Lisätty 2.8.2022:

  • kenttä 648
rule "korjaa tupla-$0-osakentät suomalaisissa auktorisoiduissa muodoissa"
# FI-ASTERI-* kattaa sekä toimijat (FI-ASTERI-N) että teokset (FI-ASTERI-W)
when
(TRUE)
then
replaceContentsExceptFirst "100.0" with "" if (exists "100.0.(FI-ASTERI-*")
replaceContentsExceptFirst "110.0" with "" if (exists "110.0.(FI-ASTERI-*")
replaceContentsExceptFirst "111.0" with "" if (exists "111.0.(FI-ASTERI-*")
replaceContentsExceptFirst "130.0" with "" if (exists "130.0.(FI-ASTERI-*")
replaceContentsExceptFirst "240.0" with "" if (exists "240.0.(FI-ASTERI-*")
replaceContentsExceptFirst "600.0" with "" if (exists "600.0.(FI-ASTERI-*")
replaceContentsExceptFirst "610.0" with "" if (exists "610.0.(FI-ASTERI-*")
replaceContentsExceptFirst "611.0" with "" if (exists "611.0.(FI-ASTERI-*")
replaceContentsExceptFirst "630.0" with "" if (exists "630.0.(FI-ASTERI-*")
replaceContentsExceptFirst "648.0" with "" if (exists "648.0.http://www.yso.fi/onto/yso/*")
replaceContentsExceptFirst "650.0" with "" if (exists "650.0.http://www.yso.fi/onto/yso/*")
replaceContentsExceptFirst "651.0" with "" if (exists "651.0.http://www.yso.fi/onto/yso/*")
replaceContentsExceptFirst "655.0" with "" if (exists "655.0.http://urn.fi/URN:NBN:fi:au:slm:*")
replaceContentsExceptFirst "700.0" with "" if (exists "700.0.(FI-ASTERI-*")
replaceContentsExceptFirst "710.0" with "" if (exists "710.0.(FI-ASTERI-*")
replaceContentsExceptFirst "711.0" with "" if (exists "711.0.(FI-ASTERI-*")
replaceContentsExceptFirst "730.0" with "" if (exists "730.0.(FI-ASTERI-*")
replaceContentsExceptFirst "800.0" with "" if (exists "800.0.(FI-ASTERI-*")
replaceContentsExceptFirst "810.0" with "" if (exists "810.0.(FI-ASTERI-*")
replaceContentsExceptFirst "811.0" with "" if (exists "811.0.(FI-ASTERI-*")
replaceContentsExceptFirst "830.0" with "" if (exists "830.0.(FI-ASTERI-*")
end

Normalisointisääntö "korjaa tuplakenttiä" (päivitetty 9.5.2023)

Tämä sääntö poista tuplakentät 600, 610, 611, 630, 648, 650, 651, 653, 655 ja 690

Päivitys 9.5.2023:

  • lisätty correctDuplicateFields "...,690"
rule "korjaa tuplakenttiä"
    when
        (TRUE)
    then
        correctDuplicateFields "600,610,611,630,648,650,651,653,655,690"
end

Sääntöjen asettaminen osaksi "Marc21 Bib normalize on save" prosessia (päivitetty 7.12.2020)

  • Configuration -> Resources -> [Cataloging] -> Metadata Configuration -> "MARC21 Bibliographic"
  • Normalization Processes -välilehti -> "Marc21 Bib normalize on save"
  • Task Lists -välilehti -> "Add Tasks" -> [x] MarcDroolNormalization -> "Add and Close"
  • siirrä MarcDroolNormalization listalla ennen marc21BibClearEmptyFieldsTask  (sanboxissa kaksi MarcDroolNormalization, tuotannossa näemmä vain yksi)
  • Task Parameters -> Drools File Key (alasvetovalikko): valitse se sääntö, joka poistaa tupla-$0 osakentät
  • Lisää toinen MarcDroolNormalization: Task Lists -välilehti -> "Add Tasks" -> [x] MarcDroolNormalization -> "Add and Close"
  • Task Parameters -> Drools File Key (alasvetovalikko): valitse se sääntö, joka poistaa tuplakentät

Lopputuloksen pitäisi muistuttaa alla olevaa:

image2020-12-7_14-28-25.png

image2020-12-7_14-28-49.png

poista tupla-$0 osakentät -säännön pitää olla ennen marc21BibClearEmptyFieldsTask, tai tupla-$0 osakentät jäävät tietueeseen tyhjinä $0 osakenttinä:
650 #7 $a kissa $0 http://www.yso.fi/onto/yso/p19378 $0

Säännön liittäminen normalisointiprosessiin ajoja varten

  • Configuration -> Resources -> [Cataloging] -> Metadata Configuration -> "MARC21 Bibliographic"
  • Normalization Processes -välilehti -> "Add Process"
  • Ensimmäinen välilehti: nimeä
  • Task Lists -välilehti -> "Add Tasks" -> [x] MarcDroolNormalization -> "Add and Close"
  • Task Parameters -> Drools File Key (alasvetovalikko): valitse sääntö

Sääntöä on nyt ajettavissa Admin → Run a Job -listalla.

Kerta-ajo: kenttä 600, 610, 611 "Alma muotoisiksi"

  • lisää kenttiin 600, 610 ja 611 '$2 finaf', jos kentässä '$0 (FI-ASTERI-N)'
  • vaihtaa 2ind arvoksi 4 → 7, jos kentässä  '$0 (FI-ASTERI-N)'
  • poistaa kentistä 600, 610 ja 611 samansisältöiset tuplaosakentät $0 ja $2
6xx asterilinkkautuvaksi
rule "tee 600/610/611 asterilinkkautuvaksi osakenttä 0 perusteella"
priority 18
when
 TRUE
then
 addsubfield "600.2.finaf" if (exists "600.0.(FI-ASTERI-N)*")
 addsubfield "610.2.finaf" if (exists "610.0.(FI-ASTERI-N)*")
 addsubfield "611.2.finaf" if (exists "611.0.(FI-ASTERI-N)*")
 changeSecondIndicator "600" to "7" if (exists "600.0.(FI-ASTERI-N)*")
 changeSecondIndicator "610" to "7" if (exists "610.0.(FI-ASTERI-N)*")
 changeSecondIndicator "611" to "7" if (exists "611.0.(FI-ASTERI-N)*")
end

rule "poista tuplaosakentät 0 ja 2"
priority 15
 when
  (TRUE)
 then
  correctDuplicateSubfields "600" "02"
  correctDuplicateSubfields "610" "02"
  correctDuplicateSubfields "611" "02"

end

Rajoitukset

  • Asterin nimimuoto vaihtunut (esim. lisätty vuosilukuja) sen jälkeen kun tietue viimeksi tallennettu tietokantaan Melindasta
  • Tietue on haettu Voyagerin remote toiminnalla Melindasta → karsii vuosiluvut
  • Normalisointisäännön mukaiset muutokset tehdään, vaikka nimimuoto ei oikeasti voikaan linkkautua Asteriin. Säännön voisi muotoilla tiukemminkin, esimerkiksi lisätä vaatimuksen $d osakentän olemassaolosta.

Esimerkki. Tilanne normalisointisäännön ajon jälkeen. Ensimmäinen nimimuoto linkkautuu automaattisesti oikein. Jälkimmäisestä meni virheellisesti, koska nimimuodosta puuttuu vuosiluku

image2020-5-29_14-51-26.png

Kerta-ajo: kenttä 650, 651 ja 655 "Alma muotoiseksi"

  • lisää loppupiste 650, 651 ja 655 $a osakenttään, jos
    • 650 $0 sisältää http://www.yso.fi/onto/yso/*
    • 651 $0 sisältää http://www.yso.fi/onto/yso/*
    • 655 $0 sisältää http://urn.fi/URN:NBN:fi:au:slm:*
  • korvaa mahdollinen tuplaloppupiste yhdellä loppupisteellä $a osakentässä
  • poista loppupiste jos $a osakenttä päättyy ')'
  • siirrä $2 osakenttä viimeiseksi
  • 655 kenttä: siirrä mahdollinen $5 osakenttä viimeiseksi
  • poista muut kuin ensimmäinen $0 osakenttä
rule "lisää loppupiste 650 & 651 yso ja 655 slm $a osakenttiin, osa 1"
priority 10
    when
         (TRUE)
     then
            suffix "650.a" with ".temporary_suffix_to_replace" if (exists "650.0.http://www.yso.fi/onto/yso/*")
            suffix "651.a" with ".temporary_suffix_to_replace" if (exists "651.0.http://www.yso.fi/onto/yso/*")
            suffix "655.a" with ".temporary_suffix_to_replace" if (exists "655.0.http://urn.fi/URN:NBN:fi:au:slm:*")
end

rule "lisää loppupiste 650 & 651 yso ja 655 slm $a osakenttiin, osa 2"
# korjaa .. -> .
priority 8
    when
        (TRUE)
    then
        replaceContents "650.a.\\\\.\\\\.temporary_suffix_to_replace" with "."
        replaceContents "651.a.\\\\.\\\\.temporary_suffix_to_replace" with "."
        replaceContents "655.a.\\\\.\\\\.temporary_suffix_to_replace" with "."
end

rule "lisää loppupiste 650 & 651 yso ja 655 slm $a osakenttiin, osa 3"
# poista loppupiste 650 & 651 yso ja 655 slm $a osakentästä jos se päättyy ) merkkiin
priority 7
 when
  (TRUE)
 then
  replaceContents "650.a.)\\\\.temporary_suffix_to_replace" with ")"
  replaceContents "651.a.)\\\\.temporary_suffix_to_replace" with ")"
  replaceContents "655.a.)\\\\.temporary_suffix_to_replace" with ")"
end

rule "lisää loppupiste 650 & 651 yso ja 655 slm $a osakenttiin, osa 4"
priority 6
    when
        (TRUE)
    then
        replaceContents "650.a.temporary_suffix_to_replace" with ""
        replaceContents "651.a.temporary_suffix_to_replace" with ""
        replaceContents "655.a.temporary_suffix_to_replace" with ""
end

rule "siirrä $2 osakenttä kentän 650 & 651 ja 655 loppuun"
priority 4
    when
        (TRUE)
    then
        changeSubField "650.2" to "2" if (exists "650.0.http://www.yso.fi/onto/yso/*")
        changeSubField "651.2" to "2" if (exists "651.0.http://www.yso.fi/onto/yso/*")
        changeSubField "655.2" to "2" if (exists "655.0.http://urn.fi/URN:NBN:fi:au:slm:*")
end

rule "siirrä $5 osakenttä kentän 655 loppuun"
priority 3
    when
        (TRUE)
    then
        changeSubField "655.5" to "5" if (exists "655.0.http://urn.fi/URN:NBN:fi:au:slm:*")
end

rule "korjaa 650 & 651 ja 655 tupla-$0-osakentät suomalaisissa auktorisoiduissa muodoissa"
priority 2
    when
        (TRUE)
    then
        replaceContentsExceptFirst "650.0" with "" if (exists "650.0.http://www.yso.fi/onto/yso/*")
        replaceContentsExceptFirst "651.0" with "" if (exists "651.0.http://www.yso.fi/onto/yso/*")
        replaceContentsExceptFirst "655.0" with "" if (exists "655.0.http://urn.fi/URN:NBN:fi:au:slm:*")
end