Suomen kansallisgallerian kuva

Kirjastot — Matti @ 20:13

Valtion taidemuseo, vuoden 2014 alusta alkaen Kansallisgalleria, julkaisi lokakuun alussa kokoelmiensa metatiedot avoimena datana. Sen lisäksi, että CC0-lisensoitua kokoelmadataa voi käsitellä erittäin hyvin dokumentoidun rajapinnan kautta, metatiedot voi ladata pakettina datan paikallista käsittelyä varten. Nyt joulun jouteliaina välipäivinä latailin datapaketin koneelleni ja päätin katsoa, miltä data näyttää BaseX XML-tietokantaohjelman kautta tarkasteltuna.

Kuten kirjastoaineistoja, myös taideteoksia kuvaillaan kontrolloitujen asianasastojen avulla — onpa tämä oma tutkimusalansakin, ikonografia. Pintapuolisen datasetin läpikäynnin perusteella näytti, ettei lähellekkään kaikkia kokoelmien teoksia ole kuvailtu asiasanoin. Kuvailtuja teoksia on datasetissä kuitenkin niin paljon, että kokoelmista voisi saada luotua suht. paikkansapitävän yleiskuvan visualisoimalla käytetyt asiasanat verkostona, kuten olen tehnyt aikaisemmin kirjastoaineistojen tapauksessa.

Mielenkiintoisen eron kirjastoaineistojen kuvailutietoihin tekee taideteosten kuvailussa käytetty Iconclass-luokitusjärjestelmä. Iconclassin asiananat muodostuvat kirjain- ja numerosarjoista sekä selväkielisestä määritteestä, joka täsmentää numero-kirjainsarjan koodaamaa kuvailutermiä. Koska teokset kuvaillaan kieliriippumattomilla koodeilla, kuvailut ovat ymmärrettävissä vaikka kuvailutyötä tehnyt henkilö ja taideteosten metatietojen selailija eivät jakaisikaan yhteistä kieltä. Käytännössä siis, sen sijaan että jouluista aihetta kuvaava teos kuvailtaisiin suomalaisessa taidemuseossa asiasanalla ’joulu’, kuvailuterminä voidaan käyttää Iconclass-koodia 11Q7612. Voidaan siis ajatella, että Iconclass-koodit ovat eräänlaisia linkkejä taideteoksista luokitusjärjestelmään — ihanteellinen linkitetyn datan sovelluskohde siis.

Tähän ilmiselvään sovelluskohteeseen on myös tartuttu ja Iconclass on julkaistu koneluettavassa muodossa. Edellinen 11Q7612-kuvailutermi voidaan ilmaista linkkinä http://iconclass.org/11Q7612.json, jonka kautta selviää Iconclass-koodin selväkielinen merkitys useilla eri kielillä — suomi mukaanlukien –sekä koodin sijainti kuvailutermien hierarkiassa. Koska koodien selväkielisiin ilmauksiin pääsee käsiksi helposti muodostettavien URL-osoitteiden kautta, on suhteellisen helppoa kirjoittaa XQuery-skripti, joka käy läpi kunkin taideteoksen kuvailutiedot, lataa verkosta kuvailukoodien selväkieliset ilmaukset ja muotoilee tiedot siten, että ne voidaan esittää verkostona Gephi-visualisointiohjelman avulla.

Iconclass-kuvaillut teokset Kiasman kokoelmissa.

Iconclass-kuvaillut teokset Kiasman kokoelmissa.

(Lataa tarkkaresoluutioinen kuva.)

Iconclass-kuvailtujen teosten omistajat
Omistajalkm
Kiasma1934
Sinebrychoffin taidemuseo645
Ateneum61
Iconclass-kuvailtujen teosten teostyypit
Teostyyppilkm
maalaus1120
grafiikka464
valokuva356
piirustus202
veistos154
mediataide80
installaatio73
esineteos51
mustavalkoinen valokuva31
muut~ 90

Pääasiassa Kiasman kokoelmiin kuuluvien Iconclass-kuvailtujen teosten lisäksi päätin ottaa käsittelyyn selväkielisillä asiasanoilla kuvailtujen teosten metatiedot. Suurin osa näistä teoksista kuuluu Ateneumin kokoelmiin.

Suomalaisilla asiasanoilla kuvatut teokset Kansallisgallerian kokoelmissa. Suurin osa teoksista on Ateneumiin sijoitettuja maalauksia.

Suomalaisilla asiasanoilla kuvatut teokset Kansallisgallerian kokoelmissa. Suurin osa teoksista on Ateneumiin sijoitettuja maalauksia.

(Lataa tarkkaresoluutioinen kuva.)

Asiasanoilla kuvailtujen teosten omistajat Kansallisgallerian kokoelmissa
Omistajalkm
Ateneum5310
Kiasma1950
Sinebrychoffin taidemuseo744

Asiasanoilla kuvailtujen teosten teostyypit Kansallisgallerian kokoelmissa

Teostyyppilkm
maalaus3709
piirustus2699
grafiikka1046
veistos378
valokuva28
reliefi22
esineteos19
miniatyyri16
installaatio12

Kansakunnan kaapin päällä

Kirjastot — Matti @ 0:58

YLE Kirjasto -tietopalvelu on kaikessa hiljaisuudessa julkaissut artikkeliviitetietokantansa sisällön avoimena datana. Tietokanta sisältää yli 65500 viitettä pääasiassa kotimaisista aikakauslehdistä. Latasin Excel-muodossa olevan datasetin ja uteliaisuuttani vilkaisin, mitä tietoja artikkeleista on tallennettu tietokantaan. Huomasin, että viitetietokannan Asiasanat-kenttään on tallennettu runsaasti henkilöiden nimiä; oletettavasti niiden henkilöiden, joita artikkeli on käsitellyt. Tästä sain ajatuksen tutkailla tietokannan avulla, miltä suomalainen mediatodellisuus näyttää aikakauslehtiartikkeileiden viitteiden valossa. Keistä koostuu se henkilökaarti, joka nauttii toimittajien suosiosta vuodesta toiseen?

