MarcEdit-koulutus
10.11.2022 klo 10-12
- Tietoa MarcEditistä
- MarcEditin asennus ja asetukset
- Harjoitukset
- Käytettävät tietueet
- Yhdistä 3 tietuetta
- MarcBreaker
- MarcEditorin valikot
- Kenttien sortteeraus (erityisesti lehtiä käsiteltäessä kenttä 785) - uusi
- MarcEditor - mnemotic MARC-teksti
- Validiointi - aina alussa ja lopussa
- Tallenna, tallenna ja tallenna!
- Säännöllinen lauseke (regular expression, regexp)
- Toimenpiteen peruminen, jos jokin menee pieleen
- Bonustehtävä
- Reports - mitä aineistoa meillä on käsittelyssä?
- Kuinka paljon ja mitä kenttiä ja osakenttiä tiedostossa on?
- Kenttien ja osakenttien tutkiminen ja muokkaus
- Excelin käyttö analysoinnin apuna: export TAB delimited records
- Tietueiden jakaminen kielen perusteella (041$a) omiin tiedostoihinsa
- Mahdolliset kielikohtaiset muokkaukset
- Importointi Almaan
Tietoa MarcEditistä
Lisätietoa MarcEditistä: http://oregonstate.edu/~reeset/marcedit/html/
Sähköpostilista: https://listserv.gmu.edu/cgi-bin/wa?A0=MARCEDIT-L
Oleteuksena kuitenkin on, että jokainen on onnistunut asentamaan MarcEdit 7.5 version...
MarcEditin asennus ja asetukset
Lähetetty ryhmälle:
Muistutus: MARCEngine
Kun käsitellään Almasta otettuja tietueita, niin "Enforce Defined Normalization" EI SAA OLLA ruksattuna; muutoin ääkköset menevät kahdeksi merkiksi
Harjoitukset
Käytettävät tietueet
Lataa alla olevat digitoitujen lehtien tiedostot omalle koneellesi johonkin työkansioon:
(Tietueet ovat peräisin Turun yliopiston Almasta)
Yhdistä 3 tietuetta
Tools → MARC Processing Tools → MARCJoin
- Save File ← yhdistämisen lopputulema
- File(s) to Join ← yhdistettävät tietueet, 2+

MarcBreaker
Tuplaklikkaa .mrc tiedostoa
HUOM! encoding UTF8
Execute
- sivun alalaidassa käsiteltyjen tietueiden määrä

Klikkaa Edit Records
MarcEditor aukeaa
MarcEditorin valikot

Tärkeimmät toiminnallisuudet:
File → Save
File → Compile File into MARC
Edit → Find
Reports
- monia hyödyllisiä raportteja ja validiointeja...
Tools → Add/Delete Field
Tools → Edit Subfield Data
Kenttien sortteeraus (erityisesti lehtiä käsiteltäessä kenttä 785) - uusi
MarcEdorissa kentät voi järjestää: kentän numero - 1ind. - 2. ind. - $a <aakkostus>
Ctrl+F11 tai Tools → Sort by... → Sort Fields Within the Record By... → Sort All Fields
Lehdet ja kenttä 785. Kun kaksi julkaisua yhdistyy muodostaakseen uuden julkaisun (ind.2=7), niin uusi, muodostunut julkaisu on AINA viimeisenä. Tämä on ainoa kenttä, jossa rivien järjestyksellä on oikeasti väliä! Lehtiä varten MercEditorille täytyy kertoa, ettei se saa koskea kenttään 785:
- Aukaise tietueet MarcEditorissa
- Valitse Tools → Sort by... → Sort Fields Within the Record By... → Custom Sort
- Poistetaan kenttä 785 sortteerauksesta: Tools → Sort by... → Sort Fields Within the Record By... → Custom Sort

MarcEditor - mnemotic MARC-teksti
Mnemonic MARC Text File
File format used by MarcEdit that is a human readable version of the binary file.

