--- trunk/conf/normalize/mapping.pl 2006/07/02 16:14:41 562 +++ trunk/conf/normalize/mapping.pl 2006/07/05 00:12:08 583 @@ -1,11 +1,54 @@ -marc('001', - rec('000') +# Leader + +if ( rec('200','a') ) { + +if ( rec('999') && first(rec('999')) =~ m/pregledan/i) { + marc_leader('05','c'); +} else { + marc_leader('05','n'); +} + +marc_leader('06','a'); + +marc_leader('07','m'); + +marc_leader('18','i'); + +if ( rec('230') ) { + marc_leader('19','r'); +} + + +# 001 polje dodaje Voyager + +# polje 035 je u NSK ponovljivo. zašto ??? + + +marc('035','6', + prefix( + rec('994','a'), + rec('000') + ) ); +# u marc 035a treba dodati System Number - +# NSK zapisuje Voyagerov ID (001) - kako ??? + marc('020','a', rec('010') ); +# u polje 040a možda još dodati prefiks HR +# NSK ima HR NSB (možda u novijim zapisima ima NSK) + +marc('040','a', + rec('801') +); + +marc('040','b', + 'hrv' +); + if (rec('300') && first(rec('300')) =~ m/prijevod/i) { marc_indicators('041', 1, ' '); } else { @@ -17,31 +60,44 @@ ); marc_indicators('245', 0, 0); -marc('245','a', - rec('200','a') -); -marc('245','b', +marc_compose('245', + 'a', rec('200','a'), + 'h', rec('200','b'), + 'b', join_with(' : ', rec('200','d'), rec('200','e') - ) -); - -marc('245','c', + ), + 'c', join_with(' ; ', rec('200','f'), rec('200','g') - ) + ), ); +# marc('245','a', +# rec('200','a') +# ); +# +# marc('245','b', +# join_with(' : ', +# rec('200','d'), +# rec('200','e') +# ) +# ); +# +# marc('245','c', +# join_with(' ; ', +# rec('200','f'), +# rec('200','g') +# ) +# ); + marc('250','a', rec('205','a') ); -_debug( 2 ); -warn "210a: ",dump( first(rec('210','a' )) ); - marc_compose('260', 'a', split_rec_on('210','a', qr/\s*;\s*/, 1), 'b', first(rec('210','c')), @@ -49,9 +105,6 @@ 'c', first(rec('210','d')), ); - -_debug( 0 ); - marc('300','a', rec('215','a') ); @@ -84,7 +137,10 @@ ); marc('490','v', - rec('225','v') + join_with(', ', + rec('225','v'), + rec('225','w') + ) ); marc('500','a', @@ -99,12 +155,31 @@ rec('320') ); -marc('501','a', - rec('327') +# napomene uz konverziju polja sa sadržajem: +# NSK konvertira 327 (NP) u 501 (R) +# u LOC konv. tablici stoji 327 (NP) u 505 (NR) +# standard i validacije dopuštaju 501 (R) i 505 (R) +# FFPS koristi 327 (P) +# FFIZ koristi 327 + + +marc_indicators('505', '0', ' '); +marc('505','a', + regex('s/\\r\\n\\r\\n|\\r\\n/ ; /g', + rec('327') + ) ); +# napomene uz konverziju polja 330: +# NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica +# FFIZ koristi 330 (P) - ključne riječi, dijelovi sadržaja, sažeci +# FFFO koristi 330 (P) - ključne riječi, dijelovi sadržaja +# FFPS koristi 330 (NP) - sažetak + marc('520','a', - rec('330') + regex('s/\\r\\n\\r\\n|\\r\\n/. /g', + rec('330') + ) ); # možda i polje 520y - jezik napomene ako je uvijek isti jezik @@ -119,11 +194,17 @@ rec('610') ); +# 675 podpolja c, d ... - što s njima ??? + marc('080','a', rec('675','a') ); -# podpolja c, d ... - što s njima? +# 084 je other classification (R) +# NSK ga koristi za stručnu oznaku NSK iz polja 681 +# NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom +# +# polje 686 koristi FFPS marc('084','a', rec('686') @@ -139,6 +220,13 @@ marc_indicators('700', 1, ' '); + +if ( rec('701') ) { +marc('700','4', + 'aut' +); +} + marc('700','a', join_with(', ', rec('701', 'a'), @@ -146,11 +234,26 @@ ) ); -if ( rec('701') ) { -marc('700','4', - 'aut' -); -} +marc('700','a', + join_with(', ', + rec('701', 'c'), + rec('701', 'd') + ) +); + +marc('700','a', + join_with(', ', + rec('701', 'e'), + rec('701', 'f') + ) +); + +marc('700','a', + join_with(', ', + rec('701', 'g'), + rec('701', 'h') + ) +); marc('700','a', join_with(', ', @@ -159,13 +262,27 @@ ) ); -# podesiti podpolje 4 na editore nije dobra ideja -# -# if ( rec('702') ) { -# marc('700','4', -# '340' -# ); -# } +marc('700','a', + join_with(', ', + rec('702','c'), + rec('702','d') + ) +); + +marc('700','a', + join_with(', ', + rec('702','e'), + rec('702','f') + ) +); + +marc('700','a', + join_with(', ', + rec('702','g'), + rec('702','h') + ) +); + if ( rec('710','f') ) { @@ -174,6 +291,14 @@ rec('710','a') ); +marc('111','c', + rec('710','e') +); + +marc('111','d', + rec('710','f') +); + marc('111','e', rec('710','b') ); @@ -182,13 +307,6 @@ rec('710','d') ); -marc('111','c', - rec('710','e') -); - -marc('111','d', - rec('710','f') -); } else { @@ -207,10 +325,22 @@ if ( rec('230') ) { +marc_duplicate(); + +marc_remove('245'); + marc('245','a', rec('230','a') ); +if ( ! rec('230','a') ) { + +marc('245','a', + rec('200','a') +); + +} + marc('245','b', rec('230','e') ); @@ -225,10 +355,4 @@ } - - - - - - - +}