XML, standardointi ja kehitys Ossi Nykänen Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto
Esitelmä Hyvin lyhyt versio: XML on W3C:n suosittama perhe tekstiformaatteja ja tietojenkäsittelyyn liittyviä teknologioita. XML:n suosion kulmakiviä ovat XML-merkkauksen yksinkertainen perusta, modulaarinen tekniikka ja suuri joukko välineitä ja sovelluksia. Pidempi versio, otsikoita: W3C ja universaalit standardit XML soveltajan silmin: ydin vs. sovellukset, esimerkki XML osana sovellusten suunnittelua XHTML ja SVG Laiteriippumattomuus ja profiilit Semanttinen Web XML-standardoinnin suuntaviivoja Esityksen tavoite: sijoittaa XML maailmankartalle 2
W3C ja Universaalit Standardit
World Wide Web Consortium (W3C) W3C kehittää yhteensopivia teknologioita (spesifikaatioita, ohjeita ja ohjelmistoja) ja siten ohjaa Webin kehittymistä täyteen mittaansa...asettamalla teknisiä suosituksia (esim. XML-perhe) 3 päätstoa, 14 aluetstoa, n. 400 jäsenorganisaatiota Jäseneksi? ks. http://www.w3c.tut.fi/joining.html 4
W3C:n (nykyiset) toimialueet ja aktiviteetit (Ks. http://www.w3.org/consortium/activities) 5
XML soveltajan silmin: XML-ydin vs. XML-sovellukset
Extensible Markup Language, lyhyt esittely XML on tarkoitettu rakenteisen tiedon esittämiseen <?xml version="1.0" encoding="iso-8859-1"?> <viesti luokka="ve">moi maailma <kirjoittaja>on</kirjoittaja> <!-- 10.2.2004 ON --> </viesti> Perusideoita yhteisesti sovittu (!), tarkka tapa esittää tietoa yksinkertainen ja helposti käsiteltävä kielioppi neutraali sovellusten suhteen, laajennettavissa tekniikka kohdallaan: Unicode, nimiavaruudet, rajapinnat,... paljon tukevia teknologioita ja työkaluja, kasvava yhteisö Historiaa...1986 SGML, 1994 W3C 1996... 1998... 2000... 2004 XML 1.0 (Third Edition) 4.2.2004 XML 1.1 (läh. korjauksia Unicoden suhteen) Peruskäsitteitä: dokumentti, elementti, sanasto looginen rakenne fyysinen rakenne 7
XML ja isot ideat XML metakielenä ja arkkitehtuurina XML yhteisöllisenä sopimuksena XHTML SVG... XML tekstiformaattina map/>dc:author</head><body><foo:title>tuote</foo:title><!--nop --><g>ite DOM Query... SOAP RDF... XML tietorakenteen std-rajapintana XML kommunikoinnin välineenä 8
XML:n rooli sovelluksissa XML:m hyödyntämisen peruskaava perustuu pinomaisten teknisten standardien toistuvaan hyödyntämiseen sovelluksissa "Lassen leipomon kotisivut" "Sähköinen kauppapaikka" XHTML XML 1.0 / 1.1 SVG RDF... "yleiskäyttöisiä XML-määrityksiä" XML NS XML Schema "tukevia teknisiä määrityksiä" 9
Esimerkki: Lassen leipomo (1/4) Yksinkertainen kotisivu demonstroi useita XML:n perusideoita... 10
Esimerkki: Lassen leipomo (2/4) XML 1.0 määrää tekstitiedon koodauksen ja merkkauksen kieliopin puitteet: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE xx PUBLIC XXXX" "xxxx"> <t1 xml:lang="xxx" t2="xxx"> <t3> <t4>xxx</t4> </t3> <!--... --> </t1> 11
Esimerkki: Lassen leipomo (3/4) Valittu sovellus (tässä XHTML 1.0 Strict) määrää mitä tietoja dokumenttiin kirjataan (sanasto ja sen kielioppi) <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fi" lang="fi"> <head> <title>lassen leipomo</title> </head> <body> <h1>lassen leipomo</h1> <p>tervetuloa Lassen leipomon verkkopalveluun! Tutustu <a href="tarjous-04.html">edullisiin tarjouksiimme</a>. <img src="cook.png" alt="lassen kuva"/> </p> <!--... --> </body> </html> 12
Esimerkki: Lassen leipomo (4/4) Tämä ei yksin vielä riitä sovelluksen toteuttamiseen! Tarvitaan (esim.) XHTML:ää ymmärtäviä ohjelmia (selaimet ja palvelimet) kuvaformaatteja (PNG, SVG,...) tyylikieli dokumentin ulkoasun määrittämiseen (esim. CSS, XSL) lomakkeita (XHTML Forms, XForms) palvelun kuvailu esim. hakuja varten (Semantic Web: RDF) Sähköistä kauppapaikkaa varten tarvitaan myös toteutus käyttöliittymän taakse... lisää XML-formaatteja (esim. tuotetiedot, laskut,...) keskeisten tietojen suojaaminen (XMLsig, XMLencrypt) yhteyksiä tuotantojärjestelmiin (Web Services: SOAP, WSDL) vaihtoehtoinen käyttöliittymä erilaisia päätelaitteita käyttäville asiakkaille (CC/PP, XSLT, vielä lisää XML-formaatteja, esim. XHTML Basic, SVG Tiny jne.),... 13
XML:n keskeinen rooli (Web-)teknologioissa XML XML ~ 14
XML osana sovellusten suunnittelua
"XML ~ tietokannan yleistys" Perusidea: XML on osa kokonaisuutta tieto jäsennetään "dokumenteiksi" (looginen mallinnus) mallinnuksen reunaehtoja ja riippuvuuksia ovat saatavilla olevat XML-teknologiat ja välineet (esim. SVG-kuvan piirtävä ohjelmakomponentti, nimiavaruudet Web-arkkitehtuurin osana) sovelluksessa hyväksyttävien dokumenttien rakenne kuvataan tarkasti (tyyppi/skeemamäärittely/...) tietoa käsitellään vakiotyökalujen avulla (XML-editorit, selaimet, muunnostyökalut jne.) myös ohjelmointi onnistuu tavallisten sovelluskehittimien avulla (SAX, DOM yms. -rajapinnat) Kärjistäen: "XML on tekstiformaatti, jonka ympärille on rakennettu kokonainen perhe teknologioita" tekniset vakioratkaisut (vrt. suunnittelumallit) yhteinen kieli suunnittelijoille ja kumuloituva osaaminen 16
Suunnitteluesimerkki: monikanavajulkaiseminen Sovellus #1 DocBook... XML 1.0 SVG PNG... XSL/FO PDF käsikirjoitus XSLT XHTML Sovellus #2 CSS Mediaobjektit XLink XSLT XHTML CSS Sovellus #3 17
Tietorakenteen esittäminen vs. mallintaminen XHTMLdokumentti SOAPviesti prosessi A XML prosessi B 1) viestinnässä käytetty tekstiformaatti XML DTD XML Schema prosessin taustalla vaikuttava tieto/oliorakenne RDF/OWLmääritys 2) viestiliikenteestä sopimisessa ja mallinnuksessa käytetty tekstiformaatti 18
Esimerkkejä XML:n std-sovelluksista: XHTML ja SVG
Extensible Hypertext Markup Language, XHTML Verkkosivujen kuvailukieli HTML on kulkenut pitkän tien Nykyinen HTML-kieli, XHTML on kuvaileva, XML-perustainen merkkauskieli modulaarinen ja laajennettavissa...joka liimakielen tavoin yhdistelee eri teknologioita tyylit tapahtumankäsittelijät ja skriptit upotetut objektit (sovelmat, plugin-toteutukset,...) lomakkeet Sovelluksia verkkosivut, (verkkopalvelujen) käyttöliittymät, dokumentaatio,... 20
Keskeiset XHTML-spesifikaatiot XHTML 1.0 HTML-sanasto (esim. body, h1, title, a, b, object, map) kolme tyyppimäärittelyä (Strict, Transitional, Frameset) Modularization of XHTML laajahkon XHTML 1.0-sanaston pilkkominen osiin moduulit (Core [Structure, Text, Hypertext, List], Applet, Text Extensions [...],...) XHTML 1.1 - Module-Based XHTML XHTML 1.0 Strict moduulijaon mukaisesti esitettynä teknisiä eroja: lang->xml:lang, name->id, ruby XHTML Basic "pienin yhteinen XHTML-ydin" soveltuu esim. pienlaitteiden ja digitv:n tarpeisiin 21
Esimerkki moduulijaosta, XHTML Basic Tärkeitä huomioita: - ei formatoivaa merkkausta (ei esim. b-elementtiä) - ei skriptejä tms. - ks. ns. host-kielen piirteet 22
Scalable Vector Graphics, SVG SVG tarjoaa XML-perustaisen kuvailukielen vektorigraafisten objektien esittämiseen Teknisesti täysin analoginen XHTML-kielen kanssa kuvaileva, XML-perustainen merkkauskieli modulaarinen laajennettavissa...joka liimakielen tavoin yhdistelee eri teknologioita (tyylit!), jne. Perusominaisuuksia vektorikuvat, teksti, bittikarttakuvat elementtien ryhmittely, animaatiot kuvamanipulaation välineet (gradients, patterns, masks, filters,...) Sovelluksia kuvitus, kaaviot ja kartat, käyttöliittymät,... 23
Esimerkki <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/graphics/svg/1.1/dtd/svg11.dtd"> <svg width="12cm" height="4cm" viewbox="0 0 1200 400" xmlns="http://www.w3.org/2000/svg" version="1.1"> <ellipse cx="600" cy="200" rx="550" ry="175" fill="yellow" stroke="blue" stroke-width="20"/> <rect x="1" y="1" width="1198" height="398" fill="none" stroke="blue" stroke-width="2" /> <polygon fill="red" stroke="blue" stroke-width="10" points="350,75 379,161 469,161 397,215 423,301 350,250 277,301 303,215 231,161 321,161" /> <polygon fill="lime" stroke="blue" stroke-width="10" points="850,75 958,137.5 958,262.5 850,325 742,262.6 742,137.5" /> <text x="470" y="240" font-size="70">tekstiä</text> </svg> 24
Keskeiset SVG-spesifikaatiot Scalable Vector Graphics (SVG) 1.0 vektorikielen määrittely yhdessä osassa Scalable Vector Graphics (SVG) 1.1 SVG:n modularisointi Mobile SVG Profiles: SVG Tiny and SVG Basic pikkuruinen Tiny, esim. matkapuhelimet SVG Basic, esim. PDA-laitteet Kuvalähde. Herman, W3C, http://www.w3.org/consortium/offices/presentations/svg/shorttutorial 25
Esimerkki moduulijaosta, pikkuruinen SVG Tiny Tärkeitä huomioita: - ei skriptejä tms. - ei kuvamanipulaatiota (esim. gradientti, filtteri) - linkit mukana 26
Laiteriippumattomuus ja profiilit
XML Ja laiteriippumattomuus XML itsessään on lähtökohtaisesti laiteriippumatonta sovellusriippumattomuus: XML processor vs. XML application Rakenteisen dokumentaation + ohj.suunnittelun ideat: kuvaileva merkkaus (vs. formatointi) toiminnallinen määrittely (vs. ohjelmointi) laiteriippumattomuus (vs. kiinteä alusta/käyttöliittymäratkaisu) olio näkymä kontrolleri 28
Laiteriippumattomuus sovelluksissa Tiedon kolmijako: sisältö: XML-formaatit (esim. XHTML) esitystapa: tyylit (käsikirjoitus, XLink, XEvents,..., + CSS, XSL) vuorovaikutus: "toiminnallisuus" (Voice, XForms, EMMA,...) Laiteriippumattomuus on yhteydessä profilointiin eri laitteet eivät tietenkään ole identtisiä joten kyse on "keskeisen toiminnallisuuden" toteutumisesta eri laiteympäristöissä Mitä "keskeinen toiminnallisuus" sitten on? riippuu sovelluksesta (vrt. lomake, opaste, päättelytehtävä,...) Motivaationa tyypillisesti sovellusintegraation, monikanavajulkaisemisen ja taloudellisen ylläpidon tavoitteet 29
XML ja profilointi Teknistä XML-ydintä ei profiloida (yhteensopivuus!) kielioppi, merkkikoodaus, nimiavaruudet XML-tekstiformaatteihin sisältyvä profilointi/modularisointi XHTML, SVG, CSS 3, SMIL 2.0, OWL,... Laitteiden ominaisuuksien ja käyttäjien preferenssien profilointi CC/PP (Composite Capabilities/Preference Profiles), P3P (Platform for Privacy Preferences) & WAI-sensitive user agent accessibility & conformance profiles Profiloinnin perustana on tyypillisesti "luokkahierarkia" SVG 1.1 Basic Tiny OWL Full DL Lite... sovellusten yhdenmukaisuus, monikanavaisuus, oppimisen helppous 30
Semanttinen Web
Semanttinen Web Idea: verkko välittää, ihmiskäyttäjä TAI kone tulkitsee agentit Kuvalähde. Koivunen & Miller, W3C, http://www.w3.org/2001/12/semweb-fin/w3csw 32
SW:n rakenne ja perusidea Semanttisen Webin perusidea on yksinkertainen kuka tahansa voi sanoa mitä tahansa mistä tahansa perusteet yksinkertaisia, haasteet syntyvät sovellusten suunnittelusta ja esim. metatietosanastojen valinnasta Web Ontology Language, OWL Resource Description Framework, RDF XML URI SW on olennaisesti sopimus "metatietojen" ja niiden käyttöä ohjaavien skeemojen ja ontologioiden kirjoitustavasta SW esittää MITEN sanotaan, mutta EI MITÄ sanotaan (ts. lisäksi tarvitaan sanastojen standardointityötä eri sovellusten tarpeisiin) 33
Esimerkki: RDF ja tiedon mallinnus Mallinnus = objektien identifiointia ja näiden piirteiden koodausta yhteisesti sovitulla kieliopilla ja käsitteillä Aiottu tulkinta: ammatti Suomen presidentti Mallinnus (koodaus): jobs:affiliation http://persons.fi/presidents/2000 Suomen presidentti Asia tietokoneen silmin : Klik. liittyy jotenkin jobs-sanaston tulkintaan. Klik. (#(uri), #(jobs:affiliation), 011100...100101 ) ÄLY syntyy merkitysten verkosta 34
Esimerkki: Koneellisesti luettavaa tietoa http://www.w3c.tut.fi http://www.w3c.tut.fi/staff/ossi nimi: Ossi Nykänen sähköposti: ossi@w3.org kirjoittaja: viimeksi päivitetty: 2003-12-15 luokitus: standardointi otsikko: uutisia, joulukuu uutisotsikko1: uutisotsikko2:... uutisotsikko3:...... otsikko: XForms 1.2 Mobile teksti: W3C julkaisi uuden version... Lisäksi: - mitä sanoja käytetään (std-predikaateista sopiminen) - miten sanoja käytetään (skeemat) - "mitä sanat tarkoittavat tietyissä sovelluksissa" (ontologiat) 35
Esimerkki: Semantic Web Services Kuvalähde. Booth et al, W3C, http://www.w3.org/tr/ws-arch/ 36
Keskeistä on tiedon yhdistäminen Hyödyntäminen: metatietoihin perustuvat haut (tai pelkän metatiedon hakeminen) tiedon yhdistäminen (standardipohja!) tiedon koostaminen, päättely, yms. tiedon julkaisija eri lähteiden valinta tiedon tulkitsija Kuvalähde. Berners-Lee, W3C, http://www.w3.org/2003/talks/0922-rsoc-tbl/overview.html 37
Huom. Attribuuttipohjainen metatieto vs. ontologiat Semanttisen Web sisältää kahdentyyppistä (meta)tietoa: yksilöitä luonnehtivia lausumia ("Ossi on mies.") terminologisia lausumia ("mies on ihmisten aliluokka") Suurin osa käytännön sovelluksissa hyödyllisestä (meta)tiedosta on "attribuuttipohjaista" joukko yksilöitä luonnehtivia lausumia ("Ossin sähköpostiosoite on ossi@w3.org. Ossi on mies.")...sekä kuvaus siitä, miten predikaatteja saa käyttää lausumissa (sähköpostiosoite, mies, RDF-skeemana) "Ontologiaperustainen" metatieto yleistää edellistä: mukaan kuvaus eri käsitteiden monimutkaisemmasta riippuvuuksista ja suhteista ("vanhempi" on luokka joka saadaan yhdistämällä luokat isä, äiti ja ottovanhempi, vain mies voi olla isä, ihmisellä on vain yksi biologinen äiti, jne.) Vaikutukset: suunnittelu, formaalin päättelyn rikkaus ( ) 38
XML vs. RDF?
XML vs. RDF = tietorakenne vs. tieto kirjoittamista ohjaava dokumentin tyyppimäärittely mallinnusta ohjaava skeema ja ontologia <html> <head> <body>... persons:ossi movies:cast-away hobbies:favourite-movie map/>dc:author</head><body><foo:title>tuote</foo:title><!--nop --><g>ite sarjallistus (kirjoittaminen XML-dokumenttina tiedostoon tms.) 40
Lopuksi: tiekartta, XML-kehitys, yms.
XML-teknologian maailmanviiva Laajassa mittakaavassa XML on osa rakenteisen tietojenkäsittelyn kehitystä Structured documents Document-based Data Choreography??? Text Formats Binary Formats Mixing Applications Services Data-oriented Processes the Web is born "the Semantic Web is born" Sovellusprofiilit, sisällön määrä, rakeisuus ja sovellusten monimuotoisuus, standardien tarve, semanttisen kuvailun tarve 42
Uusia ja tulevia(?) suosituksia Uusia suosituksia RDF+OWL XML 1.1, XML NS 1.1 DOM 3 validation CC/PP XForms 1.0 XML Events Soap 1.2 XPointer SVG 1.1... Suositusehdotuksia VoiceXML 2.0 Speech Recognition Grammar 1.0 Alustavia suositusehdotuksia XForms 1.0 Basic Profile XPath CSS3: TV 1.0, Color, Ruby, Text, Mobile 1.0, Media Queries, Selectors XInclude 1.0 XML Fragment Interchange XHTML-Print Speech Synth. Markup Muuta mielenkiintoista WSDL 1.2, XQuery 1.0, XKMS,... Lisää, ks. http://www.w3.org/tr/ 43
Poimintoja XML-kehityksen uusista trendeistä Web Services ydin: SOAP & WSDL Binary XML Kyselykielet XML Query RDF Query ("RDF access") Semantic Web standardipohja valmis; best practices tulossa Modularisointi ylipäänsä mobiili Web yms. Standardoinnin uusia kohteita Semantic Web Services, Printing, InkML, Timed Text yms. kenties myös: digital rights management, usability 44
Mihin XML on menossa? (Kolme esimerkkiä) Tekstiformaatit (esim. grafiikka, websivut) 1)... Web / XML... 2)...... 3) (Loogiseen) malliin/viestinkäsittelyyn perustuvat sovellukset Kanaviin/putkiin perustuvat sovellukset (esim. julkaisutoiminta) Semantic Web Web Services? 45
Lopuksi
Yhteenveto XML tarjoaa yksinkertaisen ja vankan teknisen perustan universaaliin tiedonvälitykseen ja -käsittelyyn XML:n voima piilee XML-perheen, tukevien teknologioiden ja työkalujen rikkaudessa Hyöty XML:stä sovelluksissa perustuu XML:n tarjoamiin standardiratkaisuihin sekä kykyyn integroida tietoa ja eri sovelluksia Semanttinen Web on merkittävä Web-teknologian kehitysaskel, jonka myötä tiedonvälitys voi tarkoittaa myös tietämyksenvälitystä 47
Kiitos! Jäikö joku W3C-asia mietityttämään? Allekirjoittaneen tavoittaa helposti: http://www.w3c.tut.fi Ossi@w3.org The bane of my existence is doing things that I know the computer could do for me." -- Dan Connolly, The XML Revolution 48
Liite: lisätietoja ja osoitteita eteenpäin W3C http://www.w3.org/ (kotisivu) http://www.w3c.tut.fi/ (W3C Suomen toimiston kotisivu) W3C-aktiviteetit http://www.w3.org/xml (XML) http://www.w3.org/2001/sw (Semanttinen Web) http://www.w3.org/consortium/activities (yleiskuva) W3C:n suositukset ja raportit sekä teknistä tietoa http://www.w3c.org/tr/ (specs) http://www.w3.org/qa/thematrix (spec-tietoa jäsennettynä) http://www.w3c.tut.fi/report-archive.html (yleisesityksiä suomeksi) Jäseneksi! http://www.w3.org/consortium/prospectus http://www.w3c.tut.fi/joining.html 49
Liite: Mallinnuksen välineet, XML DTD, dokumentin tyyppimäärittely SGML:stä tuttu (narratiivisten) dokumenttityyppien kuvailukieli esim. <!ELEMENT head (title,meta+,script?)> XML-skeemat kompleksiset rakenteet, säännönmukaiset lausekkeet datassa tietokannoista tutut std-tietotyypit (integer, boolean,...) nimiavaruudet, XML-kielioppi Tyypillisiä suunnitteluratkaisuja (esimerkki) liimakieli jossa objekteja (XHTML + SVG) kirjekuori jonka sisällä sovelluksen dataa (SOAP + lasku) universaaleja elementtejä/attribuutteja eri käyttötarkoituksiin (XLink, Ruby) kehys metatietosanastojen käyttämiseen (RDF+DC) 50
Liite: XML sovellusten sisällä vai niiden välissä? XML? XML? prosessi "Tyypillisiä syitä": käyttöön saadaan kolmannen osapuolen komponentteja halutaan yhtenäinen rajapinta erityyppiseen tietoon (+arkkitehtuurinen perusta laajennettavuudelle yms.) XML "se yleisin tapaus" prosessi prosessi XML "Tyypillisiä syitä": halutaan standardoida rajapinnat ja tietoliikenne järkevästi...tietorakenne & Unicode...käyttöön allekirjoitukset yms. lisäominaisuudet useiden prosessien kytkeminen loogisiksi kokonaisuuksiksi... 51
Liite: RDF-lausuminen rakenne teknisesti Resource Description Framework (RDF): Abstrakti malli ja diagrammikieli (perustuu resurssien URI-nimiin) RDF on sopimus "mallinnus- ja kirjoitustavasta", metatiedot kirjoitetaan esim. XML-tiedostoiksi (RDF/XML) Esimerkki RDF-graafista: Kuvalähde. Manola et al. W3C, http://www.w3.org/tr/rdf-primer/ 52
Liite: mikä on metatietoa? Metatieto on tietoa jota ei löydy tai jota ei voida helposti poimia itse resursseista tms. (myös kone voi tuottaa!) Metatieto ja tieto -erottelua ei ole pakko lainkaan tehdä dokumenttien tyyppitiedot tekstiformaatti ja ko. formaatin kontrolloitu sanasto lisätty, kuvaileva (meta)tieto metatiedon käyttöä ohjaava skeema (tms.) sovellusalueen ontologia tyyppi käsikirjoitus Mediaobjektit Huom: (meta)tietoa(kaan) ei aina ole tarkoituksenmukaista ylläpitää siinä formaatissa jossa sitä julkaistaan viimeksi muokattu: 2003-11-26 Se päivämäärä jolloin tietosisältö viimeksi muuttui, tyyppi: xsd:date paperikoneen käyttöohjeen tuotantoprosessi 53
Liite: Web-arkkitehtuurista ja URI-nimistä Webin yleisarkkitehtuuri Kuvalähde (URI, Resource, Representation). Ian Jacobs et al., W3C, http://www.w3.org/tr/2003/wd-webarch-20031209/ 54