Ensitöikseni muunsin aineiston Excel-muodosta standardiin CSV-taulukkomuotoon ja latasin tiedon BaseX XML-tietokantaan. BaseX osaa ladata suoraan CSV-muotoisia tiedostoja.

Artikkiliviitteiden asiasanat on tallennettu puolipistein erotettuna yhteen kenttään suuraakkosin kirjoitettuna. Saadakseni poimittua muiden metatietojen joukosta henkilönimet, minun tuli kirjoitella XQuery-skripti joka erottaa henkilönimet ja muuntaa nimet noudattamaan normaaleja oikeinkirjoitussääntöjä. Alla oleva skripti on toteutukseltaan karkea, sillä se tunnistaa henkilönimet asiasanan sisältämän välilyönnin perusteella. Tämän seurauksena mukaan tulee myös muita kaksiosaisia asiasanoja. Tämä ei kuitenkaan haittaa tietokannan sisällön käsittelyä, sillä virheelliset tiedot voi seuloa pois myöhemmässä vaiheessa.


import module namespace functx = "http://www.functx.com";
for $record in //record
let $subjects:= tokenize(fn:normalize-space($record/Asiasanat), '; ')
for $subject in $subjects
let $fullname_reversed:=$subject[contains(., ' ')]
let $fullname_tokenized:=tokenize(lower-case($fullname_reversed), ' ')
let $name:= {string-join((functx:capitalize-first($fullname_tokenized[2]),functx:capitalize-first($fullname_tokenized[1])), ' ')}
let $to_print:=
if(string-length($name)>3)
then {data($name)}
else ()
return if (not(empty($to_print))) then
insert node $to_print into $record/persons
else()

Skripti täydentää artikkeliviitetietokannan sisältöä persons-kenttään tallennettavilla henkilötiedoilla. Seuraavaksi nämä tiedot tulee ryhmitellä henkilöiden mukaisesti, siten että kunkin henkilön alle kootaan tiedot vuosista, joina kyseinen henkilö on mainittu artikkeliviitessä.


{
for $record in //record
for $person in $record/persons/name

group by $person
return {$person}{$record/Vuosi} }

Tämän työvaiheen jälkeen tiedot tulee koostaa vielä kerran, siten että toistuvat vuosiluvut poistetaan ja korvataan kunkin vuosiluvun kohtaan tallennettavalla toistuvuustiedolla.

{
for $press_mention in //press_mention
let $years:=distinct-values($press_mention/year/Vuosi)
let $counts:= for $year in $years
let $count:=count($press_mention/year/Vuosi[.=data($year)])
order by $year
return {$year}
return {$press_mention/fullname}{
for $count in $counts
return $count
}
}

Viimein kasassa on XML-tietokanta, josta voidaan tehdä suhteellisen helposti erilaisia henkilöihin liittyviä kyselyitä. Tietokannan sisältö siivottuna noin 5000 rivin tienoille muista kuin henkilötiedoista löytyy Githubista. Ajattelin, että tämä saattaisi olla jollekulle mielenkiintoinen XQuery-harjoitteluaineisto :) Myös skriptit löytyvät samasta paikasta.

On oletettavaa, että henkilömainintojen useus riippuu siitä, minkä tyyppisistä lehdistä lehtitietokannan viitteet ovat peräisin. Seuraavista lehdistä tietokanta sisältää yli tuhat viitettä:

LehtiViitteiden lukumäärä
Apu10860
Seura10434
Anna5867
Me4810
Hymy4771
Katso3587
Spiegel3318
Eeva2727
Ilta-Sanomat Plus2377
Stern1974
Helsingin Sanomat kuukausiliite1381
Gloria1333
City1237
Se-lehti1072

Mutta nyt asiaan, henkilömainintoihin.

Eniten mainintoja vuodessa on prinsessa Dianalla, 47 kappaletta vuonna 1997.

Eniten vuosittaisia mainintoja lehtien palstalla on Katri Helenalla. Hänet on mainittu kaikkiaan 37 vuoden aikana. Katri Helenalla mainintoja on eniten vuonna 1993, 13 kappaletta.

Kahdeksan henkilöä ovat paistatelleet vähintään 30 vuotena lehtien palstoilla:

NimiEnsimmäinen maininta Viimeisin maininta
Esko Salminen19612012
Jörn Donner19662012
Katri Helena19662012
Tapani Kansa19682011
Paula Koivuniemi19692012
Marion Rung19702012
Kaari Utrio19762011
Riitta Väisänen19762012

Kun tarkastellaan vähintään 25 eri vuotena mainittuja henkilöitä — poislukien edellä mainitut kahdeksan henkilöä — joukko on jo selvästi suurempi. Ensimmäisen maininnan mukaisessa järjestyksessä:

NimiEnsimmäinen maininta
Pirkko Mannola1960
Lenita Airisto
1966
Tamara Lund1967
Urho Kekkonen1967
Vesa-Matti Loiri1968
Ilkka Lipsanen1968
Marjatta Leppänen1969
Arja Saijonmaa1969
Anita Hirvonen1969
Mirja Pyykkö1969
Åke Lindman1970
Sinikka Sokka1970
Aira Samulin1970
Erkki Liikanen1970
Ritva Oksanen1971
Teija Sopanen1974
Anne Pohtamo1976
Armi Aavikko1977
Matti Nykänen1982
Anna-Leena Härkönen1983
Karita Mattila1983
Satu Silvo1984
Hannele Lauri1986

Otetaan lopuksi vielä tarkasteluun ikuisen mäkikotkan, kaimani Matin seikkailut julkisuudessa. Lehtiartikkelimainintojen mukaan järjestestettynä Matin vilkkaimmat vuodet ovat olleet:

MainintojaVuodet
91994
81998
71996 ja 2004
62010
51989, 1995 ja 2005
41987, 1988, 1999, 200, 2003, 2006, 2008, 2012
31993, 2002, 2011
21990, 1991, 2007
11982, 1983, 1984, 1992, 1997, 2001, 2009