- Kenttä alkaa aina rivin alusta ja sitä edeltää =
- Tämän jälkeen on aina kaksi välilyöntiä
- Kiinteämittaisen kentät
- sisältö eli merkkipaikat alkavat heti kahden välilyönnin jälkeen
- nimiö on LDR
- Vapaamittaiset kentät
- kahta välilyöntiä seuraa indikaattorien merkit
- tyhjä indikaattori merkitään \
- osakentän merkki on $
- Huom! dataelementit "pötkössä" eli dataan ei lisätä välilyöntejä (paitsi jos ne kuuluvat lopulliseen MARC-tietueeseen)
- kahta välilyöntiä seuraa indikaattorien merkit
- Hakemisto puuttuu kokonaan. Se luodaan automaattisesti, kun tiedosto käännetään takaisin MARCiksi
mnemotic muotoiset tiedostot ovat .mrk päätteisiä
Validiointi - aina alussa ja lopussa
Tee tämä ensimmäiseksi, viimeiseksi ja aina välillä!
Tools → Validate MARC Records
Validioi sekä "Check MARC Using Rules File" että "Validiate Records Structure":
("Group results by error": virheet ryhmitellään; muutoin listaus annetaan tietue tietueelta)
Vihelistausta:
001 (if defined): 9922945074805971 245 (if defined): Uusimaa.
648- $2: Subfield cannot repeat.
The first value that appears to be a duplicate is: https://digi.kansalliskirjasto.fi/aikakausi/titles/0355-1253 245 (if defined): Borg tidning.
The first value that appears to be a duplicate is: https://digi.kansalliskirjasto.fi/aikakausi/titles/0355-1253 245 (if defined): Borg tidning.
001 (if defined): 9923021495005971 245 (if defined): Selonteko Keisarillisen Aleksanterin-yliopiston opettajain toiminnasta.
001 (if defined): 9923021495005971 245 (if defined): Selonteko Keisarillisen Aleksanterin-yliopiston opettajain toiminnasta.
001 (if defined): 9923022403505971 245 (if defined): Hemmet och samh llet.
Etsi 260 kentän virhe MMS ID:n avulla:
Find All 9922945074805971
Jump to record TAI tuplaklikkaa osumaa
Korjaa virhe KÄSIN ja TALLENNA
Tallenna, tallenna ja tallenna!
TALLENTAMINEN tärkeää aina manuaalisen muokkauksen jälkeen!
Jos tietuetta korjataan käsin (eikä esimerkiksi etsi-korvaa toiminnallisuuden kautta), niin tietue on myös tallennettava.
Jos tietuetta ei tallenna käsin tehdyn muokkauksen jälkeen, niin MarcEdit saattaa "unohtaa" tehdyn korjauksen tai pahimmassa tapauksessa tiedosto saattaa korruptoitua (tietueita on lopussa vähemmän kuin niitä oli aloitettaessa)
Säännöllinen lauseke (regular expression, regexp)
Edellä olleet virheelliset 648 kentät voitaisiin etsiä yksitellen MMS ID:n perusteella - mutta siihen menisi paljon aikaa.
Siksi on järkevämpää hyödyntää säännöllisiä lausekkeita (regular expression, regexp). Regexp ohjeita: https://learn.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference
regexp haku: ^=648.*\$2.*\$2

Selitys: ^=648.*\$2.*\$2
- ^ → aloita etsintä rivin alusta
- =648 → jota seuraa merkkijono =648
- .* → jota seuraa mitä tahansa merkkejä 0-∞ kertaa
- . → mikä tahansa merkki
- * → 0-∞ kertaa
- \$ → jota seuraa osakentän merkki
- regexp haussa $ tarkoittaa rivin loppua (vrt ^) . Siksi osakentän merkkiä haettaessa on käytettävä pako-operaattoria \
- 2.* → jota seuraa merkki 2 jota seuraa mitä tahansa merkkejä
- \$2 → jota seuraa osakentän merkki ja 2

=> halutaan pudottaa ensimmäinen $2yso/fin tai $2yso/swe pois
Rakennetaan regexp
Ryhmitellään osat sulkujen sisään, siten että ensimmäinen $2 voitaisiin pudottaa pois
^(=648.*)(\$2[^$]*)(\$.*)$
Selitys
- ^ → aloita etsintä rivin alusta
- (=648.*) → ensimmäisen ryhmän aloittaa merkkijono =648 jota seuraa mitä tähansa merkkejä...
- (\$2[^$]*) → toisen ryhmän aloittaa osakenttä 2 eli \$2 jota seuraa mitä tahansa merkkejä paitsi osakentän merkki $
- [^x] → ei sisällä merkkiä x
- huom! ei siällä osakentän merkkiä $ eli [^$] – $-merkin kanssa ei tässä käytetäkään pako-operaattoria \
- (\$.*) → kolmas ryhmä alkaa osakentän merkillä $ jota seuraa mitä tahansa merkkejä
- $ → lopeta etsintä rivin loppuun
Tehdään testikorvaus, kopioi alla oleva uuteen ikkunaan:
MMS ID 9922964966305971
=648 \7$a1800-luku.$2yso/fin$0http://www.yso.fi/onto/yso/p6180061899$2yso/fin
=648 \7$a1800-luku.$0http://www.yso.fi/onto/yso/p6180061899$2yso/fin
=648 \7$a1800-talet.$2yso/swe$0http://www.yso.fi/onto/yso/p6180061899$0http://www.yso.fi/onto/yso/p6180061899$2yso/swe

