Mitä on tietokannan ja datan laatu?

Laadukasta teetä teehuoneella Kaliningradissa

Kun katsotaan kirjastojen bibliografista dataa ja tietokantaa jossa se asuu, mitä teidän mielestänne on ”laatu”?

Mitä laatu yleensäkin on, miten sitä nykyään mitataan kirjastojen tietokannoissa ja mistä voimme tietää, että tämä kirjastojen tietyllä tavalla key asset on hyvä? Näissä tietokannoissa on paljon rahaa, aikaa, vaivaa, kunnianhimoa ja jopa ammatti-identiteettiä kiinni, miten voimme varmistua siitä että ne oikeasti ovat hyviä?

Mitä tapahtuisi jos yrittäisi hankkia vaikkapa ISO-9000 -sarjan laatusertifikaatin kirjaston bibliografiselle metadatalle, aineistotietokannalle ja siihen liittyville prosesseille?

Mielenkiintoisia kysymyksiä, ja tärkeitä koska kirjastojen palveluja on suunniteltu enemmän ja enemmän sen varaan että tietokanta ja sen käytettävyys on erinomaista (kts. varaukset).

Q. Ethan McCallum: Bad Data–Mapping the World of Data Problems

O’Reilly on vastikään julkaissut huonoa dataa käsittelevän oppaan Q. Ethan McCallum ja työryhmä: Bad Data Handbook – Mapping the World Of Data Problems (O’Reilly Media, 2012, ISBN 9781449321871).

Q. Ethan McCallum: Bad Data Handbook–Mapping the World of Data Problems

Q. Ethan McCallum: Bad Data Handbook–Mapping the World of Data Problems

Miltäs tämän teoksen MARC-tietue mahtaa näyttää? Ai täydelliseltä ja tyhjentävältä? Kiva. Entäs 5 vuoden päästä kun tietueparka on vedetty läpi parista formaattikonversiosta ja järjestelmäuudistuksesta?

Ostin e-kirjana, tästä on luultavasti iloa nykyisessä työssäni kun siivoan PIKI-kirjastojen tietokantaa.

Turku ym. Vaski-kirjastot nyt avointa dataa

Kiitos kuvasta David Fulmer (dfulmer@flickr)

Moi, terveisiä Varsinais-Suomesta. Laitoimme tänään koko Vaski-kimppamme luettelointitietokannan sisällön sellaisenaan verkkoon.

Vaskin, eli Turun, Liedon, Maskun, Mynämäen, Naantalin, Nousiaisten, Raision, Ruskon ja Taivassalon kunnankirjastojen yhteisessä tietokannassa on noin 1.7 miljoonaa tietuetta ja niihin on vaihtelevalla tarkkuudella kuvailtu kaikki ne kirjat, lehdet, cd-levyt, DVD:t, nuottivihot, yksittäisiä musiikkikappaleita ynnä muita aineistoja, joita kirjastojen hyllyistä voit löytää. Juuri nämä bibliografiset tietueet ovat historiallisesti muodostaneet kirjastojen tiedonhaun keskeisimmän ytimen, ja haluamme tällä julkistuksella olla mukana kaikenlaisten tietovarantojen käytön esteitä vähentävässä avoin data -liikehdinnässä (engl. Open Data).

Tässä tiedoitteemme, joka lähti tänään lehdistölle sekä tietenkin myös Kirjastot.fi:hin:

Varsinais-Suomen kirjastojen data avoimeksi

30. syyskuuta 2011 10:00

Varsinaissuomalaiset Vaski-kirjastot ovat avanneet aineistotietokantansa sisällön julkiseen käyttöön. Aiemmin vain hakuliittymän kautta käytettävä tietokanta on nyt lisäksi ladattavissa verkosta kokonaisuudessaan, tietokoneella käsiteltävässä muodossa. Tämä mahdollistaa kokonaisuudelle paljon uudenlaisia käyttömahdollisuuksia. Vaski-tietokanta sisältää noin 1.7 miljoonan kirjan, levyn, musiikkikappaleen ynnä muiden teosten julkaisutiedot sekä kirjastoammattilaisten tekemät luokittelu- ja hakusanatiedot.