Nyt kun artikkeliviitetietokanta on XML-muodossa, täytynee ottaa se myös uudemman kerran tarkasteluun. Tämän kokemuksen perusteella tietokannasta saa yllättävän vähällä vaivalla irti yksityiskohtia, jotka ovat tavallisesti kätkeytyneetä tietokannan kokonaisuuteen.

MARC-kenttien käyttö Helmet-tietokannassa

Kirjastot — Avainsanat: , , — Matti @ 0:09

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äLkmMediaanipituusKuvaus
650 4 a260356511.0Asiasana, lähdettä ei määritetty
700 1 a106176614.0Lisäkirjaus henkilötekijästä: nimien järjestys käänteinen, sukunimi.
700 1 e8390566.0Lisäkirjaus henkilötekijästä: tekijän funktio
245 10 a58894023.0Päänimeke
730 0 a56371121.0Lisäkirjaus yhtenäistetystä nimekkeestä: yhtenäistetty nimeke.
730 0 g56159414.0Lisäkirjaus yhtenäistetystä nimekkeestä: säveltäjä.
300 a55229913.0Ulko- tai ilmiasutiedot: aineiston eritysmääre ja laajuus.
041 0 a5479863.0Kielikoodi: teoksen pääkieli.
001controlfield53678610.0Kontrollinumero. ISBN tai ISMN ilman väliviivoja, mikäli saatavissa.
245 10 c51465631.0Vastuullisuusmerkinnöt
260 b51228213.0Julkaisutiedot: kustantaja.
588 a4907974.0Luokka: Helsinki. pääluokka.
260 a4828289.0Julkaisutiedot: kustannuspaikka.
546 a4812038.0Kielihuomautus: teoksen pääkielet.
100 1 a47008114.0Pääkirjaus henkilön nimestä, nimien järjestys käänteinen: sukunimi
020 a45250417.0ISBN-tunnus väliviivoin.
740 0 a39875218.0Lisäkirjaus nimekkeestä: nimeke.
651 4 a3837878.0Maantieteellinen nimi asiasanana, lähdettä ei määritetty: maantieteellinen asiasana.
589 a3713534.0Luokka: Espoo. Pääluokka.
005controlfiled36682716.0Viimeisen transaktion tiedot (konversiohetki Plussa-järjestelmästä?)
590 a3280064.0Luokka: Vantaa. Pääluokka.
913 00 a32150812.0Tuntematon
300 b2807616.0Ulko- tai ilmiasutiedot: kuvitus.
599 a27192912.0Materiaali
260 c2502384.0Julkaisutiedot: julkaisuaika.
300 c2364035.0Ulko- tai ilmiasutiedot: koko.
574 a22338816.0Kirjastokohtainen huomautuskenttä:helsinki. luetteloijan nimi.
500 a20855264.5Yleinen huomautus, soitinkokoonpanohuomautus, laulun alkusanat.
008controlfield19210437.0MARC21-formaatin kiinteämittainen kontrollikenttä.
245 10 b17268535.0Nimeke- ja vastuullisuustiedot: toinen päänimeke.
028 01 a1536428.0ISBN-tunnus väliviivoin.
591 a1438794.0Luokka:Kauniainen. pääluokka.
7102 a14271317.0Lisäkirjaus yhteisötekijästä: analyyttinen tekijä-nimeke -lisäkirjaus.
505 0 a138765354.5Sisältöä tai aihetta koskeva huomautus.
577 a13775616.0Kirjastokohtainen huomautuskenttä: Vantaa.
084 a1377495.0Luokituskoodi
440 0 a13736422.0Sarjamerkintö: sarjan päänimeke.
080 a1272995.5Tuntematon
7102 e1248977.0Lisäkirjaus yhteisötekijästä: analyyttinen tekijä-nimeke -lisäkirjaus. tekijän funktio.
575 a11563116.0Kirjastokohtainen huomautuskenttä: espoo. luetteloijan nimi.
0411 a1143753.0Kielikoodit. teos on käännös tai sisältää käännöksen. teoksen pääkieli.
0411 h1097955.0Kielikoodit. teos on käännös tai sisältää käännöksen. teoksen alkukieli.
300 e10648912.0Ulko- tai ilmiasutiedot. teoksen liiteaineisto.
600 14 a10581815.0Kohdehenkilö. nimien osien järjestys käänteinen, sukunimi.
511 0 a105443111.0Osallistuja- tai esittäjähuomautus.
577 b1024009.0Kirjastokohtainen huomautuskenttä: Vantaa. MuistiVantaa-merkintä, uutuusluettelomerkintä.
028 01 b1016829.0Tuotetunnus. Tuotemerkki.
575 b974489.0Kirjastokohtainen huomautuskenttä: Espoo.
7650 t9700621.0Alkuteoksen nimeke.
588 b908095.0Luokka: Helsinki. luokkalisäkirjaus.
574 b8831610.0Kirjastokohtainen huomautuskenttä: Helsinki.
100 1 e784387.0Pääkirjaus henkilön nimestä, nimen osien järjestys käänteinen. tekijän funktio.
250 a7413513.0Painostiedot, painosmerkintö.
003controlfield644393.0MARC-kontrollikenttä
590 b548115.0Luokka: Vantaa. Luokkalisäkirjaus.
589 b535035.0Luokka: Espoo. Luokkalisäkirjaus.
440 0 v532003.0Sarjamerkintö. sarjan sisäinen numerointi.
245 14 a4902326.0Nimeke- ja vastuullisuustiedot, ohitettavien merkkien määrä neljä
245 14 c4626127.0Nimeke- ja vastuullisuustiedot, ohitettavien merkkien määrä 4.
7000 a442438.0Lisäkirjaus henkilötekijästä. sukunimi tai vastaava hakuelementtinä toimiva nimen osa.
700 12 a4196715.0Lisäkirjaus henkilötekijästä. analyyttinen tekijä-nimeke -lisäkirjaus. sukunimi tai vastaava hakuelementtinä toimiva nimen osa.
700 12 t4184729.0Lisäkirjaus henkilötekijästä. analyyttinen tekijä-nimeke -liskirjasu. nimeke.
110 2 a4122011.0Pääkirjaus yhteisön nimestä. valtion tai hallintoalueen nimi tai pääyhteisö.
110 2 e402537.0Pääkirjaus yhteisön nimestä. tekijän funktio.
700 0 e401866.0Lisäkirjaus henkilötekijästä. tekijän funktio.
730 0 l3750624.5Lisäkirjaus yhtenäistetystä nimekkestä. teoksen kieliversio.
730 0 p3453416.0Lisäkirjaus yhtenäistetystä nimekkeestä. teoksen osan mikeme.
730 0 o3164218.0Lisäkirjaus yhtenäistetystä niekkeestä. sovitusmerkintö.
600 04 a309588.0Kohdehenkilö, lähdettä ei määritetty. sukunimi tai vastaava hakuelementtinä toimiva nimen osa.
0243 a2875612.0Muu kansainvälinen tunnus, ean. kansainvälinen tunnus.
7304 a2740024.0Lisäkirjaus yhtenäistetystä nimekkeestä, yhtenäistetty nimeke.
7304 g2694613.0Lisäkirjaus yhtenäistetystä nimekkeestä, säveltäjä.
7404 a2367023.0Lisäkirjaus yhtenäistetystä nimekkeestä, yhtenäistetty nimeke.
578 b2251510.0Kirjastokohtainen huomautuskenttä: kauniainen.
610 24 a2158917.0Kohdeyleisö. muut yhteisöt, ei lähdettä määritetty. valtion tai hallintoalueen nimi, tai pääyhteisö.
440 0x2071110.0Sarjamerkintö, ISSN.
260 f1855314.0Julkaisutiedot, kirjapainon nimi.
730 0 n179047.0Lisäkirjaus yhtenäistetystä nimekkeestä.
506 a1583028.0Tarkastus tai inventointi, käyttörajoitushuomautus.
260 e1551110.0Julkaisutuiedot, painopaikka.
041 0 b140565.0Kielikoodi, teos on käännös tai sisältää käännöksen. tiivistelmän tai teoksen muun osan kielti.
100 0 a135928.0Pääkirjaus henkilön nimestä, nimien järjestys suora
245 14 b1356235.0Nimeke ja vastuullisuustiedot. ohitettavien merkkien määrä neljä, toinen päänimeke.
591 b124995.0Luokka: Kauniainen.
520 a1226656.5Tiivistelmä ja tiivistelmää tai yhteenvetoa kosketa huomautus. tiivistelmän nimeke.
035 a1220619.0Tunnistenumero järjestelmässä.
518 a1193947.0Äänitys- tai kuvausaikaa ja -paikkaa tai esinelöydön aikaa ja paikkaa koskeva huomautus. huomautus.
730 3 a1165321.0Lisäkirjaus yhtenäistetystä nimekkeestä, yhtenäistetty nimeke.
730 3 g1144811.0Lisäkirjaus yhtenäistetystä nimekkeestä, säveltäjä.
534 c1100025.0Alkuperäisjulkaisua koskeva huomautus, julkaisutiedot.
245 13 a1066524.0Nimeke ja vastuullisuustiedot. päänimeke, ohitettava kolme merkkiä.
240 10 a1040124.0Yhtenäistetty nimeke.
245 13 c998528.0Nimeke ja vastuullisuustieto, ohitettavia merkkejä kolme
240 10 g97448.0Nimeke- ja vastuullisuustiedot.
578 a869910.0Kirjastokohtainen huomautuskenttä: Kauniainen. Luetteloijan nimi.
028 0 a68818.0Tuotetunnus