Replace rivillä: $1$3
Taas uusi merkitys $-merkille! Regexp Replace osiossa $ tarkoittaa:
- $1 → säilytä ensimmäinen suluissa () oleva asia
- $2 puuttuu → pudota toinen suluissa () oleva asia pois
- $3 → säilytä kolmas suluissa () oleva asia
Korvausosiossa ei tarvitse tyytyä vain olemassa olevan tekstin muokkaamiseen, vaan tekstiä voidaan myös lisätä:
regexp Replace:
- $1 lisättyä tekstiä $2 → ryhmän 1 ja 2 väliin lisätään merkkijono ' lisättyä tekstiä '
- $1$3$2 → järjestää ryhmät järjestykseen 1 - 3 - 2
- $1$3$$2yso/fin → ryhmien $1 ja $3 jälkeen lisätään merkkijono '$2yso/fin'
- numeerinen osakenttä lisätään merkinnällä $$
- $1\n=700 1\$a$2 → jaetaan 700 kenttä kahdelle riville - rivitys \n
- jos viitatun ryhmän jälkeen halutaan lisätä numero, niin viitattu sulkumerkkiryhmä pitää laittaa {} sulkuihin
- esimerkiksi viitataan ryhmään $1 jonka jälkeen dataan halutaan lisätä numero 1 → Replace: ${1}1
- jos käytetään Replace: $11 niin dataan myös korvautuu tämä merkkijono (jos ei ole olemassa 11. sulkujen sisässä olevaa asiaa)
Esimerkki. Jaetaan 650 kenttä kolmeksi:
Find: ^(=650 .7\$a.*)\$x(.*)\$x(.*)(\$2ysa)$
Replace: $1$4\n=650 \7$a$2$4\n=650 \7$a$3$4
=650 \7$akissa$xkoira$xhevonen$2ysa
→
=650 \7$akissa$2ysa
=650 \7$akoira$2ysa
=650 \7$ahevonen$2ysa
Toimenpiteen peruminen, jos jokin menee pieleen
Jos havaitaan, että jokin meni pieleen, niin regexp voidaa kumota :

Huom. Peruminen tehtävä ennen tallennusta...
Bonustehtävä
Korjasimme aikaisemmin 260 kentän, jonka 2. indikaattorin arvo oli jotain muuta kuin tyhjämerkki. Virheilmoitus validoitaessa oli:
260-ind2: Invalid data (1) Indicator should be undefined.
001 (if defined): 9922945074805971 245 (if defined): Uusimaa.
- miten ko. rivin olisi voinut löytää käyttämällä säännöllistä lauseketta?
- miten ko. virheen olisi voinut korjata käyttämällä säännöllistä lauseketta?
Reports - mitä aineistoa meillä on käsittelyssä?
Reports → Material Type Report → Generate Report

→ yhdessä tietueessa on 008/23=s (= electrinic)- kaikissa pitää olla 'o'
Etsitään ongelmallinen, regexp ^=008 .{23}s
VAIHTOEHTOISESTI 23. merkki paikka ei ole 'o': ^=008 .{23}[^o]
Selitys
- ^ → aloita etsintä rivin alusta
- =008 → ensimmäisen ryhmän aloittaa merkkijono =008<välilyönti><välilyönti>
- . → mikä tahansa merkki...
- {23} → joka toistuu 23 kertaa
- s → jota seuraa merkki 's'
- VAIHTOEHTO: [^o] → ei sisällä merkkiä o
Kuinka paljon ja mitä kenttiä ja osakenttiä tiedostossa on?
Reports → Field Count
Valitse Report Style (Tab Delimited/HTML Report) ja Generate Report
Lopuksi voi vielä tarkistaa, että kenttiä on yhtä paljon (jos ei poistettu) kuin alussa
Kenttien ja osakenttien tutkiminen ja muokkaus
Tutkitaan kenttä kentältä mitä tietue sisältää. Tehdään poistoja ja lisäyksiä tarvittaessa.
ESIMERKKEJÄ
Kentän korjaus, etsi-korvaa
- Tutkitaan 500 kentän sisältöä, Hae: =500 ← =500välilyöntivälilyönti
- Sortteeraa teksti klikkaamalla tulosikkunan sakeen otsikkoa "Found Text"
- =500 \\$aAlanimeke vaihdellut. ↔ "Jos muutoksia on enemmän kuin kolme, tehdään yleinen huomautus ”Alanimeke vaihtelee”."
- Etsi-korvaa:

Jos halutaan, että vain hakuehdon mukaisella kirjainkoolla olevat osumat korvataan, niin ruksaa "Match case"
- Etsi-korvaa:
- =500 \\$aEi ilmestynyt vuonna/vuosina ... kuuluu 515 kenttään
- Tarkistetaan vielä, mitä löytyy haulla: =500 \\$aEi ilmestynyt vuo
- Etsi-korvaa:

Kentän lisäys
- Halutaan lisätä kentät:
=655 \7$aelektroniska tidskrifter.$0http://urn.fi/URN:NBN:fi:au:slm:s50$2slm/swe
=655 \7$averkkolehdet.$0http://urn.fi/URN:NBN:fi:au:slm:s50$2slm/fin- Tools → Add/Delete Field
Huomaa, että myös indikaattorit '\7' täytyy antaa - klikkaa päälle myös
(kenttä lisätään vain jos saman sisältöinen kenttä puutuu tietueesta)
- Tools → Add/Delete Field
- Field Countin perusteella kaksi 300 kenttää puuttuu. Lisätään puuttuvat kentät:
- Tools → Add/Delete Field

- klikkaa päälle myös
(kenttä lisätään vain jos se puuttuu tietueesta)
- Tools → Add/Delete Field
Kentän poisto
- 540 kentässä ei käytetä Public domain merkintää, joten fraasin sisältävät kentät halutaan poistaa.
- Hae "Public domain" ja tutkaile esiintymiä
- Tools → Add/Delete Field

- Jos halutaan varmistaa, että fraasi löytyy tietystä osakentästä, niin Field Data kentään voidaan lisätä myös osakenttä (tässä '$c')
- Jos halutaan poistaa vain tietyllä kirjainkoolla olevat, niin ruksataan Match case (tässä 5404c "Public domain" rivit poistuvat, mutta ei esimerkiksi "PUBLIC DOMAIN")
Osakentän lisäys
Joskus kenttiä voi tutkailla sen mukaan, mitä niistä puuttuu. Lisätään 856$y PUUTTUU jos $y ei olemassa:
Tools → Edit Subfied Data
"Add subfield if not present" ruksattava, tai osakenttä lisätään myös sellaisiin 856 kenttiin, joissa on jo 856$yHaku: $yPUUTTUU ← 219 osumaa
Regexp haku: ^(=856 42.*)(\$yPUUTTUU)$ ← 19
Korvaus: $1Haku: $zKäytettävissä vapaakappalekirjastoissa$yPUUTTUU ← 192
Korvaus: $zKäytettävissä vapaakappalekirjastoissa=> loput 8 selvitettävä manuaalisesti
Osakentän poisto
- Tutkaillaan 856$q osakentän olemassaoloa ja sisältöä: regexp haku: ^=856.*\$q
- Poistetaan 856$q: Tools → Edit Subfield Data
Jos "Delete Subfield" ei ole ruksattuna, niin vain osakentän sisältö poistetaan, mutta itse osakenttä jää dataan
- Poistetaan 856$q: Tools → Edit Subfield Data
- Halutan poistaa 650-kentän $0-tuplaosakentät
- Tools → Edit Subfield Data


Jättää ensimmäisen osuman, poistaa sen jälkeiset mahdolliset tuplat
(Koska $0 kentät eivät aina ole tuplia, on parempi ajaa Almassa korjaa tupla tyyppinen ajo setille ennen eksportointia)
- Tools → Edit Subfield Data
Tuplarivien poisto
- Tools → Add/Delete Field
xxx = mikä tahansa kenttä, kaikki kentät
Excelin käyttö analysoinnin apuna: export TAB delimited records
785ind2=7 esiintymien tutkailu
785 ind2=7 - Yhdistynyt julkaisuun ... ja muodostanut julkaisun ... ← OLTAVA VÄHINTÄÄN KAKSI RIVIÄ!
Päävalikossa: Tools → Export... → Export Tab Delimited Records

