Otin asiakseni tutkia, mitä kirjastoissa vuosikymmeniä eri muodoissa käytetyn MARC-metadataformaatin kenttiä hyödynnetään pääkaupunkiseudun Helmet-tietokannassa. Alkujaan tarkoituksenani oli seuloa MarcXimiL-työkalun avulla tietokannasta esiin siitä todennäköisesti löytyvät duplikaattitietueet. Ohjelman osoittauduttua tuskaisen hitaaksi ja hieman bugiseksi, päätin jättää asian sikseen ja julkaista duplikaattivertailua varten laatimani kenttäyhteenvedon nyt, ja toteuttaa duplikaattivertailun XQueryn avulla joskus myöhemmin, jollei joku muu ratkaise pulmaa minua ennen.

Kenttäyhteenvedon pohjana käytin MarcXimil-työkalun mukana tulleen colldescr -skriptin tulostetta. Oletusarvoisesti colldescr tulostaa kenttien käytöstä prosenttijakaumat sekä kenttien pituuksien keskiarvot. Muokkasin skriptiä niin, että se tulosteeseen saadaan kenttien absoluuttiset määrät sekä pituuksien mediaanit. Muunnetun skriptin voi ladata käyttöön Gist-palvelusta. Ajoin colldescr-skriptin jokaisen Helmet-datadumpin 68 MARCXML-tiedoston kohdalla, joista kukin sisälsi keskimäärin 10000 MARC-tietuetta. Helmet-tietokannan nykyisessä datadumpissa on kaikkiaan 672206 tietuetta (versio 1.1 / 20.5.2011).

Luonnollisestikaan skriptiä ei kannattanut ajaa käsipelillä, vaan kutsuin sitä BASH-komentotulkkiskriptin kautta. Oheisessa komentotulkkiskriptissä viitattu files_to_process.tmp sisältää listan kaikista 68 MARCXML-tiedostosta:

#!/bin/bash

while read line; do
echo $line
python misc/colldescr.py $line > $line.csv
done < files_to_process.tmp%

Skriptin suoritettuani minulla oli 68 kappaletta CSV-muotoisia tiedostoja, joista kukin sisälsi ennen taulukkosarakkeita muutaman rivin skriptin ajonaikaisia viestejä. Nämä täytyi saada poistettua tiedostoista ennen tiedostojen jatkokäsittelyä. Maltoin kuitenkin mieleni ryhtyä poistamaan rivejä käsin ja tutkin hieman R-tilasto-ohjelman dokumentaatiota - olin joka tapauksessa päättänyt laskea yhteenvedon R:ssä, joten jos mahdollista, myös taulukot kannattaisi siivota samaa työkalua käyttäen. Kuinka ollakaan, R:n taulukkolukija osaa jättää pois tiedostojen alusta halutun määrän rivejä ja onnekseni ajonaikaisten viestien määrä tiedostoissa oli vakio. Seuraava R-skripti lataa CSV-muotoiset tiedostot sekä yhdistää taulukkojen arvot yhteisten avainten (l. kenttätunnisteiden) perusteella.

require(plyr)
require(reshape)
csv_files = list.files(
  path="/Users/matti/Documents/2012/HelmetMARCUsage/csv",
  pattern = '*.csv',
  all.files = TRUE, 
  full.names = TRUE)

csv_file_list = lapply(
  csv_files, 
  function(x){
    read.csv(
      file = x,
      skip = 13,
      sep = '\t',
      col.names = c('field', 'count', 'length')
      )})

merged_csv <- merge_all(csv_file_list)

marc_field_usage<-ddply(
  merged_csv,
  c("field"),
  summarise, 
  count = sum(count),
  length = median(length)
  )

Luotu marc_field_usage -muuttuja sisältää kaikkien Helmet-tietokannassa käytettyjen MARC-kenttien ja osakenttien lukumäärät sekä näiden pituuksien mediaanit. Alla olevaan taulukkoon olen ottanut 96 useimmin käytettyä kenttää, sekä liittänyt näiden yhteyteen kenttäkuvaukset Helmet-luettelointiohjeesta.

