Howto: FinMARC→MARC21 video

Tein 14 minuutin opetusvideon miten kirjaston aineistotietokanta muunnetaan FinMARC -formaatista MARC21:een.

Työkaluna Kansalliskirjaston ylläpitämä USEMARCON, jota Axiellkin ilmeisesti (=toivottavasti) käyttää.

Jos USEMARCON -konversiosääntöjä haluaa itse muokata, ne näyttävät tältä:

100I1           | 100I1           | If (I1=1 Or I1=2) Then '1' Else S
100I2           | 100I2           | ' '
100$a           | <E00$a          | S
100$h           | <E00$a          | + ', '+S; RegReplace('\\s*\\([^\\.]{2,} [^\\.]{2,}\\)\$', '')
100$f           | <E00$c          | S
100$c           | <E00$d          | S
100$x           | <E00$e          | S; RegReplace('^\\((.*)\\)\$', '\\1')
E00             | 100             | S;
                                    MoveBefore ('d', $e);
                                    MoveBefore ('c', $d);
                                    Replace ('$c' By ',$c');
                                    Replace ('$d' By ',$d');
                                    Replace ('$e' By ',$e');
                                    If (((RegFind('.*\\$(.)') < 0) Or (RegMatch(1) != '4')) And RegFind('\\.\$') < 0 And RegFind('\\-\$') < 0) S + '.'