Open data, tai suomalaisittain avoin data on pyrkimys avata erilaisia tietolähteitä mahdollisimman vapaaseen käyttöön. Erityisesti julkisin varoin tuotettua ja ylläpidettyä dataa ollaan Suomessa avaamassa monilla eri tahoilla.

Kirjastot ovat merkittävä osa yhteiskunnan avointa ja yhdenvertaista tietoinfrastruktuuria. Niiden tietokannat sisältävät paljon huolellisesti koottua tietoa erilaisista kulttuurijulkaisuista ja luonnollisesti kirjastot haluavat edistää näiden tietojen monipuolista saatavuutta. Suomessa kirjaston aineistotietokantojen saatavuutta pyrkivät parantamaan kirjastojen yhteinen Kirjastot.fi Labs -hanke, sekä Kansallinen Digitaalinen Kirjasto, jonka rakentamiseen Vaski-kirjastot myös osallistuvat. Vaski-kirjastoihin kuuluu tällä hetkellä yhdeksän kaupungin- ja kunnankirjastoa (vuonna 2012 17), ja ne palvelvat noin 340 000 suomalaista.

Lisätietoja antavat Varsinais-Suomen maakuntakirjastona toimivan Turun kaupunginkirjaston projektisuunnittelija Mace Ojala (mace.ojala@turku.fi) ja palvelujohtaja Ulla-Maija Maunu (ulla-maija.maunu@turku.fi).

Vaski-kirjastojen tietokanta on avattu yhteistyössä sisältöä tuottavan BTJ:n kanssa.

Henkilökohtainen kiitokseni kollegoilleni täällä Vaski-kirjastoissa ja erityisesti pomoille ja luetteloijille, sekä BTJ:lle jolta suuri osa suomalaisten kirjastojen luettelointityöstä on ostettu ja joka on käytännössä meidän yhteisluettelomme. Terkut myös kansainväliselle open data -yhteisölle :)

Nyt avattu Vaski-kirjastojen data on ladattavissa isona läjänä sekä XML-muodossa että MARCille tyypillisessä ISO-2709 -siirtomuodossa osoitteesta http://data.kirjastot.fi. Lisenssinä on erittäin salliva Creative Commons CC0. Kirjastoalan yhteisestä bibliografisesta MARC-standardista on erilaisia versioita, olemme Suomessa vielä siirtymävaiheessa FinMARCista kansainväliseen MARC21:een. MARCista sekä sen eri formaateista löydät lisää tietoa Kansalliskirjaston sivuilta ja meillä on myös erityinen sähköpostilista MARC-asioille… joka on tosin nykyään erittäin hiljainen. Olen bloggaillutkin silloin tällöin MARCista.

Tämä Vaski-julkistus on siis FinMARCia, ja yksittäinen tietue näyttää esim. tällaiselta:

00791nam a22002533 450
001 Ppro853_148215
008 921022s1992 fi 8
021 $a 951-581-008-6 $c sid. $d 162 FIM
041 1 $a fin $c rus
057 $a 68
064 $a 68.22
065 $a 68.22
068 $a 68.22
098 $a 68.22
100 1 $a Ponomareva $h Julia
241 $a Gribnaja kuhnja
245 2 $a Vaskiratsastajan sienisalaatti $b 201 mainiota sieniohjetta $d [Julia Ponomareva & Aleksei Ponomarev] $e [toimittanut ja suomentanut Liisa Viitanen]
260 $a Helsinki $b Taifuuni $c 1992 $e [Pieksämäki] $f RT-paino
300 $a 231 s. $b kuv. $c 22 cm
652 $a keittokirjat
652 $a sieniruoat
700 10 $a Ponomarev $h Aleksei
745 $a 201 mainiota sieniohjetta
745 $a Vaskiratsastajan sienisalaatti

Tai vastaavasti XML:nä