Tietokantagalaksi

Kirjastot — Avainsanat: , , , — Matti @ 18:39

Kutakuinkin 40000 henkilöä ja noin 310000 yhteyttä

Kutakuinkin 40000 henkilöä ja noin 310000 yhteyttä


Finmarc 600-kentän datan yhteyksiä  hieman lähempää

Finmarc 600-kentän datan yhteyksiä hieman lähempää


Datasetin reuna-alueita

Datasetin reuna-alueita


Vaski-kirjastot julkaisivat luettelotietokantansa avoimena datana menneen viikon perjantaina – oiva tilaisuus testata, selviääkö vastikään lisämuistilla terästetty (2GB->8GB) työjuhtani koko ~1.7 miljoonan tietueen datasetin pyörittelystä kerrallaan.

Kohteekseni otin FINMARC-luettelointioppaasta bongaamani 600 Kohdehenkilö-kentän, jonka määritys kuuluu: ”Kenttään tallennettavat tiedot kohdehenkilöstä liittyvät teoksen sisältöön. Henkilön nimi on asiasanana.”. Oppaasta mainittiin myös, että kenttään saatetaan tallentaa myös teoksen kohteena olevan suvun tjms. tietoja — mielenkiintoista! Päätin katsoa, millaisia verkostoja tähän kenttään tallennettujen henkilöiden ja henkilöjoukkojen välille muodostuu. Nyt alkuvaiheessa tarkoituksenani ei ollut tehdä näistä verkostoista sen kummempia analyysejä, kunhan saisin datan sopivaan muotoon myöhempiä analyysejä varten ja pari nättiä kuvaa tänne verkkoon näytille :)

Harjoituksen vuoksi noudatin tavanomaisesta poikkeavaa työkulkua. Tällä kertaa pidin käsittelemäni tiedot alusta loppuun XML-muodossa. Lähtöpäässä oleva tieto näytti tältä:

<record xmlns="info:lc/xmlns/marcxchange-v1">
<datafield tag="600" ind1="1" ind2=" ">
<subfield code="a">Lehtonen</subfield>
<subfield code="h">J. V.</subfield>
<subfield code="x">juhlajulkaisu</subfield>
</datafield>
<datafield tag="600" ind1="1" ind2=" ">
<subfield code="a">Sillanpää</subfield>
<subfield code="h">F. E.</subfield>
<subfield code="t">Nuorena nukkunut</subfield>
</datafield>
<datafield tag="600" ind1="1" ind2=" ">
<subfield code="a">Lassila</subfield>
<subfield code="h">Maiju</subfield>
<subfield code="x">kirjallinen jäämistö</subfield>
</datafield>
<datafield tag="600" ind1="1" ind2=" ">
<subfield code="a">Kivi</subfield>
<subfield code="h">Aleksis</subfield>
<subfield code="t">Canzio</subfield>
</datafield>
<datafield tag="600" ind1="1" ind2=" ">
<subfield code="a">Richelieu</subfield>
<subfield code="h">Armand Jean du Plessis de</subfield>
</datafield>
</record>

..ja putken päästä, XQueryn avulla tehdyn mankeloinnin jälkeen ulos tuli tällaista, Gephi-visualisointityökalun ymmärtämää GEXF-muotoista XML:ää .

<?xml version="1.0" encoding="UTF-8"?>
<gexf xmlns="http://www.gexf.net/1.1draft" version="1.1" xmlns:viz="http://www.gexf.net/1.1draft/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.1draft http://www.gexf.net/1.1draft/gexf.xsd">
<meta lastmodifieddate="2011-10-02">
<creator>Matti Lassila</creator>
<description>Co-occurencies of names in Vaski-database</description>
</meta>
<graph defaultedgetype="mixed" mode="static">
<attributes class="node">
<attribute id="role" title="role" type="string"/>
</attributes>
<nodes>
<node id="aleksis_kivi" label="Aleksis Kivi">
<attvalues>
<attvalue for="role" value="person"/>
</attvalues>
<viz:size xmlns:viz="http://www.gexf.net/1.1draft/viz" value="232"/>
</node>
<node id="maria_jotuni" label="Maria Jotuni">
<attvalues>
<attvalue for="role" value="person"/>
</attvalues>
<viz:size xmlns:viz="http://www.gexf.net/1.1draft/viz" value="44"/>
</node>
<node id="anakreon" label="Anakreon">
<attvalues>
<attvalue for="role" value="person"/>
</attvalues>
<viz:size xmlns:viz="http://www.gexf.net/1.1draft/viz" value="3"/>
</node>
</nodes>
<edges>
<edge source="minna_canth" target="aleksis_kivi"/>
<edge source="minna_canth" target="juhani_aho"/>
<edge source="minna_canth" target="teuvo_pakkala"/>
<edge source="minna_canth" target="ilmari_kianto"/>
</edges>
</graph>
</gexf>

En vielä nykyisillä XQuery-taidoillani saanut tehtyä muunnosta yhdellä loitsulla, vaan suodattelin ja yhdistelin datasettiä aina pienempiin ja pienempiin osiin. Loppuvaiheen koostamisen ennen Gephiin siirtymistä tein editorissa, eli laitoin yhteen tiedostoon mukaan erikseen luomani henkilö-solmut ja toisessa tiedostossa olevat henkilö-solmujen väliset yhteydet.

Nyt kun datasetti on oikeassa muodossa ja siistitty, työläin työvaihe on takanapäin. Jahka aikaa on, tutkiskelen mitä datasetistä saa irti. Samalla koitan kirjoittaa lyhyesti auki, mitä työvaiheita MARCXML-muotoisten FINMARC-tietueiden mankelointi Gephin ymmärtämään muotoon vaati.

Luetteloijan vuodenkierto

Kirjastot — Avainsanat: , , , — Matti @ 16:23

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?

Helsingin kaupunginkirjaston kokoelman kartunta suhteessa aikaan

Helsingin kaupunginkirjaston kokoelman kartunta suhteessa aikaan

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(
{$year}
{$month}
{$day}
)

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()

Sanojen rihmat

Kirjastot — Avainsanat: , , , — Matti @ 23:46

Viikonlopun alla julkaistiin Gephi-visualisointityökalun uusi kokeiluversio, ja päätin ottaa asiakseni tutkailla ohjelmaa hieman. Gephi oli minulle nimeltä tuttu, mutten aiemmin ole viitsinyt asentaa sitä koneelleni kun olen arvellut Javalla toteutetun ohjelman olevan kovin resurssisyöppö. No, arveluni osui oikeaan, mutta sopivan pienellä aineistolla viiveet pysyivät siedettävinä.

Tällä kertaa päätin katsoa, millaisia verkostoja Helmet-dumpin tekstimuotoiselle aineistolle annetut asiasanat muodostavat. Kokonaisuudessaan tekstiaineistoa on dumpissa noin 50000 tietuetta. Pilkoin tästä satunnaisotannalla käsiteltäväksi muutamia erikokoisia datasettejä. Tällä kertaa en tarvinnut Python-skriptejä, vaan sain luotua tarvitsemani tiedostot yksinkertaisen XSLT-muunnostiedoston ja UNIX-komentorivityökalujen avulla. Ajoin aluksi koko dumpin tekstiaineiston asiasanat muotoon, jossa kunkin teoksen asiasanat on listattu yhdellä rivillä. Gephiin ladattavat tiedostot syntyivät tästä suuresta tiedostosta rl-työkalun avulla, joka poimii sille annetusta tiedostosta halutun kokoisen satunnaisotannan.

Ohessa kuva kuudensadan tietueen otannasta (korkearesoluutioinen kuva PDF-tiedostona). Kuvassa sinisellä sävyllä korostettu asiasanaryhmä liittyy suomenkieliseen kaunokirjallisuuteen ja keltainen ruotsinkieliseen kaunokirjallisuuteen. Oranssilla on merkitty ruotsinkieliseen tietokirjallisuuteen liittyvät asiasanat ja vihertävällä suomenkielisen tietokirjallisuuden asiasanat. Viivojen paksuus kuvaa sitä, kuinka usein jotkin asiasanat esiintyvät yhdessä. Tähän kuvaan en ole laittanut näkyville, mitkä sanat ovat kyseessä. Täytyy mietiskellä, minkälaiseen kuvaan sanat saisi otettua mukaan, ilman että kuva menee täysin tukkoon. Gephi on melkoisen monipuolinen ohjelma, joten eiköhän sieltä löydy ongelmaan ratkaisu.

