TUHTI-m��rittelyn mukainen mallitietokanta

Opetusministeri�n muistiossa numero 5/1994 Suositukset tutkimustietokantojen tietosis�ll�ksi ja perustamiseksi on esitetty TUHTI-mallitietosis�lt� korkeakoulujen tutkimustietokannoille. Mallisis�lt� on esitetty SGML-m��rittelyn�. T�t� kirjoittaessa ei kuitenkaan markkinoilla ole SGML-tietokantaohjelmia.

Olen rakentanut TUHTI-tietosis�ll�n mukaisen kokeilutietokannan TRIP-tekstitietokantaohjelmistoon. SGML ja TRIP eiv�t ole rakenteellisten mahdollisuuksiensa puolesta t�ysin yhteensopivat. TRIP-tietokanta sis�lt�� l�hes kaikki ne tietoelementit, jotka esiintyv�t TUHTI-m��rittelyss�. T�m� teksti k�sittelee TUHTI-m��rittelyn mukaisen SGML-dokumentin ja TUHTI-m��rittely� mukailevan TRIP-tietokannan v�listen konversioiden ongelmia, ja niiden perusratkaisuja. Ratkaisujen tarkempi tekninen selostus on kirjattu l�hdekooditiedostoihin kommentteina. T�m�n tekstin tarkoituksena on valottaa muunnoksen yleisi� periaatteita.

Tiedosto triptuhti.def on TUHTIn mukainen TRIP-tietokantam��rittely. Se sis�lt�� l�hes kaikki TUHTI:n tietoelementit tavalla tai toisella sis�lt�v�n TRIP-tietokatam��rittelyn, tietojen sy�tt�lomakkeiden m��rittelyn ja SGML- ja HTML -tulostusformaattien m��rittelyt. Tiedoston voi TRIPin IMPORT-komennolla
IMPORT base=tuhti.* file=triptuhti.def
ladata TRIPiin, jolloin k�yt�ss� ja muunneltavissa on valmis pohja tutkimustietokannalle. Tietokannasta on my�s kommentoitu kentt�listaus, joka selvitt�� hiukan SGML-dokumentin ja TRIP-tietokannan v�lisi� suhteita.

Muunnoksen perusongelmat

Konversiossa perustavalta tietosis�ll�lt��n yhtenevien tietokantojen v�lill� perusmekanismi on ilmeinen - muunnetaan l�ht�tietokannan tietoelementtien tai -kenttien nimet tulostietokannan mukaisiksi. TUHTI-m��rittelyn mukaisen SGML-dokumentin (tiedoston) ja TRIP-tiedoston v�lisess� muunnoksessa t�m� ratkaisu kuitenkin j�tt�� ongelmia.

Ongelmien syit� on pohjimmaltaan kaksi:

Lis�ksi muista syist� voidaan konversioiden aikana joutua j�rjestelem��n tietoja uudelleen.

Ensimm�iseen ongelmaan ei ole yleisp�tev�� ratkaisua, tarvittaessa on konversion kuluessa jouduttu kontekstista p��ttelem��n, mik� samannimisist� TUHTI-elementeist� vastaa mit�kin TRIP-tietokannan kentt��.

Toinen ongelma on yleisesti ratkaistu mahduttamalla samaan TRIP-kentt��n useita TUHTI-elementtej�, joiden �itielementti� kentt� sitten vastaa.

S��nt�n� on erottaa tiedot TRIP-tietokannan kent�ss� pilkulla silloin, kun TUHTI-dokumentissa vastaavassa kohdassa alkaa uusi tietoelementti, ja puolipisteell� silloin, kun sama tietoelementti tai elementtiryhm� toistuu. Ongelmia t�ss� ratkaisussa tuottavat vapaaehtoiset tietoelementit. Miss� TUHTI-m��rittelyss� on useita vapaaehtoisia elementti� per�kk�in, ei voida tiet�� mink� alkumerkki� TRIPin kent�ss� oleva pilkku edustaa.

TRIP-tietokannan tietosis�lt� verrattuna TUHTI-m��ritelm��n

Koska suurin osa TRIP-tietokannan kentist� vastaa suoraan TUHTI.dtd:n tutkimus-elementin attribuutteja tai toisen tason elementtej�, en k�y kohta kohdalta l�pi eroja m��rittelyiden v�lill�. K�yn l�pi ne rakenteelliset erot, joiden johdosta TRIP-tiedoston ja TUHTI:n mukaisen SGML-dokumentin konversio ei ole ongelmaton.

Konversioiden perusmekanismit

Olen rakentanut konversio-ohjelmistot TRIP-tietokannan ja TUHTI-m��rittelyn mukaisen SGML-dokumentin v�lill�. Molemmissa koversioissa perusty� voidaan hoitaa tarkoitukseen nimenomaisesti suunnitelluilla v�lineill�. Muunnosten viimeistelyyn olen k�ytt�nyt flex-ohjelmaa, joka annetun m��rittelyn perusteella tuottaa leksikaalisen analysaattorin C-koodin. Viimeistely on yleisesti ollut tietoelementtien keskin�isen j�rjestyksen muuttamista (esimerkiksi p�iv�m��r�t tulostetaan TRIPiss muodossa vuosi-kuukausi-p�iv�, kun TUHTI:ssa ne on m��ritelty toisin p�in), tai sellaisia kohtia, joissa SGML-tietoelementti on p��telt�v� TRIP-kent�n sis�ll�st� tai yhteydest�.

Muunnos TRIP-tietokannasta SGML-dokumentiksi

TRIP antaa tietokannan suunnittelijalle mahdollisuuden m��ritell� tulostusformaatteja. Tulostusformaatissa voidaan m��r�t� tulostettavien tietojen j�rjestys, kullekin kent�lle otsikko, ja toistettaville kentille v�liotsikot.

M��rittelin TRIP-tietokannalle SGML-tulostusformaatin, jossa tietojen j�rjestys on p��osin sama kuin TUHTI-m��rittelyss�. T�m�n tulostuksen korjailuun rakensin ohjelmiston, joka muuntaa sen TUHTI-dtd:n mukaiseksi SGML-dokumentiksi.

Muunnos SGML-dokumentista TRIP-tietokantaan

Muunnokseen SGML-muotoisesta dokumentista TFORM-tiedostoksi k�ytet��n sgmls- ja instant -ohjelmia, joka m��ritellyn muunnoss��nn�st�n peruteella muuntaa SGML-elementtien alku- ja loppumerkit muiksi merkkijonoiksi, t�ss� tapauksessa TRIPin TFORM-sy�tt�muodon mukaisiksi kentt�m��rittelyiksi. Muunnosohjelmistoon kuuluu edell� mainittu konversio ja flex-ohjelmia sen lopputuloksen korjailuun.