<record>
<leader>00791nam a22002533  450 </leader>
<controlfield tag="001">Ppro853_148215</controlfield>
<controlfield tag="008">921022s1992    fi                      8</controlfield>
<datafield tag="021" ind1=" " ind2=" ">
<subfield code="a">951-581-008-6</subfield>
<subfield code="c">sid.</subfield>
<subfield code="d">162 FIM</subfield>
</datafield>
<datafield tag="041" ind1="1" ind2=" ">
<subfield code="a">fin</subfield>
<subfield code="c">rus</subfield>
</datafield>
<datafield tag="057" ind1=" " ind2=" ">
<subfield code="a">68</subfield>
</datafield>
<datafield tag="064" ind1=" " ind2=" ">
<subfield code="a">68.22</subfield>
</datafield>
<datafield tag="065" ind1=" " ind2=" ">
<subfield code="a">68.22</subfield>
</datafield>
<datafield tag="068" ind1=" " ind2=" ">
<subfield code="a">68.22</subfield>
</datafield>
<datafield tag="098" ind1=" " ind2=" ">
<subfield code="a">68.22</subfield>
</datafield>
<datafield tag="100" ind1="1" ind2=" ">
<subfield code="a">Ponomareva</subfield>
<subfield code="h">Julia</subfield>
</datafield>
<datafield tag="241" ind1=" " ind2=" ">
<subfield code="a">Gribnaja kuhnja</subfield>
</datafield>
<datafield tag="245" ind1="2" ind2=" ">
<subfield code="a">Vaskiratsastajan sienisalaatti</subfield>
<subfield code="b">201 mainiota sieniohjetta</subfield>
<subfield code="d">[Julia Ponomareva &amp; Aleksei Ponomarev]</subfield>
<subfield code="e">[toimittanut ja suomentanut Liisa Viitanen]</subfield>
</datafield>
<datafield tag="260" ind1=" " ind2=" ">
<subfield code="a">Helsinki</subfield>
<subfield code="b">Taifuuni</subfield>
<subfield code="c">1992</subfield>
<subfield code="e">[Pieksämäki]</subfield>
<subfield code="f">RT-paino</subfield>
</datafield>
<datafield tag="300" ind1=" " ind2=" ">
<subfield code="a">231 s.</subfield>
<subfield code="b">kuv.</subfield>
<subfield code="c">22 cm</subfield>
</datafield>
<datafield tag="652" ind1=" " ind2=" ">
<subfield code="a">keittokirjat</subfield>
</datafield>
<datafield tag="652" ind1=" " ind2=" ">
<subfield code="a">sieniruoat</subfield>
</datafield>
<datafield tag="700" ind1="1" ind2="0">
<subfield code="a">Ponomarev</subfield>
<subfield code="h">Aleksei</subfield>
</datafield>
<datafield tag="745" ind1=" " ind2=" ">
<subfield code="a">201 mainiota sieniohjetta</subfield>
</datafield>
<datafield tag="745" ind1=" " ind2=" ">
<subfield code="a">Vaskiratsastajan sienisalaatti</subfield>
</datafield>
</record>

Vaskin asiasanat, jotka eivät ole YSAssa

Sanaston pengontaa

Kävin läpi Vaski-kirjastojen aineistotietokannan ja etsin asiasanat, jotka eivät esiinny tesauruksessa. Ohessa lista yleisimmistä:

esiintymien lkm termi
202 sotaromaanit
108 Lieto-kokoelma
100 korjausoppaat
66 eräkirjat
38 matkakirjat
29 sisustusoppaat
27 Suomen historia
23 kansanmusiikki: Venäjä
23 jouluaskartelu
22 posliinimaalaus
21 viihdetaiteilija : Suomi
21 salapoliisiromaanit
20 Yhdistyneet kansakunnat
20 kirjasto- ja informaatiopalveluala
20 1980-LUKU
18 vaateompelu
17 rock and roll
16 MURRENÄYTTEET
16 itämaiset taistelulajit
15 sosiaali- ja terveydenhuolto
15 rajavartiolaitos
15 paperiaskartelu
15 laivaluettelo
15 DVD-elokuvat
14 tiedeakatemiat
14 Suomen taideyhdistys
14 piirroselokuvat
13 tabulatuurinotaatiot
13 ranskalainen keittiö
13 nuorten aikuisten kirjat
13 Jeesus Kristus
13 äänentoistotekniikka
13 šamanismi
12 YKSINLAULU
12 vauvanhoito
12 Titanic
12 tilastollinen tutkimus
12 punk rock
12 kaupunkihistoriat
12 historia : 1900-luku
12 arabialainen musiikki
12 1960-luku
11 tšekin kieli
11 säveltäjät : Suomi
11 rentoutuminen
11 muodin historia
11 kuultokudos
10 varastaminen
10 Uusi testamentti
10 taitelijat
10 seminaarit (kokoukset)
10 samanismi
10 rockmusiikki
10 kiinalainen keittiö
10 1800-LUKU

