--- trunk/conf/normalize/ff-libri.pl 2007/01/30 18:21:17 791 +++ trunk/conf/normalize/ff-libri.pl 2007/01/30 18:23:53 792 @@ -1,13 +1,10 @@ -# ne konvertira se ako nema polje 200^a +# konvertira se ako postoji polje 200^a if ( rec('200','a') ) { -# Leader +### LEADER # raspraviti 17,18 -# # u nekim knjižnicama koristi se 999a i 999b -# -# vrijedi za ffan... if ( rec('999') && first(rec('999')) =~ m/pregledan/i) { marc_leader('05','c'); @@ -23,15 +20,18 @@ marc_leader('19','r'); } -# 001 polje - Voyager -# -# privemeno koristimo 0356 umjesto 0359, zato što marclint 9 prijavljuje kao grešku -# u marc 035a - System Number - ?? -# NSK zapisuje Voyagerov ID (001) - kako ??? +### 001 - Voyager + +### 008 + +### 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('035','6', -join_with('', +join_with(' ', # config('input normalize path'), # config('name'), config(), @@ -44,8 +44,8 @@ ); -# FFSF - nekoliko zaredanih ISBN, odvojenih s '. - ' -# drugi ISBN počinje prefixom ISBN +### 020 +# postoji modify -> drugi ISBN počinje prefixom "ISBN" koji se miče (sfb) marc('020','a', regex('s/ ISBN //g', @@ -53,8 +53,9 @@ ) ); -# u polje 040a - prefiks HR ? -# NSK ima HR NSB (možda u novijim zapisima ima NSK?) + +### 040 +# za sve je isti marc('040','a', 'HR FFZG' @@ -68,13 +69,31 @@ 'HR PPIAK' ); -if ( rec('300') && first(rec('300')) =~ m/Prijevod/) { + +### 041 indikatori +# pretpostavke o indikatorima: +# +# 1. Ako postoji polje 300 i prvo pojavljivanje tog polja sadrži /Prijevod/ , i1 = 1 +# (Da li je napomena uvijek pisana?) +# +# 2. Podatak o prevodiocu u 200g. Problem: različiti oblici riječi, različiti jezici. +# +# 3. Ako u UDK oznaci postoji "=", bez zagrada, onda je to prijevod +# (ako postoje zagrade pr. 94(=411.16) onda su to pomoćne oznake) +# pr. 821.111-2=163.42 je prijevod engleske drame na HR. +# to ima samo za književna djela, eseje.... + + +if ( rec('675') =~ m/\d=\d/ ) { +#if ( first(rec('300')) =~ m/Prijevod/ || first(rec('300')) =~ m/Izv. stv. nasl./ ) { marc_indicators('041', 1, ' '); } else { marc_indicators('041', 0, ' '); } -## naći primjer u NSK + +### 041 +# ponovljivo polje konvertira se u ponovljivo potpolje #_debug(2); marc_repeatable_subfield('041','a', @@ -82,26 +101,100 @@ ); #_debug(0); -# indikatori za članove. treba uvjetovati prema jezicima !! -marc_indicators('245', 0, 0); +### 080 +# 675 podpolja c, d ... - što s njima ??? + +marc('080','a', + rec('675','a') +); + + +### 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 + + +marc('084','a', + rec('686') +); + +### 100 +# I1 = 0 ako je pseudonim (ima 700a, nema 700b) + +marc_indicators('100', 1, ' '); +marc('100','a', + join_with(', ', + rec('700', 'a'), + rec('700', 'b') + ) +); + + +### 111 i 110 +# provjeriti ispise naslova iz svake baze - moguće su greške. + +if ( rec('710','f') ) { + +marc_indicators('111', 2, ' '); +marc('111','a', + rec('710','a') +); + +marc('111','c', + rec('710','e') +); + +marc('111','d', + rec('710','f') +); + +marc('111','e', + rec('710','b') +); + +marc('111','n', + rec('710','d') +); + + +} else { + +marc_indicators('110', 2, ' '); +marc('110','a', + rec('710','a') +); + +marc('110','c', + rec('710','c') +); + +}; + + +### 245 indikatori +# i1 = 1 za sve zapise +# i2 = pretpostavlja se na temelju člana na početku naslova i jezika +# treba nadopuniti i dati podatke na verifikaciju knjižničarima + +marc_indicators('245', 1, 0); if ( ( rec('200','a') =~ m/^Die /) || ( rec('200','a') =~ m/^Das /) || ( rec('200','a') =~ m/^The /) ) { - marc_indicators('245', 0, 4); + marc_indicators('245', 1, 4); } if ( ( rec('200','a') =~ m/^A /) && ( rec(101) =~ m/ENG/ ) ) { - marc_indicators('245', 0, 2); + marc_indicators('245', 1, 2); } - - +### 245 +# redoslijed polja #_debug(3); - marc_compose('245', 'a', suffix( rec('200','b') ? '. ' : @@ -136,25 +229,17 @@ 'c', rec('200','f'), # append to last subfield - '+', prefix('. ', rec('200','c') ), + '+', prefix('. ', + rec('200','c') + ), ); -#marc('440','a', -# suffix( -# rec('225','e') ? ' : ' : -# rec('225','v') ? ' ; ' : -# '. ', -# rec('225','a'), -# ) -#); - - - +#_debug(0); -#_debug(0); +### 250 marc('250','a', suffix( @@ -168,13 +253,15 @@ rec('205','f') ); + +### 260 # ponovljiva potpolja u originalnom redosljedu marc_original_order('260', '210'); +### 300 # provjeriti interpunkcije !! -# u NSK nesto ne stima marc('300','a', suffix( @@ -208,31 +295,19 @@ ); -# provjeriti +### 440 +# 2.ind. prema jeziku i članu marc_indicators('440', ' ', '0'); marc('440','a', - join_with(' / ', + join_with(' : ', rec('225','a'), - rec('225','f') + rec('225','e') ) -); +) ; -#marc('440','a', -# join_with(' : ', -# rec('225','a'), -# join_with(" = ", -# rec('225','d'), -# join_with(" / ", -# rec('225','e'), -# rec('225','f') -# ) -# ) -# ) -#); - -marc('440','h', +marc('440','n', rec('225','h') ); @@ -251,14 +326,20 @@ rec('225','x') ); -#marc('490','v', -# join2_with(225, 'v', ' , ', 225,'w'); -# join_with(', ', -# rec('225','v'), -# rec('225','w') -# ) +marc('440','a', + rec('225','b'), +); + + +### 490 +# +#marc('490','a', +# rec('225','a') #); + +### 500 + marc('500','a', rec('300') ); @@ -275,6 +356,8 @@ rec('314') ); +### 504 + marc('504','a', rec('320') ); @@ -284,7 +367,9 @@ # u LOC konv. tablici stoji 327 (NP) u 505 (NR) # standard i validacije dopuštaju 501 (R) i 505 (R) +## 505 ## FFPS 327 - sadrzaj + if ( config() =~ m/ffps/ || config() =~ m/fftu/ ) { marc_indicators('505', '0', ' '); marc('505','a', @@ -295,10 +380,14 @@ } + ## 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 + # FFPS 330 (NP) - sažetak if ( config() =~ m/ffps/ ) { marc('520','a', @@ -315,53 +404,39 @@ ); } + +### 538 + marc('538','a', rec('337','a') ); -# možda i polje 520y - jezik napomene ako je uvijek isti jezik +### 246 marc_indicators('246', 1, 3); marc('246','a', rec('532') ); +### 655 + marc_indicators('655', ' ', 4); marc('655','a', rec('608') ); +### 653 + marc_indicators('653', 0, ' '); marc('653','a', rec('610') ); -# 675 podpolja c, d ... - što s njima ??? - -marc('080','a', - rec('675','a') -); - -# 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') -); +#_debug(2); -marc_indicators('100', 1, ' '); -marc('100','a', - join_with(', ', - rec('700', 'a'), - rec('700', 'b') - ) -); -#_debug(2); +### 700 marc_indicators('700', 1, ' '); @@ -430,8 +505,7 @@ ); ## 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') # ); @@ -461,43 +535,9 @@ #_debug(0); -if ( rec('710','f') ) { - -marc_indicators('111', 2, ' '); -marc('111','a', - rec('710','a') -); - -marc('111','c', - rec('710','e') -); - -marc('111','d', - rec('710','f') -); - -marc('111','e', - rec('710','b') -); - -marc('111','n', - rec('710','d') -); - - -} else { - -marc_indicators('110', 2, ' '); -marc('110','a', - rec('710','a') -); - -marc('110','c', - rec('710','c') -); -}; +### 740 marc_indicators('740', 0, ' '); @@ -506,21 +546,61 @@ # rec('200','c') # ); -# marc('740','a', -# rec('200','k') -# ); + marc('740','a', + rec('200','k') + ); # } else { - marc('740','a', - rec('464','a') - ); +#marc('740','a', +# rec('464','a') +#); # }; +### generiranje zapisa o nakladničkoj cjelini i povezivanje podređenog zapisa s nadređenim + + +my $series_key = join_with('', + rec('225','a'), + rec('210','a'), + rec('210','b'), +); + +if ($series_key) { + + marc_indicators('760', 0, ' '); + + marc('760','w', + get( $series_key ) + ); + +} + +### testing +# +# my $dup_key = join_with('', +# rec('200','a'), +#); +# +#if ($dup_key) { +# marc('995','a', +# get( $dup_key ) +# ); +#} +# +# +# marc_indicators('776', 0, ' '); +# +# marc('776','a', +# rec('452','1') +# ); +# + +### višerazinci +# odvojiti u posebnu datoteku i dokumentirati -## višerazinci if ( rec('230') ) { @@ -652,59 +732,44 @@ ); -}; - -my $nak_cj = get( rec('225','a') ); - -if ($nak_cj) { - -marc('760','w', - $nak_cj -); - } -marc_indicators('776', 0, ' '); - -marc('776','a', - rec('452','1') -); - -#marc('900','a', -# lookup( -# sub { rec('000') }, -# 'ffps','libri', -# sub { rec('200','a') . rec('200','f') . rec('205') }, -# ) -#); - -#marc('901','a', -# lookup( -# sub { 'NSK: ' . rec('200','a') }, -# 'nsk','baza', -# sub { rec('200','a') }, -# sub { rec('10') } -# ) -#); +################################## +## ## +## pomoćni ispisi - privremeno! ## +## ## +################################## if ( ! rec('464') && rec('200','c') ) { - marc('003','a', + marc('002', 'ima-200c-nema-464' ); } if ( ! rec('464') && rec('200','k') ) { - marc('005','a', + marc('003', 'ima-200k-nema-464' ); } if ( ! ( rec('200','c') || rec('200','k') ) && rec('464') ) { - marc('006','a', + marc('004', 'ima-464-nema-200c-ili-200k' ); } +#_debug(2); + +if ( rec('200') =~ m/prev/ ) { + marc('005', + 'prijevod' + ); +} + +#_debug(0); + + + }