/[webpac2]/trunk/conf/normalize/mapping.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/conf/normalize/mapping.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 549 by dpavlin, Fri Jun 30 10:16:05 2006 UTC revision 603 by dpavlin, Sun Jul 23 20:19:56 2006 UTC
# Line 1  Line 1 
1  marc('001',  if ( rec('200','a') ) {
2          rec('000')  
3    # Leader
4    #
5    # raspraviti 17,18
6    
7    # u nekim knjižnicama koristi se 999a i 999b
8    
9    if ( rec('999') && first(rec('999')) =~ m/pregledan/i) {
10            marc_leader('05','c');
11    } else {
12            marc_leader('05','n');
13    }
14    
15            marc_leader('06','a');
16            marc_leader('07','m');
17            marc_leader('18','i');
18    
19    if ( rec('230') ) {
20            marc_leader('19','r');
21    }
22    
23    
24    # 001 polje dodaje Voyager
25    
26    # polje 035 je u NSK ponovljivo. zašto ???
27    
28    # privemeno koristimo 0356 umjesto 0359
29    
30    marc('035','6',
31    join_with('',
32    #               config('input normalize path'),
33    #               config('name'),
34    #               config('input name'),
35                    config(),
36    #               id(),
37    #               rec('994','a'),
38                    rec('000')
39            )
40  );  );
41    
42    # u marc 035a treba dodati System Number -
43    # NSK zapisuje Voyagerov ID (001) - kako ???
44    
45    # u FFSF bazama postoji nekoliko zaredanih ISBN, odvojenih s '. - '
46    
47  marc('020','a',  marc('020','a',
48          rec('010')          rec('010')
49  );  );
50    
51    # u polje 040a možda još dodati prefiks HR
52    # NSK ima HR NSB (možda u novijim zapisima ima NSK?)
53    
54    marc('040','a',
55            'FFZG'
56    );
57    
58    marc('040','b',
59            'hrv'
60    );
61    
62  if (rec('300') && first(rec('300')) =~ m/prijevod/i) {  if (rec('300') && first(rec('300')) =~ m/prijevod/i) {
63          marc_indicators('041', 1, ' ');          marc_indicators('041', 1, ' ');
64  } else {  } else {
# Line 18  marc_repeatable_subfield('041','a', Line 71  marc_repeatable_subfield('041','a',
71    
72  marc_indicators('245', 0, 0);  marc_indicators('245', 0, 0);
73    
74  marc('245','a',  #_debug(3);
         rec('200','a')  
 );  
75    
76  marc('245','b',  marc_compose('245',
77          join_with(' : ',          'a', suffix(
78                  rec('200','d'),                  rec('200','b') ? '. '   :
79                  rec('200','e')                  rec('200','k') ? ' ; '  :
80          )                  rec('200','d') ? ' = '  :
81                    rec('200','e') ? ' : '  :
82                    rec('200','f') ? ' / '  :
83                                     '.',
84                            rec('200','a')
85            ),
86            'h', rec('200','b'),
87            'b', rec('200','k'),
88            'b', rec('200','d'),
89            'b', rec('200','e'),
90            'c', rec('200','f'),
91    # FIXME append to last subfield
92            '+', prefix('. ', rec('200','c') ),
93  );  );
94    
95  marc('245','c',  
96          join_with(' ; ',  #_debug(0);
97                  rec('200','f'),  
98                  rec('200','g')  
99          )  # marc('245','a',
100  );  #       rec('200','a')
101    # );
102    #
103    # marc('245','b',
104    #       join_with(' : ',
105    #               rec('200','d'),
106    #               rec('200','e')
107    #       )
108    # );
109    #
110    # marc('245','c',
111    #       join_with(' ; ',
112    #               rec('200','f'),
113    #               rec('200','g')
114    #       )
115    # );
116    
117  marc('250','a',  marc('250','a',
118          rec('205','a')          rec('205','a')
119  );  );
120    
121    # FIXME ponovljiva potpolja u originalnom redosljedu
122    #
123    # marc_original_order('260', '210');
124    
125  marc('260','a',  marc('260','a',
126          rec('210','a')          rec('210','a'),
127  );  );
128    
129  marc('260','b',  marc('260','b',
130          rec('210','c')          rec('210','c'),
131  );  );
132    
133  marc('260','c',  marc('260','c',
134          rec('210','d')          rec('210','d'),
135  );  );
136    
137    # marc_compose('260',
138    #       'a', split_rec_on('210','a', qr/\s*;\s*/, 1),
139    #       'b', first(rec('210','c')),
140    #       'a', split_rec_on('210','a', qr/\s*;\s*/, 2),
141    #       'c', first(rec('210','d')),
142    # );
143    
144  marc('300','a',  marc('300','a',
145          rec('215','a')          rec('215','a')
146  );  );
# Line 68  marc('300','e', Line 157  marc('300','e',
157          rec('215','e')          rec('215','e')
158  );  );
159    
160    
161    marc_indicators('490', 1, ' ');
162  marc('490','a',  marc('490','a',
163          join_with(' = ',          join_with(' : ',
164                  rec('225','a'),                  rec('225','a'),
165                  join_with(" :  ",                  join_with(" =  ",
166                          rec('225','d'),                          rec('225','d'),
167                          join_with(" / ",                          join_with(" / ",
168                                  rec('225','e'),                                  rec('225','e'),
# Line 82  marc('490','a', Line 173  marc('490','a',
173  );  );
174    
175  marc('490','v',  marc('490','v',
176          rec('225','v')  #       join2_with(225, 'v', ' , ', 225,'w');
177            join_with(', ',
178                    rec('225','v'),
179                    rec('225','w')
180            )
181  );  );
182    
183  marc('500','a',  marc('500','a',
184          rec('300')          rec('300')
185  );  );
186    
187    marc('500','a',
188            rec('314')
189    );
190    
191  marc('504','a',  marc('504','a',
192          rec('320')          rec('320')
193  );  );
194    
195    # napomene uz konverziju polja sa sadržajem:
196    # NSK konvertira 327 (NP) u 501 (R)
197    # u LOC konv. tablici stoji 327 (NP) u 505 (NR)
198    # standard i validacije dopuštaju 501 (R) i 505 (R)
199    # FFPS koristi 327 (P)
200    # FFIZ koristi 327
201    
202    
203    marc_indicators('505', '0', ' ');
204    marc('505','a',
205            regex('s/\s*[\\r\\n]+\s*\**\s*/ ; /g',
206                    rec('327')
207            )
208    );
209    
210    # napomene uz konverziju polja 330:
211    # NSK konvertira 330 (P) u 520 (P) = LOC konv. tablica
212    # FFIZ koristi 330 (P) - ključne riječi, dijelovi sadržaja, sažeci
213    # FFFO koristi 330 (P) - ključne riječi, dijelovi sadržaja
214    # FFPS koristi 330 (NP) - sažetak
215    
216    marc('520','a',
217            regex('s/[\\r\\n]+/. /g',
218                    rec('330')
219            )
220    );
221    
222    # možda i polje 520y - jezik napomene ako je uvijek isti jezik
223    
224  marc_indicators('655', ' ', 4);  marc_indicators('655', ' ', 4);
225  marc('655','a',  marc('655','a',
226            rec('608')
227    );
228    
229    marc_indicators('653', ' ', ' ');
230    marc('653','a',
231          rec('610')          rec('610')
232  );  );
233    
234    # 675 podpolja c, d ... - što s njima ???
235    
236    marc('080','a',
237            rec('675','a')
238    );
239    
240    # 084 je other classification (R)
241    # NSK ga koristi za stručnu oznaku NSK iz polja 681
242    # NSK definira i prelazak polja 686 u 084, u skladu s LOC konv. tablicom
243    #
244    # polje 686 koristi FFPS
245    
246    marc('084','a',
247            rec('686')
248    );
249    
250  marc_indicators('100', 1, ' ');  marc_indicators('100', 1, ' ');
251  marc('100','a',  marc('100','a',
252          join_with(', ',          join_with(', ',
# Line 106  marc('100','a', Line 255  marc('100','a',
255          )          )
256  );  );
257    
258    #_debug(2);
259    
260  marc_indicators('700', 1, ' ');  marc_indicators('700', 1, ' ');
261    
262    if ( rec('701') ) {
263    marc('700','4',
264            'aut'
265    );
266    }
267    
268    marc('700','a',
269            rec('701', 'a'),
270    );
271    
272  marc('700','a',  marc('700','a',
273          join_with(', ',          join_with(', ',
274                  rec('701', 'a'),                  rec('701', 'c'),
275                  rec('701', 'b')                  rec('701', 'd')
276          )          )
277  );  );
278    
279  if ( rec('701') ) {  marc('700','a',
280          marc('700','4',          join_with(', ',
281                  '070'                  rec('701', 'e'),
282          );                  rec('701', 'f')
283  }          )
284    );
285    
286    marc('700','a',
287            join_with(', ',
288                    rec('701', 'g'),
289                    rec('701', 'h')
290            )
291    );
292    
293    
294    marc('700','a',
295            rec('702','a'),
296    );
297    
298    
299    # ako je u originalu ponovljivo polje treba biti i konvertirano!!
300    
301    
302    marc('700','a',
303            join_with(', ',
304                    rec('702','c'),
305                    rec('702','d')
306            )
307    );
308    
309    marc('700','a',
310            join_with(', ',
311                    rec('702','e'),
312                    rec('702','f')
313            )
314    );
315    
316  marc('700','a',  marc('700','a',
317          join_with(', ',          join_with(', ',
318                  rec('702','a'),                  rec('702','g'),
319                  rec('702','b')                  rec('702','h')
320          )          )
321  );  );
322    
323  if ( rec('702') ) {  #_debug(0);
324          marc('700','4',  
325                  '340'  
326    if ( rec('710','f') ) {
327    
328    marc_indicators('111', 2, ' ');
329    marc('111','a',
330            rec('710','a')
331    );
332    
333    marc('111','c',
334            rec('710','e')
335    );
336    
337    marc('111','d',
338            rec('710','f')
339    );
340    
341    marc('111','e',
342            rec('710','b')
343    );
344    
345    marc('111','n',
346            rec('710','d')
347    );
348    
349    
350    } else {
351            
352    marc_indicators('110', 2, ' ');
353    marc('110','a',
354            rec('710','a')
355    );
356    
357    marc('110','c',
358            rec('710','c')
359    );
360    
361    };
362    
363    
364    marc_indicators('740', 0, ' ');
365    marc('740','a',
366            rec('200','c')
367    );
368    
369    
370    # višerazinci
371    
372    if ( rec('230') ) {
373    
374            marc_duplicate();
375            marc_remove('245');
376    
377            marc('245','a',
378                    rec('230','a')
379            );
380    
381            if ( ! rec('230','a') ) {
382    
383                    marc('245','a',
384                            rec('200','a')
385                    );
386            }
387    
388            marc('245','b',
389                    rec('230','e')
390          );          );
391    
392            marc('245','c',
393                    rec('230','f')
394            );
395    
396            marc('245','n',
397                    rec('230','v')
398            );
399    
400  }  }
401    
402    if ( rec('231') ) {
403    
404            marc_duplicate();
405            marc_remove('245');
406    
407            marc('245','a',
408                    rec('231','a')
409            );
410    
411            if ( ! rec('231','a') ) {
412    
413                    marc('245','a',
414                            rec('200','a')
415                    );
416            }
417    
418            marc('245','b',
419                    rec('231','e')
420            );
421    
422            marc('245','c',
423                    rec('231','f')
424            );
425    
426            marc('245','n',
427                    rec('231','v')
428            );
429    
430    }
431    }

Legend:
Removed from v.549  
changed lines
  Added in v.603

  ViewVC Help
Powered by ViewVC 1.1.26