Ohjelman (kts. alla) antamista tiedoista näkee myös, että esim. asiasana muodin historia (jota ei ole YSAssa) esiintyy Vaskin tietueissa Ppro853_137785, Ppro853_541141, Ppro853_541143, Ppro853_541144, Ppro853_541145, Ppro853_541146, Ppro853_541634, Ppro853_561083, Ppro853_561086, Ppro853_561087 sekä Ppro853_561088.

Eri asiasanoja joilla on vain yksi esiintymä Vaskissa löysin 1761 kappaletta. Kymmesti esiintyviä asiasanoja on kahdeksan kappaletta. Miten tällaista dataa olisi parasta havainnoillistaa? Ideoita vastaanotetaan.

Vaski on FinMARC 1998 -muotoa ja kyseisen standardin mukaan kentässä 652 olevat asiasanat ovat peräisin Yleisestä suomalaisesta asiasanastosta, eli YSA:sta (kansainvälisessä MARC21:ssä asia ilmaistaan hieman toisin, kuvaamalla asiasanakenttien osakentässä ‡2 mikä sanasto on kyseessä, tyyliin 650 #7 ‡a bibliografinen valvonta ‡2 ysa).

Tein aiemmin pienen työkalun jolle voi antaa yksittäisiä MARC-tietueita ja se kyselee ONKI-palvelun ohjelmointirajapintaa (APIa) käyttäen ovatko tietueen asiasanat YSO-ontologiassa. Kun YSA julkaisiin vastikään avoimena datana, tuli nyt tekemäni massakäsittely helpommaksi. Työn voi nykyään tehdä omalla koneella, pommittamatta ONKIn rajapintaa noin suurella kyselymäärällä.

Prosessi

Noukin ensin YSA:n SKOS-muotoisesta tiedostosta varsinaiset sanat (prefLabel ja altLabel) tekstitiedostoon yhdeksi pitkäksi, pitkäksi listaksi. 14.6.2011 lataamassani tesauruksessa oli 36991 termiä.

Sekä MARC-data että sanasto ovat saatavilla myös XML:nä, jonka käyttäminen olisi oikeaoppisempaa, mutta en nyt jaksanut säätää niiden kanssa sillä XML:n käsittelytyökalut ovat minulle aika tuntemattomia. Sensijaan olen tottunut operoimaan unixin komentoriviltä ja opettelen myös Perliä.

Tässä kirjoittamani Perl-kielinen ohjelma jota käytin:

#!/usr/bin/perl

use MARC::Batch;

my $file = "vaski-kunnostettu.mrc";
my $batch = MARC::Batch->new('USMARC', $file);
my $sanasto = "~/ysa.lista.alt_too";

$batch->strict_off();
while (my $record = $batch->next()) {
        for my $termi ($record->subfield('652', 'a')) {
        if (system("grep -q -i \"$termi\" $sanasto")) {
            print($termi, ";", $record->field('001')->as_string,"\n");
        }
    }
}

Kuten ehkä huomaat, tämä on hyvin kaukana elegantista. Ensinnäkin käsiteltävät tiedostot on nimetty ohjelman sisällä ja toisekseen kukin termi etsitään sanastosta käyttäen ulkoista ohjelmaa. Tämä aiheuttaa yhden forkin per asiasana, joka on huono asia. Oikeasti vertailu pitäisi tehdä tämän ohjelman sisällä, lukemalla asiasanat tiedostosta yksiulotteiseen taulokkoon tai listaan. Mutta toimii tämä näinkin, kun huonoa ohjelmistosuunnittelua voi korvata prosessoriteholla :) Miniläppärini (joka on ainoa käyttämäni työväline) rouskutteli tätä useita tunteja.