Kuudensadan kirjan asiasanojen yhteydet

Runolliset tietueet

Kirjastot — Avainsanat: , , , , — Matti @ 21:06

Muokattu 4.4: Nyt julkaistuja teoksia kuvaavien ympyröiden koko määräytyy teosten lukumäärän logaritmina. Pakkautumisongelma tuntuu helpottavan ja yksityiskohdat säilyvät paremmin. Päivitin esikatselukuvan ja ladattavan PDF-tiedoston.

Jatkoin Helmet-datadumpin pyörittelyä. Istuskelin perjantai-iltapäivän työ/opiskelupaikkani järjestämässä verkostoanalyysi-metodipajassa, josta sain ajatuksen kokeilla SNA-menetelmiä Helmet-aineistoon.

Koska aineisto on melkoisen suuri — satojatuhansia tietueita — mopokonetta ja hermoja säästääkseni päätin ottaa aineistosta jonkin kiinnostavan osajoukon käsiteltäväkseni. Päädyin Suomessa suomeksi tai ruotsiksi julkaistuihin runoihin ja runojen kustantajiin: näin näppitultumalta runoja ei julkaista vuositasolla kovin hurjia määriä ja on mielenkiintoista tietää, mitkä tahot hoitavat tätä julkaisutoimintaa.

Aloitin tarvitsemani aineiston koostamisen ajamalla aiemmin MODS-muotoon saattamastani Helmet-datadumpista XSLT-muunnoksen CSV-taulukkomuotoon, johon tallensin kunkin runoteoksen tekijän, kustantajan ja julkaisuvuoden.
XSLT-muunnoksen synnyttämät taulukot eivät olleet suoralta käsin käyttövalmiita, vaan aineistoa joutui siivoilemaan jonkin verran käsin.

Tämän jälkeen järjestelin ja suodatin UNIX-komentorivityökalujen (sort ja unique) avulla tiedoston sellaiseen muotoon, jossa riveillä on kirjailijan nimi, kustantaja ja kyseisen kustantajan kautta julkaistujen teosten lukumäärä. Nyt data oli sellaisessa muodossa, että käytettävissäni oli kaikki ne tiedot, jotka oletin tarvitsevani mielessäni olevan grafiikan toteuttamiseksi koneen avulla.

Datasta syntyi kaavio Python-ohjelmointikielen NetworkX verkostoanalyysipaketin sekä Graphviz -visualisointityökalun suosiollisella avustuksella.

Python-skriptin nielemä tieto näytti tältä:

4 WSOY Töyrylä, Timo
19 WSOY Vaara, Elina
4 WSOY Vala, Katri
5 WSOY Venho, Johanna

…ja skriptin tuottama, DOT-muotoinen tieto kutakuinkin tältä:


"Vaara, Elina" [style=filled, fixedsize=true, height="0.25", width="0.25", shape=circle, role=author, fontsize=1, label="", color=lightgray];
WSOY [width="2.5", style=filled, fontsize=12, fixedsize=true, role=publisher, color=red, height="2.5"];
"Vaara, Elina" -> WSOY [color=gray37, penwidth=4];

Loppu olikin silkkaa automagiaa suurimmaksi osaksi. Latasin DOT-tiedoston Graphviz-ohjelmaan, joka pienen asetustensäätelyn jälkeen lykkäsi ulos haluamani grafiikan. Jahka saan opeteltua Graphviziä lisää, koitan josko saisin mankeloitua esityksen hieman havainnollisempaan muotoon.

Runokustantajat

Kuvassa punaiset ympyrät ovat kustantajia ja harmaat kirjailijoita. Ympyrän koko heijastelee julkaistujen teosten määriä.

Esikatselukuva sisältää vain pienen osan koko grafiikasta — ohessa kuva kokonaisuudessaan PDF-muodossa.

Harmonikassa Kimmo Pohjonen – Axiell Arena ja musiikin tiedonhaku

Kirjastot — Avainsanat: , , — Matti @ 0:50

Muokkaus: Päivitetty 18.3. Lisätty titleoriginal ja titlemain -hakukentät.

Viime vuoden alkusyksystä kirjoittelin ylös havaintojani siitä, kuinka tuolloin Tampereella pilottivaiheessa olleen Arena-verkkokirjaston haun saisi tuottamaan epämääräistä tarkempia hakutuloksia. Ennen myöhemmin syksyllä tapahtunutta julkaisua verkkokirjastoon tuli ’tarkennettu haku’, joka ei kyllä aivan vastaa sitä mitä Axiellilta odotin, mutta onhan tuo kyllä askel parempaan suuntaan. Hausssa(kin) on siis parantamisen varaa vielä.

Kuten edellisessä Arena-kirjoituksessani totesin, haun ongelmat johtuvat tällä hetkellä lähinnä hakukäyttöliittymän keskeneräisyydestä, eikä niinkään taustajärjestelmän kyvyttömyydestä. Arenan hakujärjestelmänä toimii avointa koodia oleva Solr-hakumoottori, jonka tarvittaessa taipuu jos jonkinlaisiin hakuihin. Tästä osoituksena listasin hyvän joukon Solr-hakuavaimia, joilla Arena-haun saa tarvittaessa kohdistettua esim. kustantajaan ja julkaisuvuoteen (esim. oma suosikkihakuni on publisher:"Terra Cognita" AND publicationyear:[2009 TO NOW]).

Nyt jatkoin hieman Arenan tutkailua, jälleen Heikki Poroilan innoittamana. Kuinka ollakaan, arvailun kautta löysin kolme viisi hakukenttää lisää.

Edition-kenttä sisältää tiedon painoksesta. Tässä tiedonhakija törmää luettelointikäytäntöjen kirjavuuteen, sillä kenttään tallennttua tietoa ei parhaalla tahdollakaan voi kutsua kovin määrämuotoiseksi. Ovelasti hakuavaimen katkaisemalla ja sumealla haulla nämä epäsäännöllisyydet voinee kuitenkin kiertää. Haetaanpa kokeilut vuoksi kaikki Deluxe Edition CD-levyt:

edition:"deluxe edition" AND mediaclass:cd

Number-kenttä sisältää ISBN-numeron. Tästä ei liene kovin kummoista iloa kirjastonkäyttäjälle. Toisaalta ISBN:n avulla saisi rakennetuta työkalun, joka osaisi esim verkkokirjakaupan sivulta löytyvän ISBN:n perusteella tarkastaa kirjastosta, löytyykö ko. teosta lainattavaksi. Esimerkkihaku:

number:9789525635072

Note-kenttään tallennettu tieto pelastaa musiikkitiedonhakijan! Aikojen saatossa musiikinluetteloinnissa pakollisten teostietojen oheen on tallennettu tietoja äänityspaikasta, esiintyjistä ja muista äänitteen yksityiskohdista. Tämä tieto on haettavissa note-kentän kautta. Kokeillaanpa hakea äänitteet, jotka on tallennettu vuonna 1970:

note:"äänitetty 1970"~2

Aaltomerkillä ja numerolla hakulauseen lopussa kerron järjestelmälle, että äänitetty ja 1970 -merkkijonot tulee esiintyä kahden sanan päästä toisistaan, jotta esiintymä lasketaan haussa osumaksi. Entä löytyykö kirjastosta sellaisia CD-levyjä, joissa olisi kansilehdykässä mukana sointumerkit? Katsotaan:

note:"sointumerkit"~0.3 AND mediaclass:cd

Entäpä löytyykö kirjastosta levyjä, joista harmonikkataiteilija Pohjonen olisi taustabändin jäsenenä — näin postauksen otsikon mukaisesti:

note:"Kimmo Pohjonen acc"~3

Huomautuksia-kentän sisältö on sen verran pitkälle määrämittaista, että sen rakenteistaminen kohdennetusti haettavaan muotoon ei olisi kovin kummoinen juttu. Tästä olisi erityisesti musiikkitiedonhaussa hyötyä, kun haku voitaisiin kohdistaa esim. artistin rooliin kyseisellä tallenteella.

Titleoriginal-kenttä sisältää teoksen alkuperäisnimen. Katsotaanpa, kuinka monelle kielelle käännettynä Waltarin Sinuhe löytyy PIKI-kirjastoista:

titleoriginal:"sinuhe egyptiläinen"

Näemmä kotikirjastostani löytyy ainakin seitsemän Sinuhen kieliversiota

Titlemain-kentän sisällöstä en ole päässyt vielä aivan varmuuteen. Alkujaan ajattelin, että kyseessä olisi jonkun sortin yhtenäistetty nimeke (l. yhteisesti sovittu nimi sellaiselle teokselle, jonka nimestä esiintyy useita erilaisia kirjoitusasuja) mutta tulosten perusteella kenttä tuntuu liittyvän myös muihin käyttötilanteisiin.

Kartta kirjastosta

Kirjastot — Avainsanat: , , — Matti @ 14:13

Macen tammikuisen postauksen innoittamana sain viimeinkin piirreltyä ensimmäiset Helmet-kirjastojen kokoelmaa kuvaavat tilastografiikat. Aloitin grafiikkojen takana olevan aineiston pyörittelyn jo kesäkuun helteiden aikaan, Helmet-kirjastojen julkaistua kokoelmatietokantansa avoimena datana. Proggis kuitenkin jäi telakalle, josta sen nyt viikonloppuna herätin henkiin virkistääkseni R-taitoja gradutaistoa varten.

Grafiikat ovat syntyneet Helmet MARCXML-aineistodumpista, joka on ajettu aluksi MODS-muotoon XSLT-muunnostiedostolla. Sen jälkeen tiedot muutettiin CSV-taulukkomuotoon toisella XSLT-muunnoksella. Ensimmäisen muunnosvaiheen olisi voinut hyvin jättää väliin, ja ajaa tiedot taulukoksi suoraan MARCXML-muodossa. Koin kuitenkin selväkielisen MODS-tiedostomuodon käsittelyn helpommaksi, siihen nähden että olisin MARCXML:ää pyöritellessäni joutunut miettimään, mikä kenttäkoodi vastaa mitäkin metatietoa.

Siivoilin muunnostiedostojen avulla syntynyttä CSV-taulukkotiedostoa pienillä Python-koodinpätkillä ja latasin tämän jälkeen tiedoston R-tilasto-ohjelmaan. Ärrässä mankeloin tiedot tarvitsemaani muotoon ja lopulta tuotin grafiikat R:n treemap-kirjaston avulla. Kaikki edellä mainitut ohjelmat ja työkalut ovat vapaata koodia.

Pidemmittä puheitta — kokoelmagrafiikoita, olkaa hyvä. Pikkukuvaa klikkaamalla grafiiikan saa suurennettua. Mikäli grafiikkojen muoto on outo, Wikipedia-selvittää mistä on kyse (Treemapping-artikkeli).

Areenalla auringossa – Axiell Arena ja tarkka haku

Kirjastot — Matti @ 11:39

Päivitys 21.9: Lisätty hakukenttiin publisher ja tag -kentät sekä hakuesimerkki publisher -kenttään liittyen.

Heikki Poroilan blogikirjoitus Yhdestä luukusta merkityksettömyyteen on nostattanut melkoisen keskustelun siitä, mihin tiedonhaku ja sen perustana oleva luettelointi on menossa, kun kirjastojärjestelmissäkin ollaan siirtymässä Google-tyyppiseen ’yhden luukun hakuun’. Näin on tapahtumassa muun muassa kotikaupunkini Tampereen kirjastoissa – ja laajemmin koko Pirkanmaan alueella — kun PIKI-verkkokirjasto vaihdetaan toimimaan Axiell Arena -järjestelmän päällä.

