Ohjelmallinen sisällönhallinta, kevät 2017

Luentoviikko 4.3. Koostepalvelut

Jukka Huhtamäki

Luentoviikko 4.3. Koostepalvelut

Olisi hienoa, jos mahdollisimman moni keväällä 2017 tehdyistä Ohjelmallisen sisällönhallinnan harjoitustöistä olisi nimenomaan koostepalvelu.

Alkuvaiheessa ohjelmalliseen sisällönhallintaan liittyvä tekeminen painottuu yksittäisten järjestelmien arkkitehtuurin ja vuorovaikutuksen toteuttamiseen.

Kuitenkin vieläkin mielenkiintoisempaa on tarkastelun yleistäminen järjestelmien väliseen toiminnallisuuteen. Ajatus hypermediasta sovelluksen tilan koneena (hypermedia as the engine of application state (Fielding, 2000)) liittyy vahvasti tähän.

Koostepalvelut esittelevät tavan luoda uusia palveluja olemassa olevia tietosisältöjä ja komponentteja yhdistelemällä.

Huomaathan, että luentomateriaali on nyt osin lähdemateriaalin varassa. Varmista, että osaat tarvittaessa kuvata avoimen yhdistetyn datan ja REST-mallin perusajatuksen sekä antaa periaatteellisen kuvauksen REST-mallin mukaisesti toimivasta järjestelmästä.

Yhdistetty data

LinkedData is to spreadsheets and databases what the Web of hypertext documents is to word processor files. (esw.w3.org/LinkedData)

  1. Use URIs as names for things
  2. Use HTTP URIs so that people can look up those names.
  3. When someone looks up a URI, provide useful information.
  4. Include links to other URIs. so that they can discover more things.

Yhdistetty julkinen data Suomessa

Yhdistetty julkinen data on hyvin ajankohtainen asia myös Suomessa:

Avoin data: resursseja ja lisätietoa

Koostepalvelut

Koostepalvelut esittelevät tavan luoda uusia toiminnallisuuksia olemassa olevista resursseista koostamalla

Koostepalvelut

Koostepalvelut (mash-up) muodostavat olennaisen osan nykyaikaista Web-palvelutarjontaa:

Koostepalvelujen taustalla lymyävät informaation visualisoinnin perusajatukset. Resursseja voidaan koostaa esimerkiksi RESTful-periaatteen mukaisesti toimivista palveluista.

Kielenkäytöstä

Myös koostepalvelujen tapauksessa kielenkäyttö on usein värikästä. Mash-up -sanalle on esitetty useita käännöksiä:

Käännös survos kuvaisi hyvin koostepalvelun perimmäistä luonnetta:

Käsitteen jalkauttaminen on kuitenkin haastavaa eikä sen tulkinta ole välttämättä ilmeinen kaikille.

Koostamisen tasot

Koostepalvelut viittaavat tapaan toteuttaa verkkopalvelujen toiminnallisuuksia olemassa olevia resursseja koostamalla.

Yleistymässä olevan näkemyksen mukaan koostamista tapahtuu kolmella tasolla (vrt. Yu, Benatallah, Casati ja Daniel, 2008):

Ensimmäiset koostepalvelut poimivat joukon dataa palvelusta X ja latoivat tiedot näkyviin erityisesti kartalle. Suomalainen Hälytykset kartalla oli eräs kotimaisista edelläkävijoistä.

Esimerkkejä kehitysympäristöistä

Koostepalveluiden kehitystyön löytyy tukku kilpailevia kehitysympäristöjä:

Lähestymistavat poikkeavat rajusti eri vaihtoehtojen välillä. Erityisesti Intel Mash Makerin esittelemä toimintatapa tiedon suodattamiseen ja yhdistelemiseen on perehtymisen arvoinen, kuten myös putkilinjojen perusidea.

Taannoisessa MADS-seminaarissa järjestelmien keskeiseksi haasteeksi todettiin niiden keskeneräisyys ja joustamattomuus: triviaalit asiat onnistuvat, mutta aidot haasteet muodostuvat ylivoimaisiksi ja luovuus on rajattua.

Esimerkkisovellus: MyTube

Käydään seuraavaksi läpi erään koostepalvelun toteutuksen ydinkohtia

Esimerkki: Henkilökohtainen YouTube-soitin

Sujuvoitetaan YouTube-videoiden hakemista yksinkertaisella koostepalvelulla:

Poimintoja toteutuksesta:

iTunes ja soittolistojen vienti

iTunes tukee soittolistojen vientiä XML-muodossa:

<key>Tracks</key>
<dict>
<key>6384</key>
<dict>
<key>Track ID</key><integer>6384</integer>
<key>Name</key><string>Ore D'Amore</string>
<key>Artist</key><string>Mondo Cane</string>
<key>Album Artist</key><string>Mondo Cane</string>
<key>Album</key><string>Mondo Cane @ Salsomaggiore, 2007/05/26</string>
<key>Genre</key><string>Italian 60's</string>
<key>Kind</key><string>MPEG audio file</string>
<key>Size</key><integer>4169280</integer>
<key>Total Time</key><integer>162429</integer>
<key>Track Number</key><integer>3</integer>
<key>Year</key><integer>2007</integer>
<key>Date Modified</key><date>2008-07-21T12:01:01Z</date>
<key>Date Added</key><date>2008-07-21T11:36:00Z</date>
<key>Bit Rate</key><integer>192</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Play Count</key><integer>8</integer>
<key>Play Date</key><integer>3308737172</integer>
<key>Play Date UTC</key><date>2008-11-05T11:39:32Z</date>
<key>Album Rating</key><integer>100</integer>
<key>Album Rating Computed</key><true/>
<key>Artwork Count</key><integer>2</integer>
<key>Persistent ID</key><string>4676EDED9FE35AD5</string>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file://localhost/Users/username/Music/iTunes/iTunes%20Music/Mondo%20Cane/Mondo%20Cane%20@%20Salsomaggiore,%202007_05_26/03%20Ore%20D'Amore.mp3</string>
<key>File Folder Count</key><integer>4</integer>
<key>Library Folder Count</key><integer>1</integer>
</dict>   

