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:
- SGML sallii samannimisten tietoelementtien m��rittelyn eri kohtiin
dokumenttia.
- SGML:ss� voidaan elementtej� rajattomasti
upottaa toisiinsa (mit� mahdollisuutta TUHTI-m��rittelyss�
my�s on k�ytetty), TRIPiss� t�m� ei ole mahdollista.
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.
- Tutkimussopimuksen tiedot sis�ltl�v��
TUHTIn tutksop-elementin m��rittely� vastaa TRIPiss� kahdesta
kent�st� muodostettu taulukko, johon kuuluvat kent�t
ja TSOS johon kirjataan kaikki osapuolet,
ja TSKO (sopimuskoodi).
osapuolet erotetaan toisistaan puolipisteell�.
osapuoli;...;osapuoli.
<!ELEMENT tutksop - o (osapuoli*, sopkoodi?)>
<!ELEMENT (osapuoli, sopkoodi)
- o (#PCDATA)>
- Suomen- ja englanninkieliset avain- ja asiasanat
on jaettu siten, ett� suomenkieliset avain- ja asiasanat ovat
TRIP-toteutuksessa AS-kent�ss�.
Asiasanat merkit��n edelt�v�ll� asteriskilla: *asiasana.
Englanninkieliset avain- ja asiasanat ovat omassa KW-kent�ss��n,
merkint�ratkaisu on kuten suomenkielistenkin sanojen kohdalla.
<!ELEMENT avainsan - o (av | as)+>
<!ELEMENT keywords - o (kw | sp)+>
<!ELEMENT av, as, kw, sp)
- o (#PCDATA)>
- Kaikki p�iv�m��r�tiedot joudutaan k��nt�m��n, koska
TRIP haluaa ne j�rjestyksess� vuosi-kuukausi-p�iv�, ja
TUHTI:ssa ne on m��ritelty toisin p�in.
- Rahoitus on TRIP-tietokannassa m��ritelty
alitietueeksi.
TRIP mahdollistaa kussakin tietokantam��ritelyss� yhden alitietueen.
Alitietueen paikka TRIPin TFORM-sy�tt�muodoossa on tietueen
lopussa, joten muunnoksessa SGML-dokumentista TFORM-muotoon se
on siirrett�v� sinne omalla ohjelmallaan.
<!ELEMENT rahoitus - o (rahkausi)+>
<!ELEMENT rahkausi - o (kausi?, menot?, henktkk, rahkerto?)>
<!ELEMENT kausi - o (vuosi | (alkupvm, loppupvm))>
<!ELEMENT menot - o (omat?,vieraat?)>
<!ELEMENT omat - o (perus?, erityis?)>
<!ELEMENT vieraat - o (antaja, maara, yksikko)+>
<!ELEMENT (antaja, perus, erityis, henktkk, vuosi, maara, yksikko)
- o (#PCDATA)>
<!ELEMENT rahkerto - o (#PCDATA) +(pvm | summa | org)>
<!ELEMENT summa - - (#PCDATA) -(pvm | summa | org)>
<!ELEMENT org - o (orgnimi, postios?, sijainti?,
puh?, fax?, email?, muuta?)>
- SGML-elementin tutkijat alielementti tyojakso
on ongelmallinen.
Se sis�lt�� nelj� per�kk�ist� alielementti�, joista kolme
on vapaaehtoisia.
N�ist� loppupvm voidaan p��tell� sill� perusteella
ett� se on ainoa numeerinen tieto t�ss� joukossa.
Muiden erottamiseen tarvitaan ennaltam��r�ttyj�
esitysmuotoja tiedolle.
Olen konversioita tehdess�ni olettanut, ett� kansallisuustieto
esitet��n jonkin standardin mukaisena maakoodina, jolloin se koostuu
kahdesta tai kolmesta isosta kirjaimesta.
<!ELEMENT tutkijat - o (tutkija)+>
<!ELEMENT tutkija o o (hlo, oppiarvo?, vuosi?,
sukup?, kansal?, tyojakso+)>
<!ELEMENT tyojakso - o (alkupvm, loppupvm?, asema?, maa?)>
- Julkaisujen k�sittelyss� on omat ongelmansa. Julkaisut on
TRIP-tietokannassa m��ritelty taulukoksi, johon kuuluvien kenttien
tulkinta riippuu julkaisutyypist�.
- Julkaisun tyyppitieto on TRIPiss� yksi kentt�, JUKP, joka vastaa
yht� viidest� TUHTI:n vaihtoehtoisesta julkaisuelementist�.
- Kentt� JUTE k��nnet��n joko kirjoittajiksi tai toimittajiksi
(kirjassa), tekij�iksi (ATK-tallenteessa), tai keksij�iksi (patentissa).
Kaikissa muissa julkaisutyypeiss� se sis�lt�� kirjoittajien nimitiedot.
Jos kent�ss� on toimittajien tiedot, se alkaa merkkijonolla toim:
- Patentin tiedot on asetettu TRIPin kenttiin , JUTE (keksij�t),
JUOT (patentin nimi), JUTO (patentin haltijat),
JUKP (julkaisijamaa), JUKV (my�nt�misvuosi) ja
JUKP Sis�ll�n kuvaus ja huomautukset.
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.