Ehdotus arkistoon oton (ingest) yhteydessä tehtävistä testeistä
Henri Sivonen, korkeakouluharjoittelija, Kansallisarkisto
Henri Sivonen on laatinut tämän dokumentin Kansallisarkistossa kesällä 2002. Dokumentti sisältää Sivosen Kansallisarkistolle esittämän näkemyksen. Dokumentti ei välttämättä edusta Kansallisarkiston kantaa (eikä välttämättä edes Sivosen nykyistä kantaa).
Arkistoon ottamisen yhteydessä arkistoitavaille paketeille on tarpeen tehdä kelpoisuustestejä. Testien tarkoituksena on pienentää arkistoon otettujen AIP:ien (Archival Information Package [OAIS]) viallisuuden todennäköisyyttä karsimalla ilmeisen virheelliset tapaukset pois. Hylätyt AIP:it olisi tarkoitus antaa jonkun korjattavaksi ennen kuin ne otetaan arkistoon. Tässä hylkääminen siis ei tarkoita sitä, että dokumentin arkistoinnista luovuttaisiin.
Viranomaiselta tai muulta arkistoitavien dokumenttien tuottajalta tulee arkistoon SIP (Submission Information Package [OAIS]). SIP saattaa olla sama kuin AIP tai sitten hieman erilainen. Tässä käsittelen asiaa kuten tarkistettava tiedosto olisi AIP. Käytännössä kuitenkin joitain testejä voi olla käytännöllisempaa suorittaa SIP:in purkamisen jälkeen ennen AIP:in paketointia, jos SIP ja AIP ovat erilaiset. Lisäksi oletan, että yhdessä tarkistettavassa paketissa on yksi dokumentti (joka saattaa koostua monesta tiedostosta). Jos arkistossa päätetään tallentaa yhteen AIP:iin monta dokumenttia tai tallentaa joistain dokumenteista vain merkistä dokumentin tuhoamisesta, jotkin tässä ehdottamani yksityiskohdat eivät ole soveltuvia.
Oletan tässä, että testit tehdään jollain Unixin kaltaisella järjestelmällä (esim. AIX tai Linux). Työkalut ovat tarvittaessa saatavissa myös Windows-maailmaan.
AIP
- Tarkistetaan zipinfo-ohjelmalla (zipinfo -v tiedosto), että kaikkien paketin sisällä olevien tiedostojen tallennusmenetelmä on ”deflated” tai ”none (stored)”. Jollei ole, AIP hylätään. zipinfo sisältyy Info-Zip -ryhmän UnZip-distribuutioon.
- Puretaan paketti Info-Zip -ryhmän unzip-ohjelmalla. Jos ohjelma ilmoittaa virheitä, AIP hylätään.
- Puretaan paketti JDK:n jar-ohjelmalla. Jos ohjelma ilmoittaa virheitä, AIP hylätään.
- Verrataan unzipin ja jarin tuottamia purettuja hakemistorakenteita ja tiedostojen sisältöjä (esim. diff-ohjelmalla). Jos eroja ilmenee, AIP hylätään.
- Tarkistetaan, että kaikki paketissa olleiden hakemistojen ja tiedostojen nimet sisältävät vain turvallisia merkkejä (a-z, A-Z, 0-9, piste, ASCII-yhdysviiva ja alaviiva) ja ettei missään hakemistossa ole tiedostoja, joiden nimet poikkeavat vain iso/pienikirjaimisuuden suhteen. Jos nimissä on muita merkkejä, AIP hylätään.
Metadata
- Suoritetaan yleinen XML-tarkistus (jäljempänä).
- Tarkistetaan, että kaikille AIP:in tiedostoille (paitsi metadatatiedostolle itselleen) on tietue metadatassa ja että tiedostojen nimet metadatassa ja puretussa hakemistorakenteessa täsmäävät täysin. Jos näin ei ole, AIP hylätään.
- Tarkistetaan, ettei metadatassa ole nykyistä versiota kuvailevia tietueita, joita vastaavia tiedostoja ei löydy AIP:ista. Jos ylimääräistä metadataa löytyy, AIP hylätään.
- Tarkistetaan, että metadatassa on pakolliset kentät täytetty (ellei selvinnyt jo XML-validoinnissa). Jos jokin pakollinen kenttä on täyttämättä, hylätään AIP.
CCITT G4 TIFF
- Tarkistetaan, että tiedosto voidaan lukea onnistuneesti libtiff-kirjaston avulla. Jos ei voida, hylätään AIP.
- Jos pakkaus onkin jokin muu kuin väitetty Group 4 tai jos yhdessä kuvatiedostossa on enemmän kuin yksi sivu, hylätään AIP.
- Tarkistetaan, että kuvassa on mustia pikseleitä alle puolet ja valkoisia yli puolet. Tämä ehto pätee sellaisten paperidokumenttien kuville, joiden pakkamiseen Group 4 sopii. Jos ehto ei päde, jossain on todennäköisesti tapahtunut virhe fotometrisen tulkinnan käsittelyssä, joten AIP hylätään.
- (Pitäisikö myös tuntemattomat tägit katsoa virheeksi?)
PNG
- Tarkistetaan, että tiedosto voidaan lukea onnistuneesti libpng-kirjaston avulla. Jos ei voida, hylätään AIP.
- (Pitäisikö tuntemattomat ancillary chunkit katsoa virheeksi?)
JFIF
- Tarkistetaan, että tiedosto voidaan lukea onnistuneesti The Independent JPEG Groupin JPEG-kirjastolla. Jos ei voida, hylätään AIP.
- Tarkistetaan, että tiedostosta löytyy asianmukainen JFIF-marker (versio 1.01 tai 1.02) ja että tiedoston väriformaatti on harmaasävy tai YCrCb. Jos näin ei ole, hylätään AIP. (Erityisesti: Adoben käyttämiä muita väriesityksiä ei hyväksytä, koska niiden yhteensopivuus on huonompi.)
- (Pitäisikö tuntemattomat markerit katsoa virheeksi?)
PDF
Ks. erillinen selvitys.
XML
- Tarkistetaan charlintillä, että merkit ovat [CharMod]:in edellyttämän Unicode-normalisaatiomuodon mukaisia (nykyisessä luonnoksessa muoto C), että UTF-8-virta on kelvollinen ja että dokumentissa ei ole käytetty määrittelemättömiä tai Private Use Arean (PUA) merkkejä. Jos ehdot eivät päde, hylätään AIP.
- Luetaan metadatatiedosto pätevällä validoivalla XML-jäsentimellä siten, että validointi on käytössä. Konfiguroidaan XML-parseri tukemaan vain pakollisia koodauksia (UTF-8 ja UTF-16). Jos XML-parseri ilmoittaa virheitä, AIP hylätään. On olennaista varmistaa, että tapauksissa, joissa dokumentin halutaan olevan validi, dokumentissa on tarvittava DTD- tai schema-viittaus, jottei validointi jää vahingossa tekemättä viittauksen puutteen vuoksi.
Pelkkä teksti
- Tarkistetaan charlintillä, että merkit ovat [CharMod]:in edellyttämän Unicode-normalisaatiomuodon mukaisia (nykyisessä luonnoksessa muoto C), että UTF-8 -virta on kelvollinen ja että dokumentissa ei ole käytetty määrittelemättömiä tai Private Use Arean (PUA) merkkejä. Jos ehdot eivät päde, hylätään AIP.
- Tarkistetaan, ettei tiedostossa ole seuraavia kontrollimerkkejä: [U+0000...U+0008], U+000B, [U+000E...U+001F], U+007F, [U+0080...U+009F]. Jos on, AIP hylätään. (Mainitut merkkinumerot ovat ASCII:sta peräisin olevia tekstin syöttöön ja päätteen ohjaamiseen liittyviä merkkejä, joita ei kuuluisi olla tekstitiedostossa, sekä merkkejä, joita ei Unicodessa ole määritelty tulostuviksi merkeiksi, mutta joita monesti luullaan tiettyjen Windows-1252 -koodauksen merkkinumeroiden vastikkeiksi.)
Lähteet ja ohjelmalinkit
[OAIS] Reference Model for an Open Archival Information System (OAIS). (CCSDS 650.0-R-2, suositusluonnos) Consultative Committee for Space Data Systems. 2001. URL: http://www.ccsds.org/documents/pdf/CCSDS-650.0-R-2.pdf
[CharMod] Character Model for the World Wide Web 1.0. (W3C Working Draft 30 April 2002.) Dürst (toim.) et al. The World Wide Web Consortium. 2002. URL: http://www.w3.org/TR/2002/WD-charmod-20020220/ (uusin versio: http://www.w3.org/TR/charmod/)
UnZip: http://www.info-zip.org/pub/infozip/UnZip.html
jar: http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html
diff: http://www.gnu.org/software/diffutils/diffutils.html
libtiff: http://www.libtiff.org/
libpng: http://www.libpng.org/pub/png/libpng.html
The Independent JPEG Group: http://www.ijg.org/
charlint: http://www.w3.org/International/charlint/