Tähän mennessä käydyn keskustelun ydinajatus lienee tiivistettävissä siihen, etteivät Arenan tyyppiset, Google-henkistä hakua ja selailua korostavat hakujärjestelmät mahdollista tarkkaa tiedonhakua, eikä niissä hyödynnetä täysipainoisesti kirjastodatan rakenteisuutta. Tämän vuoksi keskustelijoiden synkimpien näkemysten mukaan tarkka luettelointityö on menettämässä mielekkyytensä, kun on riittävää että haun tulokset ovat vähän sinne päin.

Voi hyvin olla, että joillekin tiedonhakijoille sinne päin -vastaukset ovat riittävän hyviä ja yhden luukun haku palvelee heitä hyvin. Kirjastonkäyttäjiä on kuitenkin monenlaisia ja siksi toivoisi, että rinnalla säilytettäisiin myös perinteinen tarkka haku yksityiskohtaisine rajausmahdollisuuksineen.

Arenan tapauksessa tilanne ei ole kuitenkaan aivan lohduton, vaikka järjestelmätoimittaja ei jostain kumman syystä toteuttaisikaan selaushaun rinnalle perinteistä hakukäyttöliittymää. Pitäisin tätä kummallisena siksi, että Arenan tapauksessa kyseessä olisi vain käyttöliittymätyöstä — taustajärjestelmä taipuu nimittäin jos jonkinlaisiin käyttötapoihin.

Arenan esittelymateriaalista[PDF] käy ilmi, että järjestelmä on rakennettu vapaata koodia olevan Apache Solr -fasettihakumoottorin päälle. Tarkkanäköinen Solarin tunteva tiedonhakija huomaa kyllä tämän myös Arenan URL-rakenteista.

Sain ajatuksen kokeilla, josko kotikirjastossani testikäytössä olevassa Arenassa toimisivat myös muut kuin verkkokirjaston ohjedokumentissa mainitut hakuominaisuudet. Ilokseni huomasin, että hakulauseet ajetaan taustalla hyrräävään Solriin niitä suotta suodattamatta. Siispä — tarkkaa hakukäyttöliittymää odotellessa tiedonhakija voi hyödyntää Solr-hakusyntaksia löytääkseen mitä hakee, eikä jotain vähän sinnepäin.

Seuraavaan olen koonnut tiivistetysti PIKI-verkkokirjaston Arenan (ja kentien myös muiden Arena-asennusten) hakukentät ja määrämuotoisten kenttien saamat arvot. Samalla kertoilen myös jotain Solr-hakusyntaksista.

Haun voi kohdistaa kenttään kirjoittamalla hakulaatikkoon kentännimi:hakusana.

Arenan hakukentät

KenttäSelite
authortekijä
titlenimeke
mediaclassaineistolaji
categoryaineistokategoria
publicationyearjulkaisuvuosi
publisherkustantaja
subjectasiasana
languagekieli
tagavainsana, tagi
titleseriessarja

Näistä kentistä määrämuotoisia ovat mediaclass, category ja language.

Määrämuotoiset kentät voivat saada seuraavia arvoja:

Mediaclass

ArvoSelite
bookkirjat
cdCD-levyt ja CD-ROM -levyt
sheetMusicNuotit, partituurit yms.
dvdDVD, DVD-AUDIO ja DVD-ROM -levyt
videoVideokasetit
vinylVinyylilevyt
cassetteC-kasetit ja muut ääninauhat
otherMaterialMuu materiaali
microFilmMikrofilmit
periodicalAikakaus- ja sanomalehdet, lehtileikkeet
mapKartat
documentMonisteet, työpiirrustukset
bluerayBlu-ray -levyt
pictureKuvat, diat
brailleSokeainkirjoitus
internetVerkkoaineisto

Category

ArvoSelite
fictionCategoryKaunokirjallisuus
nonFictionCategoryTietokirjallisuus

Language

Language-kenttä voi saada minkä tahansa ISO 639-2 -listauksessa mainitun arvon

Hakuesimerkkejä

Seuraavaksi muutamia hakuesimerkkejä — nämä voi siis kirjoittaa suoraan PIKI-verkkokirjaston (ja varmaan myös muiden Arena-verkkokirjastojen) pienenpieneen hakulaatikkoon.

Haetaan ennen toista maailmansotaa tai sen aikana julkaistut Viipurin kartat:

mediaclass:map subject:viipuri publicationyear:[* TO 1944]

Mitä suhteellisen tuoreita taloustieteen alan kirjoja löytyy kirjastosta

subject:taloustiede publicationyear:[2000 TO NOW]

Hmm, onkohan kirjastossa tarjolla amharankielistä kaunokirjallisuutta:

language:amh AND mediaclass:book AND category:fictionCategory

Hakusana saadaan täsmäytymään tarkasti, jos se laitetaan lainausmerkkien sisään.
Sen sijaan, jos esimerkiksi nimen kirjoitusasu ei ole selvä, haku saadan täsmäämään myös sumeasti ~-merkillä. Tsaikowskin eri muotojen selättäminen käy vaikkapa seuraavasti:

author:Tsjaikovski~
author:Tchaikovsky~
author:Tsjaikovski~

Täsmäytyksen tarkkuutta voidaan säätää välillä 0 < n < 1. Esimerkiksi:

author:Tsjaikovski~0.7

Mitä löytyy saunaperinteestä:

subject:sauna~ AND subject:perinne

Mitähän mainio Terra Cognita -kustantamo on julkaissut parin viime vuoden aikana:

publisher:"Terra Cognita" AND publicationyear:[2009 TO NOW]

Nähtäväksi jää, toteuttaako Axiell Arenaan täsmällistä hakua helpottavan käyttöliittymän. Mikäli näin ei käy, yksi vaihtoehto on rakennella epävirallinen hakukäyttöliittymä Spotify Super Searchin tyyliin. Spotify on muutenkin tässä tapauksessa hyvä vertailukohta, sillä kuten uusissa yhden luukun kirjastojärjestelmissä, myös Spotifyn haun taustalla toimii hakumoottori, joka taipuu paljon monimutkaisempiin hakutapoihin kuin käyttäjille tarjottu hakulaatikko antaa ymmärtää.

Seuraava sivu »
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.
(c) 2014 Kaukomieli | powered by WordPress with Barecity