5 thoughts on “Howto: FinMARC→MARC21 video

  1. Onko tällä sivulla http://data.kirjastot.fi/data.html oleva aineisto marc21 mukaista (kuten nimi antaisi olettaa) vai onko se kuitenkin FinMarc formaatissa? Yritän tehdä pientä harjoitusta tuolla aineistolla ja marcxml toimisi parhaiten. Olen täältä yrittänyt lukea ohjeita http://www.kansalliskirjasto.fi/extra/marc21/bib/index.htm mutta en ole ihan varma miten esim. tämä pitäisi tulkita?

    00299nam a22001331 450
    Ppro853_1010
    930518s1970 1

    Ehtisitkö vähän auttamaan? Toinen asia mikä ihmetyttää on se, että kirjallahan voi olla useita tekijöitä miten ne ilmoitetetaan marcxml formaatissa? En löytänyt vaski aineistosta muuta kuin etunimen ja sukunimen XML tiedostojen tietueiden sisältä.

    Esim.

    Marx
    Karl

  2. Moikka, autan toki mielelläni.

    Katsotaas: data.kirjastot.fi:ssä oleva aineisto on HelMetin osalta MARC21:stä, tai no HelMetissä taitaa olla muutama ns. paikallinen sovellutus tuohon standardiin mutta periaatteessa tavara on MARC21:stä. Vaskin osalta (jonka avoin data -synnytyksen kätilöin itse) tavara on FinMARCia, enkä onnistunut saamaan Vaskin FinMARC→MARC21 -konversion tuloksia ennen lähtöäni Turusta kesäkuun lopussa omaan käyttööni (tehtävä #2099 hylätty) enkä sitä myöten myöskään avoimeksi dataksi. Sen perään voi kysellä Ulla-Maija Maunulta. Kuten tuossa yllä olevassa videossa kuvataan, tuon konversion voi tehdä itse USEMARCONilla, mutta valitettavasti Vaskin järjetelmätoimittajalta Axiellilla teetätetyt konversiosäännöt eivät taida olla saatavilla; tosin niitäkin voi kysellä Ulla-Maijalta tai konversiotyötä koordinoineelta Anna Viitaselta. Itse tekemäni konversiot on tehty noilla Kansalliskirjaston ylläpitämillä konversiosäännöillä.

    Sekä MARC21 että FinMARC taipuu kyllä MarcXml:ksi. Käytän tähän hommaan itse yaz-marcdump -työkalua, mutta muillakin homma onnistuu.

    Toi viittaamasi ns. nimiö, eli MarcXml:n rakenteessa /collection/record/leader on dokumentoitu täällä. Nimiö (aka. ”leader” aka 000-kenttä) ja muut kiinteämittaiset kentät ovat tunnettu akilleen kantapää MARC-tietoformaatissa. Viittaamassasi tietueessa esim paikat 5-9 (nam a) (huom. laskeminen aloitetaan 0:sta, eikä 1:stä) tarkoittavat seuraavaa:

    n
    uutuus (paikka 05 ”tietueen tila”)
    a
    tekstiaineisto (paikka 06 ”tietueen tyyppi”)
    m
    monografia (paikka 07 ”tietueen bibliografinen taso”)
    ei kontrollia (paikka 08 ”arkistoaineiston kontrolli”)
    a
    UTF-8 (paikka 09 ”tietueen merkistö”)

    jne.

    MARCissa ns. pääkirjaus tehdään kenttiin 1XX, eli siellä on keskeisin tekijä. Muut tekijät pitäisi tallentaa kenttiin 70X-75X. Vaikka asia on mainittu luettelointisäännöissä, ei kuitenkaan voi luottaa että tieto siellä olisi. Lisäksi tietoa tallennetaan kenttään 245. 7XX:ssä on periaatteessa myös merkitty missä ns. funktiossa kukin tekijä on (kääntäjä, kuvittaja, rummut, säveltäjä, käsikirjoittaja tms.).

    Hyvä että kysyit, koska tämä on sellaista osaa datasta jonka me kirjastoihmiset haluaisimme olevan hyvää ja luotettavaaa, mutta todellisuudessa datamme on hyvin puutteellista sekä sisältömme että formaattimme osalta.

    Anyway, katso esim. Foucaulin Tiedon arkeologia:

    <record>
    .
    .
    .
      <datafield tag="100" ind1="1" ind2=" ">
        <subfield code="a">Foucault</subfield>
        <subfield code="h">Michel</subfield>
      </datafield>
      <datafield tag="245" ind1="2" ind2=" ">
        <subfield code="a">Tiedon arkeologia</subfield>
        <subfield code="d">Michel Foucault</subfield>
        <subfield code="e">suomentanut Tapani Kilpeläinen</subfield>
      </datafield>
      <datafield tag="700" ind1="1" ind2="1">
        <subfield code="a">Kilpeläinen</subfield>
        <subfield code="h">Tapani</subfield>
      </datafield>
    .
    .
    .
    </record>
    

    Suosittelen erittäin lämpimästi käyttämään jotain ohjelmointityökalujen abstraktiota tekijätietojen noukkimiseen, esim. Perlin MARC::Record tarjoaa author() -constructorin. Kaikenkaikkiaan melkoinen viidakko, tsemppiä ja laita vaan lisää kysymyksiä jos (=kun) niitä tulee niin vastailen parhaani mukaan🙂

  3. Minä suosittaisin ottamaan vielä yhden askeleen eteenpäin ja muuntamaan MARCXML:n MODS-muotoon, joka on huomattavasti mukavampi käyttää (esim. kentät ovat selväkielisiä, eivätkä esoteerisia numero-kirjainsarjoja ja lisäksi leaderin sisältämä data konvertoidaan osakentiksi) Konversio ei ole täydellinen, mutta olennaisimmilta osin tiedot säilyvät. Alunalkaen Kongressin kirjaston tekemä ja hieman modifioimani muunnostiedosto löytyy täältä: https://github.com/mjlassila/helmet-xslt .

    Niin, ja pitää vielä vinkata BaseX-ohjelmasta (www.basex.org) , joka on melkeimpä paras mahdollinen työkalu XML:n pyörittelyyn. Verraton datasettiin tutustumisen apu, monen muun käyttötarkoituksen ohessa.

  4. Take it from Matti!

    BaseX on kyllä mainio ja kätevä, mutta mun täytyy aina preparoida joku pienemi otos datasta koska ei viitti mitään 1.8 miljuunan MarcXML -tietueen settiä availla tällä uskollisella miniläppärilläni. Ehkä voisi harrastusmielessä kokeilla mitä tapahtuisi jos perustaisi BaseX -palvelimen jonnekin Amazonin AWS:ään tai jotain.

  5. Kiitos paljon kommeneista nyt pääsin eteenpäin. Hylkäsin tylysti vaski aineiston koska se ei ollut standardin mukaista ja Matin xlt ”ohjelman” avulla sain käännettyä helmet aineiston selkokieliseksi nopeasti, muuten olisin joutunut kirjoittamaan tosiaan ohjaussääntöjä sen suhteen että n=uutuus jne. enkä sitä halua tehdä. MODS on ihan auto formaatti minulle ja näyttää siltä että yksi nimike koostuu ainakin seuraavista:mods,titleInfo,name,typeOfResource,originInfo,language,physicalDescription,tableOfContents,note,subject,classification,identifier,location ja recordInfo kentistä. Tämä lienee ok? Miten MODS suhtautuu XML, voiko MODS formaattia käsitellä aivan kuten XML tiedostoa? Eli voin parsia MODS tiedostot tietokantaan XML avulla? Harjoituksessa minkä laitan kaikkien nähtäville yritän seuraavassa vaiheessa liittää dataan kirjastotiedon eli kuviteellisesti mistä kirjastosta aineisto on lainattu. En löytänyt netisstä mistään listaa Suomen kirjastoisa, mahtaako sellaista ollakaan? Yritän tuottaa aineiston missä olisi kaikki kirjat/nimikkeet, aidot suomalaiset kirjastot ja sitten generoida kuvitteellisia lainaustapahtumia Hadoopin päälle koska mitä nimikkeitä on lainattu ja koska ei varmaan mitään saa edes korkealla tasolla? Henkilötasolal ei tietenkään, mutta mahtaakohan missään olla tietoa mitkä ovat suosittuja tms.? Iso kiitos jo nyt avusta !!

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s