Mutta tämän ei olekaan tarkoitus olla eleganttia. Tämän on tarkoitus osoittaa kirjastoammattilaisille, että me itse voimme ottaa aloitteen käsimme sen sijaan, että odottelemme että järjestelmätoimittajamme tekee kivoja asioita puolestamme (sitä on turha odotella).

Vielä pari huomiota laatimani menetelmän puutteista: se ei huomioi asiasanaketjuja, ja tuon kaltainen huoleton merkkijonojen etsintä johtaa vääriin tuloksiin mikäli etsittävä epäkelpo asiasana esiintyy osana kelpoa asiasanaa. Tälle asialle pitäisi todella tehdä jotain.

Mitä välii?

Ymmärtääkseni kaikkien 652-kentässä olevien termien pitäisi olla peräisin YSA:sta. Näin sanoo myös FinMARC -formaatti. Asiasanoja joita ei YSAssa ole, ei pitäisi käyttää ainakaan kyseisessä kentässä. Kuten tiedämme, ei asiasanasto kuvaa kaikkia maailman ilmiöitä. Siksi paikallisille sanastoille onkin tarvetta.

Minua paremmin luettelointiin perehtyneet tietänevät mitä sisällönkuvailussa oikeasti kuvaillaan. Jossain lienee sovittu, onko sisällön lisäksi aiheellista kuvailla muotoa. Esim. Vaskissa käytetään termejä ”Nintendo Wii”, ”sotaromaanit” ja ”elämäkerrat” kuvailemaan muotoa. Nämä teokset eivät kerro Nintendon Wii-peleistä, sotaa kuvaavista romaaneista tai elämäkertojen kirjoittamisesta, vaan ovat niitä. Ehkä tämä on ookoo – en jaksa nyt lueskella luettelointisäännöstöä asiaa tarkistaakseni enkä muista ulkoa mitä siellä sanotaan. Mutta ei ole vaikea nähdä että tämä on problemaattista. Ihmettelin samaa asiaa aiemmin, kun mietin minkähänlaista olisi “ihan oikea kirjastotyö” pelien parissa?

Mainiot luetteloijat ovat arvatenkin tämän muoto vs. sisältö -asian ratkaisseet jollain sopimuksella (joka siis lienee kirjattuna luettelointisääntöihin). Käytännössä ainakin Vaskissa kuvaillaan surutta sekä muotoa että sisältöä 652 -kentässä.

Tässä on muitakin mielenkiintoisia puolia: MARC-tietueessa ei esimerkiksi ole mitään tietoa siitä, mitä YSAssa on ollut tietueen luontihetkellä. YSA muuttuu ajan myötä, kenties osa nyt listaamistani termeistä on ollut kyseisen luetteloijan käyttämässä YSA:n versiossa luettelointihetkellä… MARC-tietueesta itsestään puuttuu tällainen tekninen metadata.

Kirjoitusvirhe luetteloinnissa on fataali virhe, ja teos katoaa kyseisen aiheen kannalta mustaan aukkoon. Varsinaisia kirjoitusvirheitä löysin Vaskista onneksi vain ihan muutaman.

Monet löytämäni, YSA:n ulkopuoliset termit ovat hyvin käytännöllisiä ja olen oikeasti onnellinen että niitä on tietueisiin luettelointisääntöjen vastaisesti tallennettu. Tämä kertoo sanaston puutteellisuudesta ja myös luokitusjärjestelmän puutteista, sekä kirjastoihmisten omatoimisista ongelmanratkaisupyrkimyksistä. Se on tietenkin aivan oikein. Nämä itse keksityt termit voisi eristää omaan sanastoonsa, jolla YSAa täydennetään, ellei ole YSAn tarkoituksenmukainen ylläpito ole mahdollista. Lisäksi meillä on käytettävissämme useampia sanastoja YSAn rinnalla ja niitä olisikin hyvä käyttää MARC-tietueen sellaisissa paikoissa, jotka eivät ole YSAlle varattuja.