--- trunk/conf/normalize/ff-libri.pl 2007/05/25 19:48:02 842 +++ trunk/conf/normalize/ff-libri.pl 2007/10/31 18:07:33 944 @@ -24,17 +24,25 @@ marc_leader('07','m'); marc_leader('18','i'); +# pojasniti upotrebu 19 lidera! + if ( rec('230') ) { marc_leader('19','r'); } ### 001 - Voyager +### 003 +# Pojasniti upotrebu polja + ### 007 +# pojasniti upotrebu polja marc_fixed('007',00,'ta'); -### 008 +### 008 - All materials + +# što zapisati u polje kad datum nije poznat? if ( rec('994','c') ) { marc_fixed('008','00', @@ -55,26 +63,57 @@ #) #); -## FIXME treba velika slova pretvoriti u mala - +marc_fixed('008','06', 't'); # 06 - Type of date/Publication status +marc_fixed('008','07', + rec('210','d') +); # 07-10 - Date 1 +# marc_fixed('008','11', ' '); # 11-14 - Date 2 +marc_fixed('008','15', + lc ( rec('102') ) +); # 15-17 - Place of publication, production, or execution marc_fixed('008','35', - first( lc(rec('101')) ) + first( lc(rec('101')) ) # 35-37 - Language ); +marc_fixed('008','38', '|'); # 38 - Modified record +marc_fixed('008','39','d'); # 39 - Cataloging source + + +### 008 - Books + + # 18-21 - Illustrations + # 22 - Target audience + # 23 - Form of item + # 24-27 - Nature of contents + # 28 - Government publication + # 29 - Conference publication + # 30 - Festschrift + # 31 - Index + # 32 - Undefined + # 33 - Literary form + # 34 - Biography + + +### 020 +# postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb) +marc('020','a', + regex('s/ ISBN //g', + rec('10') + ) +); ### 035$6 # Privemeno koristimo 035$6 umjesto 035$9, zato što marclint prijavljuje 9 kao grešku. -# marc 035a - System Number - NSK zapisuje Voyagerov ID (001) - kako? -# kako mora izgledati polje 035$9? može li sadržavati slova i razmake? - +# marc 035a - System Number - Voyagerov ID (001) +# polje 035$9 može sadržavati slova i razmake marc('035','6', join_with('', # config('input normalize path'), # config('name'), config(), - 'L', + ' L', # config('input name'), # id(), # rec('994','a'), @@ -82,19 +121,9 @@ ) ); - -### 020 -# postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb) - -marc('020','a', - regex('s/ ISBN //g', - rec('10') - ) -); - - ### 040 # za sve je isti +# treba utvrditi točnu oznaku za ustanovu marc('040','a', 'HR FFZG' @@ -109,7 +138,8 @@ ); -### 041 indikatori +### 041 - indikatori +# # pretpostavke o indikatorima: # # 1. Ako postoji polje 300 i ono sadrži /Prijevod/ ili /Izv. stv. nasl./, i1 = 1 @@ -125,7 +155,7 @@ #if ( rec('675') =~ m/\d=\d/ ) { -if ( grep( m/Prijevod/, rec('300')) || grep( m/Izv. stv. nasl./, rec('300') ) ) { +if ( grep( m/prijevod/i, rec('300')) || grep( m/prevedeno/i, rec('300')) || grep( m/izv.*stv.*nasl/i, rec('300')) || grep( m/izvornik/i, rec('300')) || grep( m/preve/i, rec('200','f')) || grep( m/preve/i, rec('200','g')) || grep( m/prijevod/i, rec('200','f')) || grep( m/prijevod/i, rec('200','g')) ) { marc_indicators('041', 1, ' '); } else { marc_indicators('041', 0, ' '); @@ -136,11 +166,15 @@ # ponovljivo polje konvertira se u ponovljivo potpolje #_debug(2); + marc_repeatable_subfield('041','a', rec('101') ); + #_debug(0); +### 044 +## kako dobiti zemlju izdavanja? ### 080 # 675 podpolja b, c, d ... - što s njima ??? @@ -149,18 +183,30 @@ rec('675','a') ); +marc('080','a', + rec('675','b') +); + +marc('080','a', + rec('675','c') +); + +marc('080','a', + rec('675','d') +); + ### 084 - 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 - +# NSK konvertira polje 686 u 084, u skladu s LOC konv. tablicom +# polje 686 koristi FFPS. još netko? marc('084','a', rec('686') ); -### 100 +### 100 indikatori + # I1 = 0 ako je pseudonim (ima 700a, nema 700b) if ( rec('700','a') && ! rec('700','b') ) { @@ -169,6 +215,8 @@ marc_indicators('100', 1, ' '); } +### 100 + marc('100','a', join_with(', ', rec('700', 'a'), @@ -179,39 +227,66 @@ ### 111 i 110 # provjeriti ispise naslova iz svake baze - moguće su greške. -# ovo vrijedi za FFSFB -if ( rec('710','f') ) { +# ovo vrijedi za FFSFB +if ( rec('710','d') || rec('710','e') || rec('710','f') ) { marc_indicators('111', 2, ' '); marc_compose('111', - 'a', rec('710','a'), + 'a', suffix( + rec('710','b') ? '.' : + '', + rec('710','a'), + ), 'e', rec('710','b'), - 'n', rec('710','d'), - 'd', rec('710','f'), - 'c', rec('710','e'), + 'n', prefix( + rec('710','d') ? '(' : + '', + rec('710','d') + ), + 'd', prefix( + ( ! rec('710','d') ) ? '(' : + ( ! rec('710','e') ) ? '(' : + '; ', + rec('710','f'), + ), + 'c', prefix( + ( rec('710','e') && ( rec('710','d') || rec('710','f') ) ) ? '; ' : + ( ! rec('710','d') && ! rec('710','f') ) ? '(' : + '', + rec('710','e'), + ), + '+',')', ); } else { marc_indicators('110', 2, ' '); + marc('110','a', rec('710','a') ); -marc('110','c', - rec('710','c') +marc('110','b', + rec('710','b') ); + if ( rec('710','c') ) { + marc('110','c', + surround('(', ')', rec('710','c')) + ); + } + } ### 245 indikatori +# treba nadopuniti i dati podatke na verifikaciju knjižničarima + # i1 = 0 za anonimne publikacije, i1 = 1 ako postoji 700 ili 710 # i2 = pretpostavlja se na temelju člana na početku naslova i jezika -# treba nadopuniti i dati podatke na verifikaciju knjižničarima my $i1; @@ -240,32 +315,68 @@ } ### 245 -# redoslijed polja važan # podpolja i interpunkcije pripremljeni u modify #_debug(3); marc_compose('245', 'a', suffix( - ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' : - ( rec('200','p') && rec('200','c') ) ? ' : ' : + ( ! ( rec('200','d') || rec('200','e') || rec('200','k') ) ) && ( rec('200','f') ) ? ' /' : + ( rec('200','d') ) ? ' =' : + ( rec('200','e') ) ? ' :' : + ( rec('200','k') ) ? ' ;' : '', rec('200','a'), ), 'b', suffix( - ( rec('200','p') && rec('200','f') ) ? ' / ' : - ( rec('200','p') && rec('200','c') ) ? '. ' : + ( rec('200','d') && rec('200','f') ) ? ' /' : + ( rec('200','d') && rec('200','c') ) ? '.' : '', - rec('200','p'), + rec('200','d'), + ), + 'b', suffix( + ( rec('200','e') && rec('200','f') ) ? ' /' : + ( rec('200','e') && rec('200','c') ) ? '.' : + '', + rec('200','e'), + ), + 'b', suffix( + ( rec('200','k') && rec('200','f') ) ? ' /' : + ( rec('200','k') && rec('200','c') ) ? '.' : + '', + rec('200','k'), ), 'c', suffix( - ( rec('200','f') && rec('200','c') ) ? '. ' : + ( rec('200','f') && rec('200','c') ) ? '.' : '', rec('200','f'), ), - '+', rec('200','c'), + '+', suffix('.', + rec('200','c'), + ), ); +#marc_compose('245', +# 'a', suffix( +# ( ! rec('200','p') && ( rec('200','f') || rec('200','c') ) ) ? ' / ' : +# ( ! rec('200','p') && rec('200','c') ) ? ' : ' : +# '', +# rec('200','a'), +# ), +# 'b', suffix( +# ( rec('200','p') && rec('200','f') ) ? ' / ' : +# ( rec('200','p') && rec('200','c') ) ? '. ' : +# '', +# rec('200','p'), +# ), +# 'c', suffix( +# ( rec('200','f') && rec('200','c') ) ? '. ' : +# '', +# rec('200','f'), +# ), +# '+', rec('200','c'), +#); + #_debug(0); #marc_compose('245', @@ -299,17 +410,15 @@ # ), # ), # 'c', rec('200','f'), -### append to last subfield +## append to last subfield # '+', prefix('. ', # rec('200','c') # ), #); - - - ### 250 +# zapisima koji nemaju potpolje, dodaje se ^a u modify - provjeriti marc_compose('250', 'a',suffix( @@ -320,11 +429,6 @@ 'b', rec('205','f'), ); -#marc('250','b', -# rec('205','f') -#); - - ### 260 # ponovljiva potpolja u originalnom redosljedu @@ -332,7 +436,7 @@ ### 300 -# provjeriti interpunkcije !! +# urediti interpunkcije za sve kombinacije marc('300','a', suffix( @@ -365,9 +469,12 @@ rec('215','e') ); +### 362 +# brojčani podaci za nakladničku cjelinu +# ??? -### 440 -# 2.ind. prema jeziku i članu +### 440 - indikatori +# 2.ind. prema jeziku i članu, provjeriri marc_indicators('440', ' ', '0'); @@ -387,44 +494,135 @@ #_debug(3); -marc('440', - 'a', suffix( rec('225','f'), - rec('225','a'), - ), -); +### 440 + +marc_original_order('440','225'); -# join_with(' / ', -# join_with(' ', +#marc_compose('440', +# 'a', suffix( +# rec('225','i') ? '. ' : +# '', # rec('225','a'), -# rec('225','p'), -# ), -# rec('225','f') # ), +# 'p', suffix( +# ( ! rec('225','x') && rec('225','i') && rec('225','v') ) ? ' ; ' : +# ( rec('225','i') && rec('225','x') ) ? ', ' : +# '', +# rec('225','i'), +# ), +# 'x', suffix( +# ( rec('225','x') && rec('225','v') ) ? ' ; ' : +# '', +# rec('225','x'), +# ), +# 'v', rec('225','v'), +#); -#_debug(0); - -marc('440','n', - rec('225','h') -); +## ovo radi samo kad 225 nije ponovljivo -marc('440','p', - rec('225','i') -); +#if ( +# count( lookup( +# sub { 1 }, +# 'ffps','libri', +# sub { rec('225','a') } +# ) ) > 1 +#) { -marc('440','v', - rec('225','v'), -); - -marc('440','x', - rec('225','x') -); +#marc_compose('440', +# 'a', suffix( +# ( rec('225','x') ) ? ', ' : +# ( rec('225','v') || rec('225','w') ) ? ' ; ' : +# ( rec('225','h') || rec('225','i') ) ? '. ' : +# '', +# join_with(' / ', +# join_with(' : ', +# join_with(' = ', +# rec('225','a'), +# rec('225','d'), +# ), +# rec('225','e'), +# ), +# rec('225','f'), +# ), +# ), +# 'x', suffix( +# ( rec('225','x') && rec('225','v') ) ? ' ; ' : +# ( rec('225','x') && ( rec('225','h') || rec('225','i') ) ) ? '. ' : +# '', +# rec('225','x'), +# ), +# 'v', suffix( +# ( rec('225','v') && rec('225','h') || rec('225','i') ) ? '. ' : +# '', +# join_with('; ', +# rec('225','v'), +# ) +# ), +# 'n', suffix( +# ( rec('225','h') && rec('225','p') || rec('225','y') ) ? ', ' : +# '', +# rec('225','h'), +# ), +# 'p', suffix( +# ( rec('225','i') && rec('225','x') ) ? ', ' : +# ( rec('225','i') && rec('225','v') ) ? ' ; ' : +# '', +# rec('225','i'), +# ), +# 'x', suffix( +# ( rec('225','y') && rec('225','v') ) ? ' ; ' : +# '', +# rec('225','y'), +# ), +# 'v', rec('225','w'), +# ); +# +# marc_compose('440', +# 'a', suffix( +# rec('225','k') ? ' ; ' : +# '', +# join_with(' / ', +# rec('225','b'), +# rec('225','j') +# ), +# ), +# 'v', +# rec('225','k'), +# ); +# +# +# marc_compose('440', +# 'a', suffix( +# rec('225','s') ? ' ; ' : +# '', +# join_with(' / ', +# rec('225','c'), +# rec('225','r') +# ), +# ), +# 'v', +# rec('225','s'), +# ); +#} -### 490 +#if ( rec('225','i') ) { +# marc('440','p', +# prefix('. ', +# rec('225','i') +# ), +# ); +#} # -#marc('490','a', -# rec('225','a') -#); +#if ( rec('225','v') ) { +# marc('440','v', +# prefix(' ; ', +# rec('225','v'), +# ), +# ); +#} + +#_debug(0); ### 50x @@ -460,7 +658,7 @@ # standard i validacije dopuštaju 501 (R) i 505 (R) ## 505 -## FFPS 327 - sadrzaj +# FFPS 327 - sadrzaj if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) { marc_indicators('505', '0', ' '); @@ -481,13 +679,11 @@ } - -## napomene uz konverziju polja 330: # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica ### 520 -# možda i polje 520y - jezik napomene ako je uvijek isti jezik +# možda i polje 520y - jezik napomene ako je uvijek isti jezik? # FFPS 330 (NP) - sažetak if ( config() =~ m/ffps/ ) { @@ -499,6 +695,7 @@ } ### 526 - STUDY PROGRAM INFORMATION NOTE +# provjeriti za svaku bazu sta je tocno u 996? marc_indicators('526', 8, ' '); @@ -577,7 +774,10 @@ marc('700','a', - rec('702','a'), + join_with(', ', + rec('702', 'a'), + rec('702', 'b') + ) ); @@ -605,39 +805,9 @@ ) ); -## treba provjeriti da li polje 330 sadrzi jos neke podatke koji mogu biti u <> ili su tu iskljucivo autori? da li samo autori ili neke druge osobe? -# -# marc('700','a', -# rec('330','a') -# ); -# -# -# marc('700','a', -# rec('330','b') -# ); -# -# marc('700','a', -# rec('330','c') -# ); -# -# -# marc('700','a', -# rec('330','d') -# ); -# -# marc('700','a', -# rec('330','e') -# ); -# -# marc('700','a', -# rec('330','f') -# ); - #_debug(0); - - ### 740 marc_indicators('740', 0, ' '); @@ -659,10 +829,10 @@ # }; -### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim +# generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim if ( - rec('225','a') # da li je nakladnicka cjelina? + rec('225','a') # da li je nakladnička cjelina? ) { my $series_key = @@ -678,17 +848,16 @@ warn "nije novi"; } else { - $series = join_with('', - config(), - 'LS', + uc( config() ), + ' LS', rec('000') ); set( $series_key => $series ); -} -} +} # $series +} # nakladnička cjelina my $series_key = join_with('', rec('225','a'), @@ -725,7 +894,7 @@ # -## 852 - lokacija +### 852 - lokacija marc_indicators('852', 4, ' '); @@ -735,13 +904,13 @@ ) ); -## 876 - item information - basic bibliographic unit +### 876 - item information - basic bibliographic unit marc('876','a', rec('991'), ); -## 886 - former marc +### 886 - former marc marc_indicators('886', 2, ' ');