Soittolistan sisältö XML-muodossa

iTunes-soittolistasta voidaan tuottaa yleinen esitys soittolistan sisällöstä.

<?xml version="1.0" encoding="utf-8"?>
<tracklist>
<track id="4676EDED9FE35AD5">
<name>Ore D'Amore</name>
<album>
<name>Mondo Cane @ Salsomaggiore, 2007/05/26</name>
</album>
<artist>
<name>Mondo Cane</name>
</artist>
</track>
<!-- Muut kappaleet -->  
</tracklist>    

Kappaleista on nyt kerätty minimitiedot: alkuperäisessä datassa olisi enemmänkin hyödynnettävää.

Last.fm: Yhtyeen tiedot

<?xml version="1.0" encoding="utf-8"?>
<lfm status="ok">
<artist>
<name>Mondo Cane</name>
<mbid>8a5f6d61-0dfe-48e8-9cd6-ba0eaf9cfe67</mbid>
<url>http://www.last.fm/music/Mondo+Cane</url>
<image size="small">http://userserve-ak.last.fm/serve/34/2167334.jpg</image>
<image size="medium">http://userserve-ak.last.fm/serve/64/2167334.jpg</image>
<image size="large">http://userserve-ak.last.fm/serve/126/2167334.jpg</image>
<streamable>1</streamable>
<stats>
<listeners>2413</listeners>
<playcount>34382</playcount>
</stats>
<similar>
<artist>
<name>Mike Patton</name>
<url>http://www.last.fm/music/Mike+Patton</url>
<image size="small">http://userserve-ak.last.fm/serve/34/232922.jpg</image>
<image size="medium">http://userserve-ak.last.fm/serve/64/232922.jpg></image>
<image size="large">http://userserve-ak.last.fm/serve/126/232922.jpg</image>
</artist>
<!-- Loput vastaavat esittäjät -->
</similar>
<bio>
<published>Sat, 28 Mar 2009 08:22:40 +0000</published>
<summary><![CDATA[Mondo Cane is an upcoming album by Mike Patton. ...
<!-- Lisää elämänkerrallisia tietoja -->
</bio>
</artist></lfm>

Soittolista XML-muodossa

Soittolistan tiedot ovat nyt kasassa ja esitettävissä XML-muodossa:

          
<?xml version="1.0" ?>
<playlist>
<title>Mondo Cane :: Mondo Cane @ Salsomaggiore, 2007/05/26</title>
<description>From last.fm: Mondo Cane is an upcoming album by Mike Patton. 
It will be cover versions of 1950s and 1960s Italian pop music, performed by 
Mike Patton with an orchestra of about 65 people. The album was originally 
planned for release in summer 2008, but was first pushed back to 
&quot;early '09&quot; and then to November 2009.
</description>
<image href="http://userserve-ak.last.fm/serve/126/2167334.jpg"/>
<itemlist>
<item id="4676EDED9FE35AD5">
<searchterm>Ore D'Amore</searchterm>
</item>
<!-- Loput soittolistan alkiot -->
</itemlist>    
</playlist>    

YouTube-videokooste

Koostetaan lopuksi videokoosteen toteuttava HTML/Javascript/Ajax-survos (parempi vaihtoehto: yleiskäyttöinen koostesoitin ja JSON-muotoiset videolistat):

<script type="text/javascript">
function LoadVideoBar() {
var videoBar;

var options = {
largeResultSet : !true,
horizontal : true,
autoExecuteList : {
cycleTime : GSvideoBar.CYCLE_TIME_MEDIUM,
cycleMode : GSvideoBar.CYCLE_MODE_LINEAR,
executeList : [" Mondo Cane :: Mondo Cane @ Salsomaggiore, 2007/05/26", ]
}
}
videoBar = new GSvideoBar( document.getElementById("videoBar-default"),
                       document.getElementById( "player"), 
                       options);

options = {
largeResultSet : !true,
horizontal : true,
master : videoBar,
autoExecuteList : {
cycleTime : GSvideoBar.CYCLE_TIME_MEDIUM,
cycleMode : GSvideoBar.CYCLE_MODE_LINEAR,
executeList : ["Ore D'Amore", ]
}
}
new GSvideoBar( document.getElementById("videoBar-4676EDED9FE35AD5"),
            document.getElementById( "player"), 
            options);
// Loput videot
</script>

Koostepalvelut ja informaation visualisointi

Koostepalvelut esittelevät nykyaikaisen tavan toteuttaa informaation visualisointia

Informaation visuaalisointi: periaatteet

Koostepalveluiden kehittämistä voidaan lähestyä informaation visualisoinnin periaattein:

Esimerkkejä informaation visualisoinnista esittelevät visual complexity, d3.js, Sigma.js ja Lissu Liikenteenseuranta.

Informaation visualisointi: prosessi

Periaatekuva informaation visualisointiprosessista

Kuvalähde: (Card ja muut, 1999; Miksch, 2005)

Lopuksi

On yhteenvedon aika

Lopuksi

Ajatuksia koostepalveluista:

Arkirealismia: suuri osa (valtaosa?) Web-sisältöjen jakelijoista ei halua tukea palvelunsa sisällön helppoa uudelleenkäyttöä. Pelkona on, että palvelun käyttäjät menevät sisältöjen mukana ja vievät mainostulot mennessään.

=> Oma Data (vrt. Antti Poikolan vierailuluento).