Kenttä Lkm Mediaanipituus Kuvaus
650 4 a 2603565 11.0 Asiasana, lähdettä ei määritetty
700 1 a 1061766 14.0 Lisäkirjaus henkilötekijästä: nimien järjestys käänteinen, sukunimi.
700 1 e 839056 6.0 Lisäkirjaus henkilötekijästä: tekijän funktio
245 10 a 588940 23.0 Päänimeke
730 0 a 563711 21.0 Lisäkirjaus yhtenäistetystä nimekkeestä: yhtenäistetty nimeke.
730 0 g 561594 14.0 Lisäkirjaus yhtenäistetystä nimekkeestä: säveltäjä.
300 a 552299 13.0 Ulko- tai ilmiasutiedot: aineiston eritysmääre ja laajuus.
041 0 a 547986 3.0 Kielikoodi: teoksen pääkieli.
001controlfield 536786 10.0 Kontrollinumero. ISBN tai ISMN ilman väliviivoja, mikäli saatavissa.
245 10 c 514656 31.0 Vastuullisuusmerkinnöt
260 b 512282 13.0 Julkaisutiedot: kustantaja.
588 a 490797 4.0 Luokka: Helsinki. pääluokka.
260 a 482828 9.0 Julkaisutiedot: kustannuspaikka.
546 a 481203 8.0 Kielihuomautus: teoksen pääkielet.
100 1 a 470081 14.0 Pääkirjaus henkilön nimestä, nimien järjestys käänteinen: sukunimi
020 a 452504 17.0 ISBN-tunnus väliviivoin.
740 0 a 398752 18.0 Lisäkirjaus nimekkeestä: nimeke.
651 4 a 383787 8.0 Maantieteellinen nimi asiasanana, lähdettä ei määritetty: maantieteellinen asiasana.
589 a 371353 4.0 Luokka: Espoo. Pääluokka.
005controlfiled 366827 16.0 Viimeisen transaktion tiedot (konversiohetki Plussa-järjestelmästä?)
590 a 328006 4.0 Luokka: Vantaa. Pääluokka.
913 00 a 321508 12.0 Tuntematon
300 b 280761 6.0 Ulko- tai ilmiasutiedot: kuvitus.
599 a 271929 12.0 Materiaali
260 c 250238 4.0 Julkaisutiedot: julkaisuaika.
300 c 236403 5.0 Ulko- tai ilmiasutiedot: koko.
574 a 223388 16.0 Kirjastokohtainen huomautuskenttä:helsinki. luetteloijan nimi.
500 a 208552 64.5 Yleinen huomautus, soitinkokoonpanohuomautus, laulun alkusanat.
008controlfield 192104 37.0 MARC21-formaatin kiinteämittainen kontrollikenttä.
245 10 b 172685 35.0 Nimeke- ja vastuullisuustiedot: toinen päänimeke.
028 01 a 153642 8.0 ISBN-tunnus väliviivoin.
591 a 143879 4.0 Luokka:Kauniainen. pääluokka.
7102 a 142713 17.0 Lisäkirjaus yhteisötekijästä: analyyttinen tekijä-nimeke -lisäkirjaus.
505 0 a 138765 354.5 Sisältöä tai aihetta koskeva huomautus.
577 a 137756 16.0 Kirjastokohtainen huomautuskenttä: Vantaa.
084 a 137749 5.0 Luokituskoodi
440 0 a 137364 22.0 Sarjamerkintö: sarjan päänimeke.
080 a 127299 5.5 Tuntematon
7102 e 124897 7.0 Lisäkirjaus yhteisötekijästä: analyyttinen tekijä-nimeke -lisäkirjaus. tekijän funktio.
575 a 115631 16.0 Kirjastokohtainen huomautuskenttä: espoo. luetteloijan nimi.
0411 a 114375 3.0 Kielikoodit. teos on käännös tai sisältää käännöksen. teoksen pääkieli.
0411 h 109795 5.0 Kielikoodit. teos on käännös tai sisältää käännöksen. teoksen alkukieli.
300 e 106489 12.0 Ulko- tai ilmiasutiedot. teoksen liiteaineisto.
600 14 a 105818 15.0 Kohdehenkilö. nimien osien järjestys käänteinen, sukunimi.
511 0 a 105443 111.0 Osallistuja- tai esittäjähuomautus.
577 b 102400 9.0 Kirjastokohtainen huomautuskenttä: Vantaa. MuistiVantaa-merkintä, uutuusluettelomerkintä.
028 01 b 101682 9.0 Tuotetunnus. Tuotemerkki.
575 b 97448 9.0 Kirjastokohtainen huomautuskenttä: Espoo.
7650 t 97006 21.0 Alkuteoksen nimeke.
588 b 90809 5.0 Luokka: Helsinki. luokkalisäkirjaus.
574 b 88316 10.0 Kirjastokohtainen huomautuskenttä: Helsinki.
100 1 e 78438 7.0 Pääkirjaus henkilön nimestä, nimen osien järjestys käänteinen. tekijän funktio.
250 a 74135 13.0 Painostiedot, painosmerkintö.
003controlfield 64439 3.0 MARC-kontrollikenttä
590 b 54811 5.0 Luokka: Vantaa. Luokkalisäkirjaus.
589 b 53503 5.0 Luokka: Espoo. Luokkalisäkirjaus.
440 0 v 53200 3.0 Sarjamerkintö. sarjan sisäinen numerointi.
245 14 a 49023 26.0 Nimeke- ja vastuullisuustiedot, ohitettavien merkkien määrä neljä
245 14 c 46261 27.0 Nimeke- ja vastuullisuustiedot, ohitettavien merkkien määrä 4.
7000 a 44243 8.0 Lisäkirjaus henkilötekijästä. sukunimi tai vastaava hakuelementtinä toimiva nimen osa.
700 12 a 41967 15.0 Lisäkirjaus henkilötekijästä. analyyttinen tekijä-nimeke -lisäkirjaus. sukunimi tai vastaava hakuelementtinä toimiva nimen osa.
700 12 t 41847 29.0 Lisäkirjaus henkilötekijästä. analyyttinen tekijä-nimeke -liskirjasu. nimeke.
110 2 a 41220 11.0 Pääkirjaus yhteisön nimestä. valtion tai hallintoalueen nimi tai pääyhteisö.
110 2 e 40253 7.0 Pääkirjaus yhteisön nimestä. tekijän funktio.
700 0 e 40186 6.0 Lisäkirjaus henkilötekijästä. tekijän funktio.
730 0 l 37506 24.5 Lisäkirjaus yhtenäistetystä nimekkestä. teoksen kieliversio.
730 0 p 34534 16.0 Lisäkirjaus yhtenäistetystä nimekkeestä. teoksen osan mikeme.
730 0 o 31642 18.0 Lisäkirjaus yhtenäistetystä niekkeestä. sovitusmerkintö.
600 04 a 30958 8.0 Kohdehenkilö, lähdettä ei määritetty. sukunimi tai vastaava hakuelementtinä toimiva nimen osa.
0243 a 28756 12.0 Muu kansainvälinen tunnus, ean. kansainvälinen tunnus.
7304 a 27400 24.0 Lisäkirjaus yhtenäistetystä nimekkeestä, yhtenäistetty nimeke.
7304 g 26946 13.0 Lisäkirjaus yhtenäistetystä nimekkeestä, säveltäjä.
7404 a 23670 23.0 Lisäkirjaus yhtenäistetystä nimekkeestä, yhtenäistetty nimeke.
578 b 22515 10.0 Kirjastokohtainen huomautuskenttä: kauniainen.
610 24 a 21589 17.0 Kohdeyleisö. muut yhteisöt, ei lähdettä määritetty. valtion tai hallintoalueen nimi, tai pääyhteisö.
440 0x 20711 10.0 Sarjamerkintö, ISSN.
260 f 18553 14.0 Julkaisutiedot, kirjapainon nimi.
730 0 n 17904 7.0 Lisäkirjaus yhtenäistetystä nimekkeestä.
506 a 15830 28.0 Tarkastus tai inventointi, käyttörajoitushuomautus.
260 e 15511 10.0 Julkaisutuiedot, painopaikka.
041 0 b 14056 5.0 Kielikoodi, teos on käännös tai sisältää käännöksen. tiivistelmän tai teoksen muun osan kielti.
100 0 a 13592 8.0 Pääkirjaus henkilön nimestä, nimien järjestys suora
245 14 b 13562 35.0 Nimeke ja vastuullisuustiedot. ohitettavien merkkien määrä neljä, toinen päänimeke.
591 b 12499 5.0 Luokka: Kauniainen.
520 a 12266 56.5 Tiivistelmä ja tiivistelmää tai yhteenvetoa kosketa huomautus. tiivistelmän nimeke.
035 a 12206 19.0 Tunnistenumero järjestelmässä.
518 a 11939 47.0 Äänitys- tai kuvausaikaa ja -paikkaa tai esinelöydön aikaa ja paikkaa koskeva huomautus. huomautus.
730 3 a 11653 21.0 Lisäkirjaus yhtenäistetystä nimekkeestä, yhtenäistetty nimeke.
730 3 g 11448 11.0 Lisäkirjaus yhtenäistetystä nimekkeestä, säveltäjä.
534 c 11000 25.0 Alkuperäisjulkaisua koskeva huomautus, julkaisutiedot.
245 13 a 10665 24.0 Nimeke ja vastuullisuustiedot. päänimeke, ohitettava kolme merkkiä.
240 10 a 10401 24.0 Yhtenäistetty nimeke.
245 13 c 9985 28.0 Nimeke ja vastuullisuustieto, ohitettavia merkkejä kolme
240 10 g 9744 8.0 Nimeke- ja vastuullisuustiedot.
578 a 8699 10.0 Kirjastokohtainen huomautuskenttä: Kauniainen. Luetteloijan nimi.
028 0 a 6881 8.0 Tuotetunnus