Johdanto

Ysasta Ysoon siirtymän vuoksi tietueiden ylläpito siirtyi MARC21-tietueiden ylläpidosta RDF-muotoisen tietokannan yläpitoon. Koska kirjastojärjestelmät käsittelevät edelleen MARC21-muotoisia tietueita, tarvitaan konversio-ohjelma, joka kääntää SKOS-muotoiset sanastot (YSO, YSO-paikat, SLM) MARCXML-muotoon. Sanastot on julkaistu Finto.fi-palvelussa, jossa ne ovat vapaasti selattavissa. Myös MARCXML-muotoiset sanastot ovat tulevaisuudessa ladattavissa kunkin sanaston etusivulta, jossa ne ovat myös RDF-muodossa ladatattavissa.

Finto-skos-to-marc-muunnin

Ohjelman lähdekoodi: https://github.com/NatLibFi/Finto-data/tree/master/tools/finto-skos-to-marc

Muuntaa Finton SKOS-muotoisen sanastotiedoston MARC-muotoiseksi (.mrcx).

Ohjelma tukee tällä hetkellä Yso-, Yso-paikat- ja SLM-sanastojen erikoisominaisuuksia.

Ajaminen ja muunnos

Ohjelma edellyttää vähintään Python versiota 3.4.

Ohjelmaa voidaan ajaa kolmella tavalla:

1. Tuotetaan sanaston kaikki käsitteet MARC21-muodossa

2. Tuotetaan sanaston kaikki käsitteet ja ylläpidetään tiedostoa MARC21-tietueiden muutospäivämääristä

3. Haetaan vain muuttuneet käsitteet

Yksinkertaisimmillaan eli 1. tavalla muunnos tapahtuu esimerkiksi seuraavalla komennolla:

python3 finto-skos-to-marc.py --vocabulary_code="sanastotunnus" --input="tiedostopolku" --languages="fi" --output="tiedostopolku2" --log_file="tiedostopolku3"

Tämä luo tiedostopolku2-tiedostopolkuun tiedoston, jossa on laveassa MARCXML-muodossa ohjelman muuntamat käsitteet. Osa käsitteistä voi jäädä muuntamatta esimerkiksi puutteellisen tiedon vuoksi. Näin mm. tapahtuu, jos käsitteellä ei ole muunnettavalla kielellä skos:prefLabel-ominaisuutta) tai esimerkiksi --keep_deprecated_after="None" -rajoitteen vuoksi.

2. tavalla komentoon on lisättävä --modification_dates-parametri, joka on tiedostopolku tietueiden muutospäivämäärät sisältävään tietueeseen. Tiedosto on muotoa '{käsitteen URI: (muutospäivämäärä, tietueen MD5-tiiviste)}. Jos tiedostoa ei ole olemassa ennestään, tiedosto luodaan ja viimeiseksi muutospäivämääräksi jokaiselle käsitteelle annetaan ajon aikainen päivämäärä.

3. tavalla on --modification_dates-parametrin lisäksi tarvitaan --keep_modified_after-parametrin, jonka avulla haetaan parametrin päivämääränä ja sen jälkeen muuttuneet käsitteet.

Rajoitteita on asetettavissa enemmän config-komentoriviparametrillä annettavassa konfiguraatiotiedostossa:

 Komentoriviparametri  Konfiguraatiotiedosto  Oletusarvo ohjelman muuttujissa  Selite 
 --config 

 konfigointitiedoston sijainti 
 --config_section 

 asetettava, jos konfigurointitiedoston sektion nimi on eri kuin sanastokoodi (esim. "yso-paikat") 

 creatorAgency  FI-NL  003-kenttään kirjoitettava ISIL-tunnus 
 --default_creation_date  defaultCreationDate  1980-01-01  päivämäärä 008-kenttään, jos käsitteessä tätä ei ole määritelty 
 --endpoint  endpoint  ENDPOINT_ADDRESS http://api.dev.finto.fi/sparql  osoite, josta haetaan sanastoon linkittyneitä muita sanastoja 
 --endpoint_graphs  endpointGraphs  ENDPOINTGRAPHS = []  palvelupisteen graafien osoitteet, jotka ladataan läpikäytäviin muihin graafeihin
 --grouping_classes  groupingClasses  GROUPINGCLASSES  YSOn ryhmäkäsitteet, joita ei tulosteta, jos keepGroupingClasses 
 --input 

 Konvertoitavan sanaston tiedosto 
 --input_format  inputFormat  oletusarvo turtle, joku RDFLib-kirjaston hyväksymistä https://rdflib.readthedocs.io/en/stable/plugin_parsers.html
 --ignore_other_graph_warnings  ignoreOtherGraphWarning  False  Ei lokiteta mitään, jos toisesta sanastosta ei löydy vastinetta (arvo = True)
 --keep_deprecated_after  keepDeprecatedAfter  ALL  Päivämäärä, jonka jälkeen deprekoidut käsitteet tuotetaan MARC21-muodossa ("all" tai "none", jos ei päivämäärää)
 --keep_grouping_classes  keepGroupingClasses 
 Tulostetaan sanaston ryhmäkäsitteet, jotka määritelty konfigointitiedoston groupingClasses-kohdassa 
 --keep_modified_after 
