61res(X) where diam is_property_of Y,X is_path_to Y.Kyselyssä määritellään ensin, että muuttu<strong>ja</strong>n Y tulee olla oliotyyppi, jolla onominaisuus diam. Tämän jälkeen ilmaistaan, että X on Y:hyn johtava polku. Vastauksenasaadaan siis tuple-muotoiset polkuesitykset poluista, jotka johtavatoliotyyppeihini rear_axle, chainring, pedals <strong>ja</strong> wheel. Jos tietyllä tyypillä on useampipolkuvaihtoehto, kaikki vaihtoehdot saadaan vastaukseksi. Ylläolevaankyselyyn tuotetaan seuraava vastaus esimerkkitietokannan yhteydessä.res(t(tricycle,rear,rear_axle))res(t(bicycle,drivegear,chainring))res(t(tricycle,steering,pedals))res(t(bicycle,drivegear,pedals))res(t(tricycle,steering,wheel))res(t(tricycle,rear,wheel))res(t(bicycle,wheel))res(t(bicycle,steering,wheel))Tricycle:n oh<strong>ja</strong>uksen komponenttien nimet <strong>ja</strong> niiden ominaisuuksien nimet saadaanselville seuraavalla kyselyllä:res(X,Y) where apply_to [tricycle],X is_component_type_of steering, Yis_property_of X.Ensin ilmaistaan, että tarkastelu rajoitetaan vain tricycle:n osakokonaisuussuhteeseen.Tämän jälkeen ilmaistaan, että X-muuttu<strong>ja</strong> alustetaanoh<strong>ja</strong>uksen komponentilla <strong>ja</strong> että Y-muuttu<strong>ja</strong> on X-muuttu<strong>ja</strong>n sisältämän komponentinominaisuus. Tulosrelaatio koostuu X- <strong>ja</strong> Y-muuttujien seuraavista arvoista.res(front_axle,l)res(front_axle,weigth)res(handlebar,b)res(handlebar,weigth)res(pedals,diam)res(pedals,weigth)res(wheel,diam)res(wheel,r_type)
62res(wheel,weigth)Seuraavaksi esitän yhdistetyn kyselyn, jossa intensionaalisen vastauksen antavankyselyn sisällä ilmaistaan ekstensionaalinen alikysely. Kyselyssä halutaansaada vastaukseksi intensionaalista tietoa käyttämällä ekstensionaalista kriteeriä.Kyselyssä etsitään kaikki ne tricycle:n <strong>ja</strong> bicycle:n yhteiset komponenttityypit,joiden ekstensionaaliselta tasolta löytyy ainakin yksi olio, jonka materialattribuutinarvo on steel.res(X) where common_component X, Y is_instance_of X, Y:material(steel).Kyselyssä siis ilmaistaan, että X on yhteinen komponentti kaikille tietokannassaoleville osa-kokonaisuussuhteille. Esimerkkitietokannassa ei ole muita osakokonaisuussuhteitakuin tricycle <strong>ja</strong> bicycle. Tämän takia apply_to –primitiivinkäyttö ei ole välttämätöntä, koska oletuksena kyselyyn otetaan kaikki osakokonaisuussuhteet.Muuttu<strong>ja</strong> Y ilmaisee kyselyssä yhteisen komponentin mitätahansa ilmentymää. Lopuksi kyselyssä rajoitetaan Y –muuttu<strong>ja</strong>n sisältämiäolioita siten, että olion material-attribuutin arvona täytyy olla steel. Kyselyn tulokseenhalutaan saada vain X-muuttu<strong>ja</strong>n arvot. Tuloksia saadaan esimerkkitietokannanyhteydessä vain yksi:res(frame)Seuraava intensionaalinen kysely on myös yhdistetty kysely. Siinä etsitäänkaikki ne tricycle:n komponenttityypit, joilla on ainakin yksi ilmentymä, jonkadiam-attribuutin arvona on joko 4 tai 5.res(Y) where X is_component_object_of tricycle, (X:diam(4);X:diam(5)), Xis_instance_of Y.Kyselyssä ilmaistaan, että X-muuttu<strong>ja</strong>n tulee olla kolmipyörätyypin komponenttiolio,jonka diam-attribuutin arvon täytyy olla joko 4 tai 5. Lisäksi ilmaistaan,että muuttu<strong>ja</strong> Y on X-komponenttia vastaava oliotyyppi. Vastaukseenpoimitaan ainoastaan Y-muuttu<strong>ja</strong>n arvotuksia. Vastaukseksi esimerkkitietokannassasaadaan kaksi oliotyyppiä:res(pedals)res(wheel)
- Page 1 and 2:
Osa-kokonaisuussuhteen käsittelyyn
- Page 3 and 4:
ii1. Johdanto .....................
- Page 5 and 6:
ivTermitC++ Proseduraalinen ohjelmo
- Page 7 and 8:
2nen tapa poistaa kompleksisuutta o
- 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 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++