"In field delimeter" → jos kenttä toistuu, niin erotettu @-merkillä (kannattaa tarkistaa etukäteen, ettei datassa ole @-merkkiä)
"Contextual delimeter" →
- 001 = MMS ID
- jos "Normalize fied data" ruksattuna, niin datasta poistetaan indikaattorit ja osakentät (ei haluta tässä tapauksessa)
Importoidaan äsken eksportoitu tiedosto Exceliin:
- aukaise tyhjä työkirja Excelissä
mene data-välilehdelle
klikkaa From Text/CSV (toinen kuvake ylhäällä vasemmalla)
Hae ja aukaise äsken eksportoitu tiedosto
Excel haluaa muuttaa MMS ID:t luvuksi, mutta tätä ei haluta:

Klikkaa oikealta alhaata
ja edelleen oikealta löyvää ruksia kohdasta Changed Type
Klikkaa keskivaihella ylhäällä
Ja klikkaa uudestaan (syistä, jotka vain Microsoft tietää) ruksia oikealta kohdasta Changed Type
Nyt MMS ID:n pitäisi näkyä oikein (MMS ID on muotoa 99 ... 4 viimeistä numeroa on tietokannan numero, tässä 5971. Jos viimeisnen numero 0, epäile että jotakin pielessä):

Klikkaa vielä vasemmalta ylhäältä
ja Excelin pitäisi avautua normaalisti.
785 kentän sisällön tutkiminen:
- Suodata 785 sarakkeessa tyhjät solut
- Poista rivit, joissa 785 on tyhjä
- Poista 785 filteröinti
- Järjestä 785 sarake A-Z...
- Poista ne rivit, joissa ind2 ei ole '7'
- Suodata ne rivit, jotka eivät sisällä @-merkkiä
11 riviä, jossa lehti on sulautunut johonkin toiseen lehteen muodostaakseen ... mitä? Tieto puuttuu → korjattava
(Excelistä voi ottaa MMS ID:t talteen ja tehdä korjaukset myöhemmin kannassa)

Tietueiden jakaminen kielen perusteella (041$a) omiin tiedostoihinsa
Tutkitaan ensin, mitä kieliä on käytetty
MarcEditorissa
- Etsi kaikki 041 kentät

- Kopioidaan tieto leikepöydälle, klikkaa

- Avaa Excel, liitä tiedot

- Emme tee mitään B-sarakkeen tiedoilla, joten sen voi tyhjentää
- Klikkaa sarake A aktiiviseksi
- Data-välilehti, Text-to-Colums
- Delimited-radiopainike ja Next
- Valitse Delimiters: [X] Other: $ ja Next
- Valitse Column data format:
Text ja Finish- Huom. Alhaalla "Data preview" ikkunassa on useampia sarakkeita - klikkaa kutakin sarakeotsikkoa yksitellen ja valitse Column data format = "Text"
- Nyt B-sarakkeessa on ensimmäisestä 041$a löytyvät kielikoodit.
- Kopioi B-sarake uuteen työkirjaan
- jossa Data-välilehti
- klikkaa Remove duplicates
(sarakkeen oltava valittuna)
Jäljelle jää kielikoodilistaus:

'mul' kielikoodit kannattaa korjata kannassa ennen muuta käsittelyä. Tämän jälkeen tietueet voi eksportoida uudestaan Almasta käsittelyyn
Tietueiden jakaminen kielikoodin perusteella omiin tiedostoihinsa
Haetaan MarEditorissa kielikoodeittain esimerkiksi
- =041 0\$afin
- TAI regexp: ^=041 ..\$afin ← jos ollaan epävarmoja indikaattoreiden sisällöstä
- Find All Resuts ikkunassa klikataan
kunnes kaikki kielet on saatu tallennettua omiin tiedostoihinsa
Jako kannattaa tehdä vasta kun eri kielille yhteiset kohdat on saatu tarkistetta/korjattua
Mahdolliset kielikohtaiset muokkaukset
Kielikohtaissa korjauksissa käytetään jo edellä läpikäytyjä toiminnallisuuksia.
Kielikohtaisia fraaseja, katso https://wiki.helsinki.fi/x/lBGQGQ
Importointi Almaan
Muokatut tietueet importoidaan takaisin Almaan käyttämällä import-profiilia, jossa mätsäys tapahtuu MMS ID:n perusteella.
Jos mätsiä ei löydy (koska tietue on esimerkiksi poistettu Almasta), niin tietuetta ei kannata tuoda Almaan.
Importoinnin jälkeen kannattaa aina tarkistaa Report mahdollisten ongelmien selvittämiseksi.
Importtijonosta pääsee myös suoraan katsomaan importoituja tiedostoja, "Imported Records":

Tarvittaessa tästä tulosjoukosta voidaan myös tehdä setti.