selykielen suunnittelu ja toteutus Samu Viita
selykielen suunnittelu ja toteutus Samu Viita
selykielen suunnittelu ja toteutus Samu Viita
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
67res(C,Material,sum(Comp:weigth)) where apply_to [bicycle], materialis_property_of C, Comp is_instance_of C,Comp is_component_object_of bicycle,Comp:material(Material).Kyselyssä where-primitiivin oikealla puolella ilmaistaan, että kyselyä sovelletaanainoastaan bicycle:n osa-kokonaisuussuhteille apply_to-primitiivin avulla.C-muuttu<strong>ja</strong>lla tarkoitetaan komponenttityyppiä, jolla on attribuutti nimeltäänmaterial. Lisäksi ilmaistaan, että Comp-muuttu<strong>ja</strong> tarkoittaa C-muuttu<strong>ja</strong>n mukaistailmentymää <strong>ja</strong> että ilmentymän tulee olla bicycle:n alikomponenttioliona. LopuksiComp-muuttu<strong>ja</strong>n arvona olevan olion material-attribuutin arvoon viitataanMaterial-muuttu<strong>ja</strong>lla. Vastausrelaatioon halutaan mukaan komponenttityyppi,tyyppiä vastaava materiaali <strong>ja</strong> komponentti-materiaali -paria vastaavienkomponenttien yhteenlaskettu paino. Komponenttityypin tieto löytyy siis C-muuttu<strong>ja</strong>sta <strong>ja</strong> tyyppiin liittyvä materiaali Material-muuttu<strong>ja</strong>sta. Soveltamallasum –aggregointifunktiota, yksittäisen komponenttiolion painoon, saadaankaikkien ehdot täyttävien komponenttien painojen summa selville.Kyselyn vastauksena saadaan relaatiores(frame,steel,10.2)res(saddle,leather,1.1)res(saddle,plastic,2.2).Analyyttistä voimaa sisältyy myös kyselyyn, jossa saadaan vastaukseksi polkupyöräntietyn osan kaikki komponentit, niiden ominaisuudet <strong>ja</strong> ominaisuuksienarvot. Tällöin saadaan kerralla kattava näkemys tietyn komponentin intensionaalisesta<strong>ja</strong> ekstensionaalisesta tasosta. Seuraavassa esimerkkikyselyssä halutaansaada selville tricycle:n steering:in kaikki alikomponentit <strong>ja</strong> niitä vastaavatominaisuudet. Lisäksi jokaisen ominaisuuden kohdalla halutaan vielä ominaisuudenarvo. Kyselyres(T,P,Z) where apply_to [tricycle], X is_component_object_of steering,Xis_instance_of T,P is_property_of T,X:P(Z).tuottaa laa<strong>ja</strong>n relaation, jonka tupleista esittelen vain muutaman:result(front_axle,l,4)result(front_axle,weigth,14)result(handlebars,weigth,1.1)