Luetteloijan vuodenkierto
Vuoden kierto näkyy kirjastoissa. Kesä tyhjentää dekkarihyllyt ja synkimmän talven aikaan matkakirjat löytävät lukijansa. Mutta näkyykö vuoden kierto kirjastotiedossa, luettelotietokannan tietuessa?
Viime kesänä aiempia kirjastoluettelografiikoita tehdessäni olin kiinnittänyt huomiota MARC -kontrollikentässä 008 olevaan päivämäärään. Tuohon kenttään tallennetaan tieto siitä, milloin kyseinen MARC-tietue on alunperin luotu. Sopivasti kentän tietoja käsittelemällä olisi siis mahdollista summailla yhteen tiettyinä kuukausina ja vuosina (ja miksei myös päivinä) luetteloitujen teosten määriä. Tuolloin asian kehittely jäi, koska tiedossani ei ollut kohtuullisella vaivalla opeteltavia työkaluja melkoisen suuren datamäärän läpikäyntiä varten. Tämä pulma ratkesi, kun olen nyt graduuni ja työhöni liittyen koittanut perehtyä XQuery-ohjelmointikieleen ja XML-tietokantoihin. Yhteenvetolukujen laskeminen alkoi näyttää mahdolliselta — tarvitsisi vain tallentaa Helmet-tietokannan sisältö XML-tietokantaan ja harrastaa hieman XQuery-magiaa.
Ja katso, lopulta Ärrä pyöräytti ulos käppyrän. Otin käsittelyyn mukaan aineiston vuodesta 1980 eteenpäin, sillä tätä vanhempaa aineistoa ovat poistot karsineet siksi paljon että kuvion skaalaero olisi tullut turhan suureksi. Lisäksi poistin vuoden 1992 lokakuulta 130961 (!!) tietokantaan viedyn teoksen piikin. Mitäköhän kummaa kirjastossa on tuolloin tapahtunut — vai liekö datassa virhe?
Kirjastotyössä olevat osannevat sanoa, muistuttaako kuvio todellisuutta. Kesän hiljaisuus erottuu, mutta näkyykö kuvasta jotain muutakin? Esimerkiksi, mikähän lie syy yksittäisten luettelointiaktiivisuuspiikkien taustalla?PDF-versiosta erottunee yksityiskohdat paremmin.
Työvaiheet olivat kutakuinkin samat, kuin aiemmissa Helmet-aineistoa käyttäneissä kokeiluissani. Aluksi muunsin Helmet-datadumpin XSLT-muunnostiedoston avulla MODS-muotoon (kiitokset muuten Labs-väelle datadumpin päivittämisestä!). MODS-muodosta ajoin tietokannan vielä pienempään ja näppärämpään muotoon, jossa oli vain tarvitsemani tiedot. Vaivainen koneeni ei jaksa pyörittää kovin suuria datamääriä, joten minun tuli karsia aineistosta kaikki ylimääräinen tieto pois. Järeillä laitteilla aineistoa voisi käsitellä suoraan, ilman alkuvaiheen muunnoksia. Lopulta latasin epäolennaisista tiedoista karsitut XML-tiedostot tietokantaan. Karsimisesta huolimatta koneeni alkoi yskähdellä, joten päätin ottaa tarkasteltavakseni vain Helsigin kaupunginkirjaston kokoelmasta löytyvien teosten luettelointitiedot.
Nyt kun tarvitsemani tiedot olivat XML-tietokannassa, saatoin aloittaa niiden käsittelyn XQuery-kielen avulla. Aluksi siistin eksoottisessa MARC-muodossa olevan päivämäärätiedon hieman rakenteisempaan muotoon:
import module namespace functx="http://www.functx.com";
for $record in /records/record
let $date:=string($record/created)
let $year:=substring($date,1,2)
let $month:=substring($date,3,2)
let $day:=substring($date,5,2)
return(
Varsinainen yhteenvetolukujen laskeminen tapahtui XQueryn count()-funktiolla. Huomasin, että olin onnistunut ylikirjoittamaan toisella skriptillä tämän laskennan tehneen XQuery-loitsun, mutta kyseessä oli kutakuinkin samanmittainen pätkä kuin ylempi.
Viimeisenä askeleena ennen Ärrään siirtymistä otin tiedot ulos CSV-muodossa:
for $year in distinct-values(//year)
for $done_in_month in //done[year=$year]
let $month:=data($done_in_month/month/@id)
return ({$year}-{$month}-1,{data($done_in_month/month)})
Tälläkin kertaa päätin luoda grafiikan R:n ggplot2-kirjaston tarjoamilla työkaluilla. Kuvio syntyi R-komennoilla:
t<-qplot(date, count, data=lastyears, geom="path", group=1, ymax=2000,ylab="",xlab="")
t + scale_x_date(format='%Y',major="years") + theme_bw()

Hienoa, todella mielenkiintoista tiedon uuttoa, hankinta- ja luettelointiporukka osannee kommentoida vastaako heidän omaa mutu-tuntumaansa tai muuta dataa. Yksi vakavaakin vakavampa kysymys joka tätä lukiessa pilkalti mieleen, ja joka tekisi mieli kysyä datalta: tuleeko maanantaisin ja perjantaisin luetteliitua lauskemmin kuin muina päivinä
Voisi laskea luetteloijien antamien asiasanojen määriä ja sijoitella ne kalenteripäiville.
Hehheh, voisinkin tehdä tuon viikonpäivätarkastelun ainakin jollain tarkkuudella jahka saan asennettua masiinaan vähän lisää muistia
Luulisi, että Ärrästä kyselemällä saisi selvitettyä päivämäärien viikonpäivät historiallisista kalentereista.
Tuo 008 tuo lohtua. Vuosiluvun merkkaamiseen käytetään vain kahta merkkiä, joten viimeistään 2060-luvulla MARCista on luovuttava kun törmätään y2k-ongelman kaltaiseen probleemaan… ellei joku keksi jotain ”mikäli 008 paikat 1-2 ovat xx, vuosiluku on kentässä 593$z” tai jotain tuollaista
Ei tarvitse odottaa vuotta 2060, sillä ongelma näyttäisi olevan akuutti jo nyt. Nähtävästi siirryttäessä korttiluetteloista tietokonepohjaisiin järjestelmiin vanhat paperikortit vietiin järjestelmään niillä päivämäärillä, jotka kortteihin oli kirjattu.
Jollen ole tehnyt aineistoani käsitellessäni virhettä, näyttää siltä että Helmet-dumpissa on 1900-luvun alussa luetteloituja teoksia (muistaakseni vanhimmat vuodelta 1909), jotka menevät iloisesti sekaisin nyt 2000-luvun edetessä. Ongelmaa voi yrittää kiertää tsekkaamalla samasta 008-kontrollikentästä julkaisuvuoden, mutta tämä on tosiaan niitä purkkaratkaisuja, joihin ei pitäisi olla syytä ryhtyä