ALL Jos tulostetaan vain muuttuneet käsitteet, annetaan päivämäärä muodossa YYYY-MM-DD. Edellyttää tiedostonimeä komentoriviparametrillä modification_dates, josta haetaan MARC21-muutospäivät
 --languages 

 kieli tai kielet (erota pilkuin), jotka halutaan samaan sanastoon (jos jaotellaan eri sanastoihin, niin ohjelma ajettava uudelleen muita kieliversiota varten)
 --loc_directory  locDirectory 
 tallennuskansio kongressin kirjaston MARC21-tietueille 
 --log_file 

 lokitiedoston sijainti. Jos parametriä ei ole määritetty, lokitus tapahtuu stderr-kanavalle.
 --modification_dates 

 Pythonin pickle-muotoinen tiedosto, jossa ylläpidetään MARC21-tietueiden muutospäivämääriä 
 --multilanguage_vocabulary  multilanguage 
 Jos kyseessä on monikielinen sanasto ja sanastokoodiin halutaan kielikoodi, arvoksi True 


 NORMALIZATION_FORM = "NFD"  käytetään UTF8-merkkien dekoodauksessa 
 --output 

 kirjoitettava tiedosto 
 --pickle_vocabulary pickleVocabulary
Pythonin pickle-muotoinen tiedosto, johon sanastotiedosto pakataan päivän 1. käyttökerralla seuraavan ajokerran nopeuttamiseksi
 --vocabulary_code 

 Sanastokoodi, joka tulee MARC21:een. Yso-paikoilla "yso" 


Näiden lisäksi ohjelmassa on oletusarvoina ja konfiguroitavissa nimiön arvot ja luettelointikoodit (luettelokoodit eivät ole tällä hetkellä ohjelman tulostamissa tietueissa).

Jos sanaston käsitteillä on viittauksia toisiin sanastoihin, tulee näiden graafit saattaa ohjelman tietoon --endpoint ja --endpoint_graphs -parametreilla. Yhdysvaltojen Kongressin kirjaston `LCSH`- ja `LCGF`-viitteitä ei kuitenkaan tarvitse asettaa näin: ne haetaan ja tallennetaan myöhempää käyttöä varten ohjelman toimesta automaattisesti, jos `--loc_directory="tiedostopolku"`-parametri on asetettu (varmistathan, että tällainen tiedostopolun mukainen kansio on olemassa ja siihen on ohjelmalla käyttö- ja kirjoitusoikeus).

Muunnettavan tiedosto on myös mahdollista putkittaa ohjelmalle, ja muunnettu tiedosto sekä lokitiedosto edelleenputkittaa UNIX-käytänteiden mukaisesti. Putkituksella ei kuitenkaan ole mahdollista ulostulostaa useita erikielisiä tiedostoja yhdellä kertaa - `--output`-parametria käytettäessä eri kieliversiot eritellään toisistaan `nimi-kielitarkenne`-erotuksilla.

Konfiguraatiotiedosto

Projektin kansion tiedosto config.ini sisältää perusmuotoisen konfiguraatiotiedoston, jota voi käyttää pohjana. [DEFAULT]-osiossa on määritelty kaikille sanastoille yhteiset ominaisuudet, joita voi yliajaa muissa osioissa. Komentoriviparametrit kuitenkin AINA yliajavat asetettuina konfiguraatiotiedoston vastaavat määritykset. Listojen ilmaisemisessa välimerkkinä käytetään pilkkua. Ohjelma käyttää oletusarvoisesti pakollista sanastokoodia vastaavaa osiota, mutta tämän voi yliajaa asettamalla config_section-komentoriviparametrin (tarpeen esimerkiksi yso-paikkojen tapauksessa, jos haluaa pitää samassa konfiguraatiotiedossa kaikki sanastot).


  • No labels