11. JohdantoOsa-kokonaisuussuhde (part-of-, part-whole-, whole-part -relationship) on tärkeäkäsitteellinen mallintamisrakenne tietokantojen yhteydessä. Sitä käytetäänrakenteellisen informaation, kuten esimerkiksi rakenteellisesti monimutkaistenolioiden mallintamiseen. Tällaisen mallintamisen avulla voidaan kuvata monenlaisiaabstrakte<strong>ja</strong> tai konkreettisia asioita. Osa-kokonaisuussuhteen mallintamista<strong>ja</strong> käytetään monilla sovellusalueilla, maantieteellisissä informaatiosysteemeissä(GIS) [Price et al., 2000], dokumenttien hallinnassa [Lambrix, 2000],lääketieteellisissä sovelluksissa [Hanh et al., 1999] <strong>ja</strong> tekoälyn sovelluksissa[Lambrix, 2000]. Kokonaisuuksia voidaan käyttää myös tietokannoissa lukituksen,tiedonvarastoinnin, tietokantahaun <strong>ja</strong> versioinnin yksikkönä. [Kim et al.,1987a; Kim et al., 1987b].Osa-kokonaisuussuhteet perustuvat kahteen keskeiseen käsitteeseen, komposiittiin<strong>ja</strong> komponenttiin. Komposiitti tarkoittaa kokonaisuutta, joka muodostuukomponenteista. Komponentti on puolestaan osa jotain komposiittia.[Wand et al., 1999] Komponentti <strong>ja</strong> komposiitti ovat keskinäisessä vuorovaikutuksessamonella tavalla. Komposiitilla on usein ominaisuuksia, jotka perustuvatsen osien ominaisuuksiin tai esimerkiksi sen kaikkien osien yhteisvaikutukseen.Lisäksi komponentilla saattaa olla ominaisuuksia, jotka riippuvat senkomposiitin ominaisuuksista. Komposiitin <strong>ja</strong> komponentin olemassaolo voimyös riippua toistensa olemassaolosta.Osa-kokonaisuussuhde ei välttämättä rajoitu pelkästään välittömiin komponentteihintai komposiitteihin. Rakenteellisesti monimutkaisilla objekteillasaattaa olla myös välillisiä komponentte<strong>ja</strong>. Välillistä komponenttia voidaan havainnollistaaseuraavalla esimerkillä. Oletetaan, että kompositiolla A on komponenttinaB. B:llä on edelleen komponenttina C <strong>ja</strong> C:llä komponenttina D. TällöinA:n välitön komponentti on B <strong>ja</strong> sen välillisiä komponentte<strong>ja</strong> ovat C <strong>ja</strong> D.Sekä välittömät, että välilliset komponentit tulkitaan usein kokonaisuudenkomponenteiksi. Myös välilliset komposiitit tulkitaan samalla tavalla, muttakäänteisesti. Tällaisia välillisiä suhteita sanotaan myös transitiivisiksi suhteiksi.Reittiä komposiitista komponenttiin tai päinvastoin kutsutaan poluksi.Tietokannoista tieto<strong>ja</strong> haetaan kyselykielten avulla. Monesti olemassaolevillakyselykielillä osa-kokonaisuussuhteen käsittelyn ilmaiseminen on vaikeaaloppukäyttäjälle. Käsittely saattaa edellyttää rekursiivisen <strong>ja</strong> iteratiivisen a<strong>ja</strong>ttelutavansisäistämistä. Usein edellytetään myös tietoa esitystavan yksityiskohdista.Lisäksi on yleistä, että transitiivisia suhteita sisältävissä rakenteissa täytyyetsiä haluttu komponentti rakenteesta navigoimalla polkuesitystavalla. Toi-
2nen tapa poistaa kompleksisuutta on purkaa komponenttien välillä vallitsevahierarkia. Kummassakin tapauksessa osa-kokonaisuusrakenne täytyy entuudestaantuttu, jotta käsittely onnistuu.Osa-kokonaisuussuhteessa tieto esitetään <strong>ja</strong> käsitellään sekä intensionaalisellaettä ekstensionaalisella tasolla. Intensionaalinen taso tarkoittaa kaaviotasoa, jossamääritellään eksplisiittisesti komponentti- <strong>ja</strong> komposiittityypit, tyyppien ominaisuudetsekä niiden keskinäiset suhteet. Ekstensionaalisella tasolla on intensionaalisellatasolla määriteltyjen käsitteiden ilmentymät. Jos jostakin intensionaalisellatasolla määritellystä käsitteestä muodostetaan ilmentymä, sen ominaisuudet,eli attribuutit arvottuvat.Pääosin useimmat kyselykielet on tarkoitettu ekstensionaalisten tietojenhakuun esittämällä intensionaalisia kriteereitä. Intensionaalisen tason monipuolistatarkastelua ei kuitenkaan usein tueta. Intensionaalisten asioiden tarkastelulisää kuitenkin ilmaisuvoimaa etenkin osa-kokonaisuussuhteita käsittelevillekyselykielille. Tässä tutkielmassa kehitetyssä kielessä molempien tasojenmonipuolinen tarkastelu on mahdollista.Tutkielmassa tarkastelen osa-kokonaisuussuhteen mallintamisratkaisua <strong>ja</strong>kehitän siihen perustuvaa kyselykieltä. Mallintamisratkaisun <strong>ja</strong> siihen perustuvaky<strong>selykielen</strong> toteutan logiikkaohjelmointi- <strong>ja</strong> olioparadigman yhdistävällä,Prolog++ -hybridikielellä. Mallintamisratkaisun periaate perustuu Timo Niemen[1983] arvo-orientoituneeseen esitystapaan, jota Niemi, Kalervo Järvelin <strong>ja</strong>Marko Junkkari ovat myöhemmin kehitelleet. Erityisen suurta huomiota kiinnitänky<strong>selykielen</strong> korkeaan deklaratiivisuuden asteeseen käyttäjäystävällisyydentakaamiseksi. Tutkielmani päätarkoituksena on kehittää kyselykieli, jokaottaa huomioon osa-kokonaisuussuhteen luonteen vaatimukset <strong>ja</strong> erityispiirteet.
- Page 1 and 2: Osa-kokonaisuussuhteen käsittelyyn
- Page 3 and 4: ii1. Johdanto .....................
- Page 5: ivTermitC++ Proseduraalinen ohjelmo
- Page 9 and 10: 4abc d e f ghiKuva 1. Esimerkki osa
- Page 11 and 12: 6ovat osa autoa ja fonologia on osa
- Page 13 and 14: 8liittyy usein poissulkeutuvuusomin
- Page 15 and 16: 10voidaan jakaa kahteen periytymise
- Page 17 and 18: 12kahierarkian luokkiin. Oliolla on
- Page 19 and 20: 14nimistä. Lisäksi rakenteeseen e
- Page 21 and 22: 16(oid1, ).”Helkama”, ohjaus: o
- Page 23 and 24: 18class departmenttype [dept_name:s
- Page 25 and 26: 20kossa oleva joukko sisältää yh
- Page 27 and 28: 22kaksisuuntaisesti. Seuraavaksi ta
- Page 29: 24poa ja etenkin päivitykset ovat
- Page 32 and 33: 27minen tapahtuu intensionaalisella
- Page 34 and 35: 29siten, että eri hyttityypit on j
- Page 36 and 37: 314.7. Muita kielen vaatimuksia osa
- Page 38 and 39: 33Osa-kokonaisuussuhteita sisältä
- Page 40 and 41: 35oliotyyppejä on mahdollista esit
- Page 42 and 43: 37Yllä oleva ekstensionaalinen tas
- Page 44 and 45: 39Toteutuskielen tulee täyttää k
- Page 46 and 47: 41Sääntö tulkitaan luonnollisen
- Page 48 and 49: 43Luokan määrittäminen aloitetaa
- Page 50 and 51: 45pse([map(tricycle,t(1)),map(price
- Page 52 and 53: 47ta tiettyä arvoa tai oliota vast
- Page 54 and 55: 49FRAMESADDLETRICYCLESTEERINGKun si
- Page 56 and 57:
516. Kielen primitiivit ja esimerkk
- Page 58 and 59:
53X = steering, X = tricycle, X = d
- Page 60 and 61:
551. arg1 is_instance_of arg22. arg
- Page 62 and 63:
57gointitiedotilmaistaan aggregoint
- Page 64 and 65:
59täsmälleen samat rivit poisteta
- Page 66 and 67:
61res(X) where diam is_property_of
- Page 68 and 69:
636.3.2. Ekstensionaaliset kyselytE
- Page 70 and 71:
65res(aluminium).Jos käyttäjä ei
- Page 72 and 73:
67res(C,Material,sum(Comp:weigth))
- Page 74 and 75:
697. YhteenvetoTutkielmassa tarkast
- Page 76 and 77:
718. Lähdeluettelo[Agrawal, 1987]
- Page 78 and 79:
73[Moss, 1994] Chris Moss, Prolog++