X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=conf%2Fhpm%2Fknjige.pl;h=78f2fe2e3a2742fdc011cbe2bfc494752e013104;hb=e68b97d586ffb7ce8cc187149e01bce2bb844aec;hp=a57cf6687252531ba250fdd0a165faa37303dbfe;hpb=e0da2ff0075cbffe32c9040b5d867504fcf32703;p=webpac2 diff --git a/conf/hpm/knjige.pl b/conf/hpm/knjige.pl index a57cf66..78f2fe2 100644 --- a/conf/hpm/knjige.pl +++ b/conf/hpm/knjige.pl @@ -1,6 +1,6 @@ # Ova datoteka sadrzi pravila za generiranje MARC21 ISO 2709 izlazne # datoteke. Ulazni format je CDS/ISIS izvorni format, sa zapisima u -# UNIMARC formatu, koji sadr¿i visestruka odstupanja od standarda. +# UNIMARC formatu, koji sadrzi visestruka odstupanja od standarda. ## konvertira se ako postoji polje 200^a if ( rec('200','a') ) { @@ -144,7 +144,7 @@ marc_fixed('008','33','|'); marc_fixed('008','34','|'); ### 020 -## postoji modify za polje 10 -> drugi ISBN poèinje prefixom "ISBN" koji se mièe (pr. u sfb) +## postoji modify za polje 10 -> drugi ISBN pocinje prefixom "ISBN" koji se mice (pr. u sfb) #if ( frec('10') ne ( frec('290') ) ) { if ( rec('10','a') !~ /pogre/ ) { marc('020','a', @@ -170,14 +170,14 @@ marc_fixed('008','34','|'); ### 035 ## marc 035a - System Number -## polje mo¾e sadr¾avati slova i razmake -## moguæ problem u pretra¾ivanju ako ima zagrade, kako bi trebalo po standardu +## polje moze sadrzavati slova i razmake +## moguc problem u pretrazivanju ako ima zagrade, kako bi trebalo po standardu marc('035','a', join_with('', # config('input normalize path'), # config('name'), - '(HR-ZaHPM)', + '(HR-ZaHPM)isis', # config(), # config('input name'), # id(), @@ -202,32 +202,19 @@ marc('040','e', 'ppiak' ); -### 041 - indikatori -## pretpostavke o indikatorima -## 1. Ako postoji polje 300 i ono sadr¾i /Prijevod/ ili /Izv. stv. nasl./, 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.... -## ovo treba kasnije ispravljati - -#if ( rec('675') =~ m/\d=\d/ ) ? - ### 041 ## ponovljivo polje (101) konvertira se u ponovljivo potpolje (041a) -## koristi se kad ima vi¹e od jednog jezika, ili kad se radi o prijevodu +## koristi se kad ima vise od jednog jezika, ili kad se radi o prijevodu ## nadopuniti if ( ( count( rec('101','a') ) > 1 ) || ( rec('101','b') ) || ( rec('101','h') ) ) { - marc_original_order('041','101'); if ( ( grep( m/prijevod/i, rec('300') ) ) || ( rec('101','h') ) ) { - marc_indicators('041', 1, ' '); + marc_indicators('101', 1, ' '); } else { - marc_indicators('041', ' ', ' '); + marc_indicators('101', ' ', ' '); } + marc_original_order('041','101'); } @@ -328,7 +315,7 @@ if ( rec('710','d') || rec('710','e') || rec('710','f') ) { my $titleind1; -if ( rec('700') || rec('710') ) { +if ( rec('700') || rec('710') || rec('711') ) { $titleind1 = 1; } else { $titleind1 = 0; @@ -371,18 +358,19 @@ marc_compose('245', ( rec('200','d') ) ? ' =' : ( rec('200','e') ) ? ' :' : ( rec('200','k') ) ? ' ;' : + ( rec('200','h') ) ? '.' : '.', rec('200','a'), ), 'b', suffix( - ( rec('200','d') && rec('200','f') ) ? ' /' : - ( rec('200','d') && rec('200','c') ) ? '.' : + ( rec('200','d') && ! rec('200','f') ) ? '.' : + ( rec('200','d') && ! rec('200','f') ) ? '.' : '', rec('200','d'), ), 'b', suffix( ( rec('200','e') && rec('200','f') ) ? ' /' : - ( rec('200','e') && rec('200','c') ) ? '.' : + ( rec('200','e') && rec('200','h') && ! rec('200','f') ) ? '.' : '', rec('200','e'), ), @@ -392,6 +380,19 @@ marc_compose('245', '', rec('200','k'), ), + 'n', suffix( + ( rec('200','h') && rec('200','f') ) ? ' /' : + ( rec('200','h') && rec('200','i') ) ? '.' : + ( rec('200','h') && ! ( rec('200','i') || rec('200','f') ) ) ? '.' : + '', + rec('200','h'), + ), + 'p', suffix( + ( rec('200','i') && rec('200','f') ) ? ' /' : + ( rec('200','i') && ! rec('200','f') ) ? '.' : + '', + rec('200','i'), + ), 'c', suffix( ( rec('200','f') && rec('200','c') ) ? '. ' : '', @@ -473,7 +474,7 @@ if ( rec('225') ) { } # marc_indicators('830',' ','0'); -# i2 ovisi èlanu - popraviti +# i2 ovisi clanu - popraviti # # marc('830','a', # regex('s/(^.*)\s\/\s(.*)/$1 ($2)/g', @@ -525,8 +526,8 @@ marc('500','a', rec('300') ); -### 502 - bilje¹ka o disertacijama -## odgovarajuæeg polja nema u originalnim podacima. mo¾da se mo¾e pretpostaviti? +### 502 - biljeska o disertacijama +## odgovarajuceg polja nema u originalnim podacima. mozda se moze pretpostaviti? ### 504 marc('504','a', @@ -542,139 +543,132 @@ marc('653','a', ); -#_debug(2); - ### 700 ## ako je u originalu ponovljivo polje treba bioti i konvertirano u ponovljivo !! ## ako ima samo podpolje a onda je pseudonim - nakon konverzije treba provjeriti -if ( rec('700','c') ) { - if ( rec('700','c') =~ m/, / ) { - marc_indicators('700', 1, ' '); - } else { - marc_indicators('700', 0, ' '); - } - marc_compose('700', - 'a', rec('700','c'), - '4', 'aut' - ); -} - -if ( rec('700','e') ) { - if ( rec('700','e') =~ m/, / ) { - marc_indicators('700', 1, ' '); - } else { - marc_indicators('700', 0, ' '); - } - marc_compose('700', - 'a', rec('700','e'), - '4', 'aut' - ); -} - -if ( rec('700','g') ) { - if ( rec('700','g') =~ m/, / ) { - marc_indicators('700', 1, ' '); - } else { - marc_indicators('700', 0, ' '); - } - marc_compose('700', - 'a', rec('700','g'), - '4', 'aut' - ); -} - -if ( rec('700','i') ) { - if ( rec('700','i') =~ m/, / ) { - marc_indicators('700', 1, ' '); - } else { - marc_indicators('700', 0, ' '); - } - marc_compose('700', - 'a', rec('700','i'), - '4', 'aut' - ); -} - -if ( rec('700','k') ) { - if ( rec('700','k') =~ m/, / ) { - marc_indicators('700', 1, ' '); - } else { - marc_indicators('700', 0, ' '); - } - marc_compose('700', - 'a', rec('700','k'), - '4', 'aut' - ); -} - - if ( rec('701','a') ) { - marc_indicators('700', 1, ' '); - marc('700','a', - rec('701','a') - ); + #_debug(3); + marc_indicators('701', 1, ' '); # override original indicators + marc_original_order('700','701'); + #_debug(0); } -if ( rec('701','c') ) { - if ( rec('701','c') =~ m/, / ) { - marc_indicators('700', 1, ' '); - } else { - marc_indicators('700', 0, ' '); - } - marc_compose('700', - 'a', rec('701','c'), - '4', 'aut' - ); -} - -if ( rec('701','e') ) { - if ( rec('701','e') =~ m/, / ) { - marc_indicators('700', 1, ' '); - } else { - marc_indicators('700', 0, ' '); - } - marc_compose('700', - 'a', rec('701','e'), - '4', 'aut' - ); -} +my $relcode = rec('702','4'); +my $relcode_konv = { + 'autor' => 'aut', + 'autor dodatka' => 'wam', + 'autor fotografija' => 'pht', + 'autorica' => 'aut', + 'autorica i urednica' => 'aut edt', + 'autorica teksta' => 'aut', + 'autorica uvodnog teksta' => 'aui', + 'autor izložbe' => 'cur', + 'autor izložbe i fotografije' => 'cur pht', + 'autor kataloÅ¡kih jedinica' => 'aqt', + 'autorov suradnik' => 'oth', + 'autor popratnih tekstova i kataloga' => 'aqt', + 'autor predgovora' => 'aui', + 'autor projekta' => 'pdr', + 'autor projekta i urednik, izrada kazala' => 'pdr edt aqt', + 'autor teksta' => 'aut', + 'autor teksta i urednik' => 'aut edt', + 'autor tekstova u jednom poglavlju i autor fotografija' => 'aut pht', + 'autor uvoda' => 'aui', + 'bibliografski urednik' => 'pbd', + 'crtač geografskih karata' => 'ill', + 'crteži' => 'ill', + 'crteži karata' => 'ill', + 'dizajner' => 'dsr', + 'editor' => 'edt', + 'fotograf' => 'pht', + 'fotografija' => 'pht', + 'fotografije' => 'pht', + 'fotografije, engleski prijevod' => 'pht trl', + 'fotografije i crteži' => 'pht ill', + 'general editor' => 'edt', + 'GIS i izrada karata' => 'ctg', + 'glavna urednica' => 'edt', + 'glavni i odgovorni urednik' => 'edt', + 'glavni urednik' => 'edt', + 'ilustracije' => 'ill', + 'ilustracije i izrada karata' => 'ill ctg', + 'ilustrator' => 'ill', + 'ilustratorica' => 'ill', + 'izrada crteža' => 'ill', + 'izrada karata' => 'ill', + 'izrada karata antičkih prometnica' => 'ctg', + 'izrada kazala' => 'ant', + 'izvedba CD-ROMa' => 'oth', + 'kartograf' => 'ctg', + 'kolorirani bakropisi' => 'ill', + 'koncepcija' => 'ccp', + 'likovno-grafička oprema' => 'ill', + 'likovno oblikovanje' => 'ill', + 'obrada izvornih karata i izrada kartografskih originala' => 'ctg', + 'pisac predgovora' => 'aui', + 'pisac uvoda' => 'aui', + 'pomoćnica urednika' => 'edt', + 'pomoćnik glavnog urednika' => 'edt', + 'pomoćnik urednika' => 'edt', + 'pomoćni urednik' => 'edt', + 'predgovor' => 'aui', + 'predsjednik redakcijskog kolegija' => 'pbd', + 'prevoditelj' => 'trl', + 'prevoditeljica' => 'trl', + ' prevoditeljica' => 'trl', + 'prevoditeljica i redaktorica' => 'trl', + 'priprema fotografija' => 'oth', + 'priređivač' => 'edt', + 'priređivač izdanja' => 'pbd', + 'redaktor' => 'oth', + 'savjetnik' => 'oth', + 'series editor' => 'pbd', + 'stručna suradnica' => 'ctb', + 'stručna suradnica i autorica teksta' => 'aut', + 'stručni koordinator' => 'oth', + 'stručni suradnik' => 'oth', + 'stručni suradnik i autor teksta' => 'aut', + 'stručni urednik' => 'edt', + 'suradnica' => 'oth', + 'suradnik' => 'oth', + 'tehnička realizacija CD-ROM-a' => 'oth', + 'tekstovi o muzejima' => 'aut', + 'tekstovi o zbirkama vjerskih zajednica' => 'aut', + 'urednica' => 'edt', + 'urednik' => 'edt', + 'urednik i autor' => 'edt aut', + 'urednik i urednik nakladničke cjeline' => 'edt pbd', + 'urednik izdanja' => 'edt', + 'urednik knjige i nakladničke cjeline' => 'edt', + 'urednik nakladničke cjeline' => 'pbd', + 'urednik pretiska' => 'edt', + 'urednik serije' => 'edt', + 'uvod' => 'aui', + 'zemljopisne karte' => 'ill', + 'zemljovidi' => 'ill', + 'zvučni snimci' => 'rce' +}; -if ( rec('701','g') ) { - if ( rec('701','g') =~ m/, / ) { - marc_indicators('700', 1, ' '); - } else { - marc_indicators('700', 0, ' '); - } - marc_compose('700', - 'a', rec('701','g'), - '4', 'aut' - ); -} if ( rec('702','a') ) { marc_indicators('700', 1, ' '); - marc('700','a', - rec('702','a'), - ); -} -if ( rec('702','c') ) { - marc_indicators('700', 1, ' '); - marc('700','a', - rec('702','c'), - ); -} - -if ( rec('702','e') ) { - marc_indicators('700', 1, ' '); - marc('700', - 'a', rec('702','e'), - ); + foreach my $repeat ( rec_array('702') ) { + my $sf_a = $repeat->{a} || die "702 doesn't have a ", dump( $repeat ); + if ( my $sf_4 = $repeat->{4} ) { + my $relcode = $relcode_konv->{ $sf_4 } || die "no relcode_konv for ",dump( $sf_4 ); + marc_compose('700', + '4' => $relcode, + 'a' => $sf_a, + ); + } else { + marc('700', 'a', $sf_a ); + } + } } - #_debug(0); ## eventualno nadopuniti 710 i 711 - provjetiti da li u podacima postoji u ISIS-u @@ -728,165 +722,6 @@ marc_compose('711', } - -### 740 - Added Entry - Uncontrolled Related/Analytical Title -## raspraviti -## nadopuniti prvi indikator prema èlanovima -marc_indicators('740', '0', ' '); - -# if ( ! rec('464') ) { -# marc('740','a', -# rec('200','c') -# ); - -#marc('740','a', -# rec('200','k') -#); - -# } else { - -#marc('740','a', -# rec('464','a') -#); - -# }; - -### 760 w --------------------------------------------- -## generiranje zapisa o nakladnièkoj cjelini i povezivanje podreðenog zapisa s nadreðenim - -#if ( -# rec('225','a') # da li je nakladnièka cjelina? -#) { - -#my $series_key = -#join_with('', -# rec('225','a'), -# rec('210','a'), -# rec('210','b'), -#); -# -#my $series = get( $series_key ); -# -#if ($series) { -# warn "nije novi"; -#} else { -# -#$series = join_with('', -# uc( config() ), -# ' LS', -# rec('000') -#); -# -#set( $series_key => $series ); -# -#} # $series -#} # nakladnièka cjelina -# -#my $series_key = join_with('', -# rec('225','a'), -# rec('210','a'), -# rec('210','b'), -#); -# -#if ($series_key) { -# -# marc_indicators('760', 0, ' '); -# -# marc('760','t', -# rec('225','a') -# ); -# 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') -# ); -# -# ------------------------------------------------------------------- - -### 774 - Constituent Item Entry - to bi trebali koristiti ali ne koristimo jer NSK to koristi za ne¹to drugo -### 787 - Nonspecific Relationship Entry - -#marc_indicators('787','0',' '); -# -#marc_compose('787', -# 'g', rec('230','v'), -# 't', rec('230','a'), -# 'b', rec('240','a'), -# 'd', rec('250','a'), -# 'd', rec('250','d'), -# 'h', rec('260','a'), -# 'k', rec('270','a'), -# 'n', join_with('. - ', -# rec('280'), -# ), -# 'x', join_with(', ', -# rec('290'), -# ) -#); -#marc_compose('787', -# 'g', rec('231','v'), -# 't', rec('231','a'), -# 'b', rec('241','a'), -# 'd', rec('251','a'), -# 'd', rec('251','d'), -# 'h', rec('261','a'), -# 'k', rec('271','a'), -# 'n', join_with('. - ', -# rec('281'), -# ), -# 'x', join_with(', ', -# rec('291'), -# ) -#); -#marc_compose('787', -# 'g', rec('232','v'), -# 't', rec('232','a'), -# 'b', rec('242','a'), -# 'd', rec('252','a'), -# 'd', rec('252','d'), -# 'h', rec('262','a'), -# 'k', rec('272','a'), -# 'n', join_with('. - ', -# rec('282'), -# ), -# 'x', join_with(', ', -# rec('292'), -# ) -#); -#marc_compose('787', -# 'g', rec('233','v'), -# 't', rec('233','a'), -# 'b', rec('243','a'), -# 'd', rec('253','a'), -# 'h', rec('263','a'), -# 'k', rec('273','a'), -# 'n', join_with('. - ', -# rec('283'), -# ), -# 'x', join_with(', ', -# rec('293'), -# ) -#); - - ### 852 - ne koristimo, koristimo 942 i 952 ### 876 - item information - basic bibliographic unit (R) @@ -895,59 +730,124 @@ marc_indicators('740', '0', ' '); # rec('991','t'), #); -### 886 - former marc -# inicijale treba prebaciti u neko lokalno polje, a ovo polje nam ne treba -# -# marc_indicators('886', 2, ' '); -# marc('886','2', -# 'ffmarc' -# ); -# marc('886','a', -# '994' -# ); -# marc('886','b', -# join_with(''. -# '##^a', -# join_with('', -# prefix('^a', -# rec('994','a'), -# ), -# prefix('^b', -# rec('994','b') -# ) -# ) -# ) -#); ### KOHA items - marc('942','b', 'LIB' ); -marc('942','c', - 'K' -); +my $keyword = dump( rec('610') ); +my $itype; -marc('952','a', - 'HPM' -); -marc('952','b', - 'HPM' -); -marc('952','e', - rec('991','a') -); -marc('952','t', +if ( rec('200','a') =~ m/Elektroni/ ) { + marc('942','c', + 'CD' + ); + $itype = 'CD'; +} elsif ( $keyword =~ m/disertacija/ ) { + marc('942','c', + 'DIS' + ); + $itype = 'DIS'; +} elsif ( $keyword =~ m/magistarski/ ) { + marc('942','c', + 'MAG' + ); + $itype = 'MAG'; +} elsif ( rec('990') =~ m/(separat|posebni)/ ) { + marc('942','c', + 'SEP' + ); + $itype = 'SEP'; +} elsif ( rec('990') =~ m/starih/ ) { + marc('942','c', + 'OLD' + ); + $itype = 'OLD'; +} else { + marc('942','c', + 'BOOK' + ); + $itype = 'BOOK'; +} + +# HPM local + +marc('991','a', rec('991','b') ); -marc('952','o', +marc('992','a', + rec('992') +); +marc('993','a', rec('990') ); +# Items +#marc('952','a', +# 'HPM' +#); +#marc('952','b', +# 'HPM' +#); +#marc('952','e', +# rec('991','a') +#); +#marc('952','o', +# rec('990') +#); +#marc('952','t', +# rec('991','b') +#); +my $copynumber = rec('991','b') ; +my $callnumber = rec('990') ; + +my $location = rec('992'); +my $location_konv = { + 'ZB, Min. odjel i Geol. odjel, HPrM' => 'ZB', + 'ZB, Min. odjel i Geol. odjel, HPM' => 'ZB', + 'ZB i Min. odjel, HPrM' => 'ZB', + 'ZB i Min. odjel, HPM' => 'ZB', + 'ZB i Geol. odjel, HPrM' => 'ZB', + 'ZB i Geol. odjel, HPM' => 'ZB', + 'ZB, HRrM' => 'ZB', + 'ZB, HrPM' => 'ZB', + 'ZB, HPrM' => 'ZB', + 'ZB, HPM' => 'ZB', + 'ZB, Geol. odjel i Min. odjel, HPM' => 'ZB', + 'Min. odjel i ZB, HPM' => 'ZB', + 'Min. odjel i Geol. odjel, HPrM' => 'MP', + 'Min. odjel i Geol. odjel, HPM' => 'MP', + 'Min. odjel, HPrM' => 'MP', + 'Min. odjel, HPM' => 'MP', + 'Min. odjel' => 'MP', + 'Institut Makarska' => 'ZB', + 'Geol. odjel i ZB, HPM' => 'ZB', + 'Geol. odjel i Min. odjel, HPM' => 'MP', + 'Geol. odjel, HPrM' => 'GP', + 'Geol. odjel, HPM' => 'GP' +}; + +#dump ( $itype ); + +if ( rec('991','a') ) { + foreach my $repeat ( rec_array('991') ) { + my $sf_a = $repeat->{a} || die "991 doesn't have a ", dump( $repeat ); + if ( my $sf_b = $repeat->{b} ) { + $sf_b || die "no inv"; + marc_compose('952', + 'a' => 'HPM', + 'b' => 'HPM', + 'c' => $location_konv->{$location}, + 't' => $sf_b, + 'o' => $callnumber, + 'y' => $itype + ); + } + } +} - -} # polje 200a +} # polje 201a