7 Mukautuvat verkkopalvelut Verkkopalvelun mukauttamista voi tarkastella useasta eri näkökulmasta: Laiteriippumattomuus: mahdollisuus verkkopalvelun käyttämiseen työasemalla, kämmentietokoneella, matkapuhelimella, puhekäyttöliittymällä, digi-tv:llä tai ruudunlukijalla Saavutettavuus: laiteriippumattomuus, erityisryhmät, käyttötilanteet Kansainvälistäminen ja paikallistaminen: kielestä, kulttuurista ja maantieteellisestä sijainnista riippumattomat verkkopalvelut Personointi: verkkopalvelun (sisällön) mukauttaminen käyttäjän mieltymysten mukaiseksi Taustalla mukautuvan (adaptive) hypermedian ideat: Käyttäjästä luodaan malli (user model) Sovelluksesta ja sen sisällöstä luodaan malli Sovelluksesta käyttäjälle välitettävät näkymät mukautetaan käyttäjän ja sovelluksen mallin yhdistelmän, ns. overlay-mallin perusteella 7307010 Hypermedian ohjelmointi (kevät 2005) 83
Välineitä mukautuvan verkkopalvelun toteuttamiseen Semanttinen Web: Tietosisällön rakenteistaminen (XML) ja semanttinen kuvailu (RDF & OWL) Mahdollistaa tiedon järjestelmällisen/ohjelmallisen käsittelemisen Jakelukontekstin (tai palvelukontekstin, vrt. Saavutettavuus-opintojakso) (delivery context) kuvaileminen: Composite Capability/Preference Profiles (CC/PP) ja User Agent Profile (UAProf) Keino käyttäjämallin välittämiseen palvelulle Pohjana joustavalle julkaisemiselle Räätälöity tai joustava julkaiseminen: Semanttisen kuvauksen perusteella tietosisällöstä voidaan valita oikeat tietoalkiot, jotka esitetään julkaisukontekstille sopivassa muodossa Suljetun järjestelmän toteuttaminen onnistuu mainiosti esimerkiksi relaatiotietokannan, PHP-kielen ja HTTP-protokollan avulla 7307010 Hypermedian ohjelmointi (kevät 2005) 84
Mitä mukautetaan? Verkkopalvelua voidaan mukauttaa eri tavoilla (Lähde: Authoring Techniques for Device Independence, ks. http://www.w3.org/tr/di-atdi/): Tyyli (Style): Resurssin esitystavan muuttaminen ilman, että resurssi itsessään muuttuu. Tapahtuu käytännössä CSS-tyylien avulla Asettelu (Layout): Näkymän komponenttien sijoittelu ruudulle. Voidaan toteuttaa esimerkiksi sivupohjien avulla Sisältö (Content): Rakenteistetusta tietosisällöstä voidaan poimia osia käyttäjän mieltymysten tai laitteen ominaisuuksien perusteella Rakenne (Structure): Sovelluksen rakennetta voidaan mukauttaa joko näkymiä koostamalla (aggregation) tai jakamalla osiin (decomposition). Suunnitelmallisessa toiminnassa näkymiä yleensä koostetaan Navigaatio (Navigation): Navigaatiota voidaan mukauttaa sekä teknisestä että sisällöllisestä näkökulmasta Vuorovaikutus (Interaction): Mahdollisuudet syötteen tuottamiseen ja vuorovaikutteisten komponenttien valintaan vaihtelevat päätelaitteittain 7307010 Hypermedian ohjelmointi (kevät 2005) 85
Mukautuva hypermedia (Brusilovsky) Mukautuvan hypermedian keskeinen tutkija Peter Brusilovsky on määritellyt mukautuvan hypermedian seuraavasti (Methods and techniques of adaptive hypermedia, ks. http://www2.sis.pitt.edu/~peterb/papers/umuai96.pdf): Mukauttaminen perustuu käyttäjämalliin Sovelluksen esitystapa ja linkitys voidaan mukauttaa käyttäjämallin perusteella Käyttäjämalli: käyttäjän tietämys, osaaminen, tavoitteet, tausta, kokemukset ja mieltymykset Esitystapa: ulkoasu ja sisältö Linkitys: linkkien järjestäminen, piilottaminen, poistaminen, kommentointi (annotointi) ja tuottaminen, käyttäjän suora ohjaaminen, sisällysluettelon mukauttaminen Käyttäjämalliin voidaan lisätä vielä käyttäjän kielitaito, äidinkieli ja kansallisuus Brusilovskyn mukautuva hypermedia keskittyy suurelta osin sovelluksen navigaation muokkaamiseen. Kuitenkin myös sisällön mukauttamisessa on erilaisia mahdollisuuksia 7307010 Hypermedian ohjelmointi (kevät 2005) 86
Käyttäjän mallintaminen (Brusilovsky) Käyttäjän mallintaminen mukautuvassa hypermediasovellyksessa Brusilovskyn mukaan: Provides Application Data about user Collects Edits Provides Processes System Edits User Model Administrator User Processes Provides Adaptation effect Lähde: Brusilovsky, P. Methods and techniques of adaptive hypermedia 7307010 Hypermedian ohjelmointi (kevät 2005) 87
Esimerkki: amazon.com ja käyttäjän tiedot amazon.comia käytetään usein esimerkkinä mukautuvasta hypermediasovelluksesta. Tavoitteena on tässä tapauksessa kasvattaa myyntiä, mutta ideoita voi hyödyntää monella tavalla amazon.com kerää tietoja käyttäjästä siten, että käyttäjä määrittelee ja arvostelee oman virtuaalisen kirja- ja levyhyllynsä. Tämä on huomattavasti ilmaisuvoimaisempi vaihtoehto kuin jokaisen mielenkiinnon kohteen määritteleminen erikseen Assosiatiivisia linkkejä myytävien artikkeleiden välille muodostetaan useilla eri perusteilla: esittäjä, yhtyeen jäsen, muiden käyttäjien kirja- ja levylistat & ostopäätökset, kirjalliset arviot (~linkkien annotointi), suositukset,..., erikseen syötetyt metatiedot Keskeistä: Jukka, this is recommended for you. Why? Siis: palvelu järjestää ja tuottaa uusia linkkejä, hyvä. Tämän lisäksi käyttäjällä on mahdollisuus kysyä järjestelmältä perusteluja sille, miksi tämä ehdottaa jotakin tiettyä artikkelia. Käyttäjällä on myös mahdollisuus muokata järjestelmän tietoja, mikäli ne ovat hänestä vääriä ( Use to make recommendations ) tai hylätä järjestelmän ehdotuksen ( Not interested ) 7307010 Hypermedian ohjelmointi (kevät 2005) 88
Esimerkki: allmusic.com ja kuvailutiedot allmusic.com on musiikkia ja sen luokittelua ja kuvailua harrastavan henkilön aarreaitta Verkkopalvelun sisältönä on valtava määrä levyjä, joista on kerätty huima määrä kuvailutietoa Käyttäjillä on mahdollisuus syöttää kuvailutietoja, jotka tarkastetaan ennen julkaisemista palveluun Assosiatiiviset linkit: esittäjän jäsenet, vastaavanlaiset esittäjät, musiikilliset vaikuttajat ja vaikutteita ottaneet, kappaleiden tekijät, tyylilaji, tarkempi musiikillinen tyyli ja musiikilliset tunnelmat Palvelu ei varsinaisesti mukaudu käyttäjän mieltymyksiin. Kuvaileva tieto antaisi kuitenkin mahdollisuuden monipuolisten ominaisuuksien toteuttamiseen Erään mukautuvan hypermedian keskeisen sovellusalueen muodostavat ns. asiantuntijajärjestelmät, joihin on kerätty suuri määrä tietoa, jota sovelluksen käyttäjät voivat hyödyntää Musiikin harrastajan näkökulmasta tällainen järjestelmä voisi olla vaikkapa palvelu, jonka avulla voisi etsiä uusia yhtyeitä/levyjä kun nykyinen kokoelma tuntuu liian tutulta 7307010 Hypermedian ohjelmointi (kevät 2005) 89
Kansainvälistäminen ja paikallistaminen Sovelluksen mukauttamiseen käyttäjälle sopivaksi voidaan ottaa oppia myös kansainvälistämisestä (internationalization, i18n) ja paikallistamisesta (localization, l10n) Kansainvälistäminen: sovelluksen toteuttaminen siten, että siitä voidaan julkaista versiota kielen, maantieteellisen alueen tai kulttuurin perusteella mukautettuna. käytännössä: tekstien, värien, kuvien ja ikonien (sivupohja!) irrottaminen sovelluksesta kirjastoksi, jonka vaihtaminen onnistuu helposti myös päivämäärien, pituus- ja painomittojen ja valuuttojen esittämisessä on kieli- ja kulttuurikohtaisia eroja Paikallistaminen: i18n-mallin mukaan toteutetun sovelluksen mukauttaminen tietylle kielelle tai maantieteelliselle alueelle sopivaksi Verkkopalvelussa sovelluksen kansainvälinen jakelu on sisäänrakennettu ominaisuus. Webin käyttäjät eivät kuitenkaan juurikaan ole tottuneet mukautuviin palveluihin. Vai? 7307010 Hypermedian ohjelmointi (kevät 2005) 90
Jakelukontekstin ominaisuudet Jakelukontekstin tiedot voidaan selvittää eri tavoilla (vrt. käyttäjän mallintaminen): Kysytään käyttäjältä: Tiedot ovat varmasti oikein, mutta käyttäjä joutuu näkemään ylimääräistä vaivaa Selain välittää tiedot pyynnön yhteydessä esimerkiksi CC/PP- tai UAProfprotokollan avulla. Ongelmana on vielä tällä hetkellä se, että päätelaitteet eivät yleisesti tue julkaisukontekstin tietojen välittämistä Yksinkertainen keino on HTTP-pyynnön otsikkotietojen lukeminen ja analysoiminen HTTP-pyynnön tapauksessa ongelmana on se, että otsikoissa välitettävien tietojen esitysmuotoa tai arvoja ei ole standardoitu Eräs keino on tarjota käyttäjälle mahdollisuus määritellä erilaiset jakelukontekstit palvelulle: Nyt käyttämäni laite on kämmenlaite. Tiedot voidaan tallentaa esimerkiksi tietokantaan ja tunnistaa laite seuraavan kerran tietojen perusteella 7307010 Hypermedian ohjelmointi (kevät 2005) 91
Esimerkki: jakelukonteksti ja HTTP-pyynnön otsikot Selaimen A välittämät tiedot: HTTP_ACCEPT_LANGUAGE: HTTP_ACCEPT: */* HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320) Selaimen B välittämät tiedot: HTTP_ACCEPT_LANGUAGE: fi,en-us;q=0.7,en;q=0.3 HTTP_ACCEPT: text/xml,application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, image/png, */*;q=0.5 HTTP_USER_AGENT: Mozilla/5.0 (X11; U; Linux i686; en-us; rv:1.7.5) Gecko/20041107 Firefox/1.0 Selaimen C välittämät tiedot: HTTP_ACCEPT_LANGUAGE: en HTTP_ACCEPT: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 HTTP_USER_AGENT: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54 [en] Mitä tietojen perusteella voi päätellä? Voiko tietojen olemassaolosta tai esitysmuodosta tehdä oletuksia? 7307010 Hypermedian ohjelmointi (kevät 2005) 92
Esimerkki: jakelukonteksti ja UAProf (1/2) CC/PP-protokollaan perustuva UAProf määrittelee täsmällisen tavan jakelukontekstin kuvailemiseen. Esimerkki kannettavan tietokoneen tietojen esittämisestä UAProfmuotoisesta esitystavasta N3-muotoon sarjallistettuna: @prefix : <http://hmopetus.ee.tut.fi/device-profile#>. @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>. @prefix ccpp: <http://www.w3.org/2000/07/04-ccpp#>. @prefix uap: <http://www.wapforum.org/profiles/uaprof/ccppschema-20010330#>. :LapTop ccpp:component :Mozilla. :Mozilla a uap:browserua; uap:xhtmlversion "1.0"; uap:preferenceforframes "No"; uap:tablescapable "Yes". :LapTop ccpp:component :DefaultSW. :DefaultSW a uap:softwareplatform; uap:ccppaccept [a rdf:bag; rdf:_1 "text/png"; rdf:_2 "text/jpeg"]. :LapTop ccpp:component :DefaultHW. :DefaultHW a uap:hardwareplatform; uap:soundoutputcapable "Yes". UAProf-määritys käyttää tietojen esittämiseen Resource Description Framework (RDF) -kehystä, joka saattaa näyttää vaikeammalta kuin todellisuudessa onkaan 7307010 Hypermedian ohjelmointi (kevät 2005) 93
Esimerkki: jakelukonteksti ja UAProf (2/2) Jakelukontekstin kuvaus esitetään nyt N3-kieliopin mukaan sarjallistettuna RDFgraafina, joten käsittely onnistuu esimerkiksi RDF Query Language (RDQL) -kielellä: SELECT?browser,?xhtmlversion FROM <profile.n3> WHERE (?browser uap:xhtmlversion?xhtmlversion ) USING ccpp FOR <http://www.w3.org/2000/07/04-ccpp#> uap FOR <http://www.wapforum.org/profiles/uaprof/ccppschema-20010330#> Kysely etsii RDF-mallista uap:xhtmlversion-ominaisuuden arvon. Kuten ominaisuuden nimestä jo voi päätellä, arvo sisältää tiedon selaimen tukemasta XHTML-versiosta. Jena-komentorivisovellus tulostaa kyselyn lopputuloksen seuraavalla tavalla: browser xhtmlversion ================================================================= <http://hmopetus.ee.tut.fi/device-profile#mozilla> "1.0" RDQL-kielen opetteleminen ei ole SQL-osaajalle temppu eikä mikään. PHP-kielen PEAR-laajennuskirjasto tukee ainakin dokumentaation perusteella RDQL-kieltä, joten ei muuta kuin kokeilemaan! 7307010 Hypermedian ohjelmointi (kevät 2005) 94
Lopuksi Verkkopalvelun mukauttamiseen liittyvät asiat ovat erittäin mielenkiintoisia. Mukautuvan hypermedian taustalla olevat tekoälyn ideat eivät ainakaan vähennä mielenkiintoa Taustalla olevasta tekoälystä huolimatta mukautuvan hypermedian ideoiden hyödyntäminen on suoraviivaista verkkopalveluiden suunnittelussa ja toteutuksessa Semanttinen Web tarjoaa erittäin mielenkiintoisia mahdollisuuksia mukautuvan hypermedian ideoiden toteuttamiseen suuressa mittakaavassa. Semanttinen Web ei kuitenkaan ole ainakaan vielä vuonna 2005 valmis. Semanttisen Webin teknologiat ovat silti jo nyt sovellusten toteuttajien käytettävissä Mukautuvien verkkopalveluiden toteuttaminen onnistuu ideoiden ja toimintojen tasolla perinteisin tekniikoin, esimerkiksi PHP-kielen ja relaatiotietokannan avulla Viittaaminen tekoälyyn johtaa kuulijat usein harhaan; tekoälyssäkin on lopulta kysymys vain ja ainoastaan siitä, että tietokone toteuttaa rutiineja ihmisen puolesta. Ohjelmistot toki ovat huomattavasti keskimääräisiä sovelluksia monipuolisempia 7307010 Hypermedian ohjelmointi (kevät 2005) 95