W3C, XML ja sovellukset 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: World Wide Web Consortium XML osana Web-teknologioita XML ja ideat, ytimen kehitys XHTML, SVG ja muut XML-tekstiformaatit XLink XQuery Semanttinen Web Esityksen tavoite: kiertoajelu 2
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 3
W3C:n (nykyiset) toimialueet ja aktiviteetit (Ks. http://www.w3.org/consortium/activities) 4
W3C:n (nykyiset) aktiviteetit ja työryhmät 5
XML osana Web-teknologioita XML XML ~ 6
XML ja "pienet ideat" (~tekstiformaatti ja metakieli) <?xml version="1.0" encoding="iso-8859-1" standalone="no"?> <!DOCTYPE kirja SYSTEM "mybook.dtd"> <?xml-stylesheet type="text/css" href="esim.css"?> <kirja aihe="fantasia" julkaisuvuosi="1955" xml:lang="fi"> <nimi>taru Sormusten Herrasta</nimi> <kirjoittaja>j.r.r. Tolkien</kirjoittaja> <kuvaus>fantasiasotaa Keskimaassa.</kuvaus> <taustoja> Kirjan keskeisiä henkilöitä ovat Frodo Reppuli & Gandalf. Muita ovat esim. <!-- Seuraava merkkidatalohko ei sisällä merkkausta --> <![CDATA[ edesmennyt Sauron & Saruman, ja Sormuksen Ritareista erityisesti Frodoa tavalla tai toisella seuraava nelikkö Sam & Merry & Pippin & Klonkku sekä <<perinteisempi>> sankarityyppi; Aragorn eli Konkari. ]]> </taustoja> <kuvia> <kuva url="taistelu.jpg" kuvaus="synkkää taistelua <elokuvaversio>"/> <kuva url="maisema.jpg" kuvaus="keskimaan vuoristomaisemaa < elokuvaversio>"/> </kuvia> </kirja> Esittelyosa: tyyppitieto Esiintymäosa: dokumentin sisältö (juurielementti) Muista: 1. looginen vs. fyysinen rakenne 2. sanaston rooli 3. XML-perhe & välineet 7 reunaehtona
XML ja "isot ideat" (~teknologia) 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-ytimen kehitys pre-xml..., GML (1970-luku), SGML (ISO-STD 1986) Extensible Markup Language (XML) 1.0 (Third Edition) 1998-02-10, 2000-10-06, 2004-02-04 Namespaces in XML 1999-01-14 Extensible Markup Language (XML) 1.1 2004-02-04 Unicode-täsmennykset, IBM-rivinvaihtomerkki Namespaces in XML 1.1 2004-02-04 errata, IRI-nimet, xmlns:foo="" 9
XML-tekstiformaatteja...eli mitä yhteistä on verkkosivulla, metrokartalla ja puhedialogilla?
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 Tämä on XML-formaattien modularisoinnin konsepti!! 11
Esimerkki moduulijaosta, XHTML Basic Suppein XHTML-kieli - ei formatoivaa merkkausta (ei esim. b-elementtiä) - ei skriptejä tms. - ns. host-kielen piirteet 12
SVG Skaalautuva vektorigrafiikka <?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> 13
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 14
Muita standardeja XML-tekstiformaatteja W3C Synchronized Multimedia Integration Language (SMIL 2.0) Specification (1998, 2001) Mathematical Markup Language (MathML) Version 2.0 (Second Edition) (2001, 2003) Extensible Stylesheet Language (XSL) Version 1.0 (2001) SOAP Version 1.2 (2003) XForms 1.0 (2003) Composite Capability/Preference Profiles (CC/PP): Structure and Vocabularies 1.0 (2004) RDF/XML Syntax Specification (Revised) (2004) OWL Web Ontology Language Guide (2004) Voice Extensible Markup Language (VoiceXML) Version 2.0 (2004) Speech Recognition Grammar Specification Version 1.0 (2004) Muut LIIKAA LUETELTAVAKSI TÄSSÄ, ks. esim. http://xml.coverpages.org/xml.html#applications 15
XLink...eli tarvitseeko jokaisen sovelluksen pitäisi keksiä pyörä (hyperlinkkien semantiikka) uudelleen?
XML Linking Language, XLink (2001) XLink määrittelee universaalin sanaston XHTML:ää rikkaampien hyperlinkkien määrittelyyn monensuuntaiset linkit linkkikannat Ts. Xlinkkiä ei ole pakko kovakoodata ankkurit sisältäviin tiedostoihin! XLink määrittelee vain joukon globaaleja attribuutteja sovellusten käyttöön (Web-selaimet eivät juuri tue) mikä tahansa elementti voi toimia linkkinä XLinkkejä hyödyntävät esim. SVG ja SMIL suuri osa tuotantokäytön XLink-sovelluksia perustuu erillisten XLink-prosessorien käyttöön (esim. julkaisutoiminta) Kuvalähde. DeRose et al. W3C, http://www.w3.org/tr/xlink/ 17
XLink, yksinkertainen linkki Yksinkertainen linkki (type="simple") <my:crossreference xmlns:my="http://example.com/" my:lastedited="2000-06-10" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="students.xml"> Current List of Students </my:crossreference> Vrt. XHTML-linkki:... <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">... <p>... <a href="students.xml">current List of Students </a>...</p> </html> 18
XLink, yleinen (extended) linkki, esimerkki (1/3) Tarkastellaan esimerkkinä neljänsuuntaista linkkiä: kaaren suuntaava kulkusääntö (traversal rule) prof7 viittaus ulkoiseen dokumenttiin (locator) linkin (yhden) pään esittävä kaari (arc) student62 courseload PatJonesGPA CS-101 linkkidokumenttiin kirjattu elementti (resource) 19
XLink, yleinen (extended) linkki, esimerkki (2/3) <!ELEMENT courseload ((tooltip person course gpa go)*)> <!ATTLIST courseload xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink" xlink:type (extended) #FIXED "extended" xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED> <!ELEMENT tooltip ANY> <!ATTLIST tooltip xlink:type (title) #FIXED "title" xml:lang CDATA #IMPLIED> <!ELEMENT person EMPTY> <!ATTLIST person xlink:type (locator) #FIXED "locator" xlink:href CDATA #REQUIRED xlink:role CDATA #IMPLIED xlink:title CDATA #IMPLIED xlink:label NMTOKEN #IMPLIED> <!ELEMENT course EMPTY> <!ATTLIST course xlink:type (locator) #FIXED "locator" xlink:href CDATA #REQUIRED xlink:role CDATA #FIXED "http://www.example.com/linkprops/course" xlink:title CDATA #IMPLIED xlink:label NMTOKEN #IMPLIED> <!ELEMENT gpa ANY> <!ATTLIST gpa xlink:type (resource) #FIXED "resource" xlink:role CDATA #FIXED "http://www.example.com/linkprops/gpa" xlink:title CDATA #IMPLIED xlink:label NMTOKEN #IMPLIED> <!ELEMENT go EMPTY> <!ATTLIST go xlink:type (arc) #FIXED "arc" xlink:arcrole CDATA #IMPLIED xlink:title CDATA #IMPLIED xlink:show (new replace embed other none) #IMPLIED xlink:actuate (onload onrequest other none) #IMPLIED xlink:from NMTOKEN #IMPLIED xlink:to NMTOKEN #IMPLIED> 20
XLink, yleinen (extended) linkki, esimerkki (3/3) <courseload> <tooltip>course Load for Pat Jones</tooltip> <person xlink:href="students/patjones62.xml" xlink:label="student62" xlink:role="http://www.example.com/linkprops/stude nt" xlink:title="pat Jones" /> <person xlink:href="profs/jaysmith7.xml" xlink:label="prof7" xlink:role="http://www.example.com/linkprops/profes sor" xlink:title="dr. Jay Smith" /> <!-- more remote resources for professors, teaching assistants, etc. --> <course xlink:href="courses/cs101.xml" xlink:label="cs-101" xlink:title="computer Science 101" /> <!-- more remote resources for courses, seminars, etc. -- <gpa xlink:label="patjonesgpa">3.5</gpa> "lokaattorit ja resurssit" <go xlink:from="student62" xlink:to="patjonesgpa" xlink:show="new" xlink:actuate="onrequest" xlink:title="pat Jones's GPA" /> <go xlink:from="cs-101" xlink:to="student62" xlink:arcrole="http://www.example.com/linkprops/auditor " xlink:show="replace" xlink:actuate="onrequest" xlink:title="pat Jones, auditing the course" /> <go xlink:from="student62" xlink:to="prof7" xlink:arcrole="http://www.example.com/linkprops/advisor " xlink:show="replace" xlink:actuate="onrequest" xlink:title="dr. Jay Smith, advisor" /> </courseload> "kaaret ja kulkusäännöt" 21
XLink, huomioita XLink assosioi resursseja yhteen ja tarjoaa mahdollisuuden määritellä assosiaatioiden tyyppi vrt. XHTML-linkkien tyypitys (@type, @rel) Huom. Kulkusäännön attribuutit @actuate ja @show vrt. XHTML-attribuutti @target Huom. Linkin osoitteesta voi löytyä XPointer-osoite href="file.xml#xpointer(id('c12')/desc[1])element(c12/1)" XPointer on erillinen suositus joka hyödyntää taas kerran XPathsyntaksia... (Huom. koko XPointer ei ole vielä valmis) Tämä mahdollistaa varsin monipuolisen XMLdokumenttien koostamisen (vrt. entiteetit) @actuate="onload" @show="embed" 22
Esimerkki, monikanavajulkaiseminen Sovellus #1 XHTML SMIL XML 1.0 SVG PNG... XSL/FO PDF käsikirjoitus XSLT Sovellus #2 CSS Mediaobjektit XLink XSLT CSS Sovellus #3 23
XQuery...eli miltä relaatiotietokantojen maailman näyttäisi ilman SQLrajapintaa?
XQuery: XML Query Language (WD) API-tason ohjelmoinnin sijaan usein halutaan vain kysellä tietoa XML-dokumenteista "sieltä täältä" esim. tiedonsiirto, konfiguraatiotiedostot yms. Ratkaisun ongelmaan tarjoaa XML-kyselykieli XQuery Huom! ei vielä W3C-suositus, valmistunee 2004(?) perustuu XPath-kieleen, ideoita SQL:stä yms. Kysely = (pieni) ohjelma tai lauseke, joka palauttaa tietoa XML-dokumentista (tulos tekstiä tai XML-dokumentti) kysely näkee koko XML-dokumentin (kuten DOM) kysely voi generoida hyvinkin monimutkaisia XML-dokumentteja Kyselyillä on oma syntaksinsa, jolle löytyy myös XMLsarjallistus (vrt. XPath) declare namespace dc="http://purl.org/dc/elements/1.1/" doc("memo.xml")//dc:title 25
XQuery: Esimerkki <?xml version="1.0" encoding="iso-8859-1"?> <muistio pvm="2004-03-22"> <luokitus>hpn-projekti</luokitus> <otsikko>uusi tilaus tulossa?</otsikko> <kirjoittaja>teuvo Oinas</kirjoittaja> <asia> Brasilian tehdas on pyytänyt arvion Soijakattilan uusimisen kustannuksista. <!-- Sirpa korjasi kirjoitusvirheet 2004-03-23. --> </asia> </muistio> <yhteenveto count="{ count(doc(muistio.xml')/muistio//*) }"> { doc("muistio.xml")//asia } </yhteenveto> <yhteenveto count = "4"> <asia>brasilian tehdas on pyytänyt arvion Soijakattilan uusimisen kustannuksista.</asia> </yhteenveto> kysely 26
XQuery: Huomioita XQuery sisältää tyypilliset (funktionaalisen) ohjelmoinnin lauserakenteet SQL-tyyppiset kutsut erikoistapauksena ns. FLOWR-lauseke (For-Let-Order-Where-Return) for $b in doc("raportit-2004.xml")//muistio where $b/@pvm = "2004-03-22" return $b/otsikko XQuery ja XSLT ovat monella tapaa samantyyppisiä mutta tarkoitettu eri tehtäviin XPath (1..2) on molempien perustana Ks. http://www.w3.org/xml/query 27
Semanttinen Web... informaationkäsittelystä tietojenkäsittelyyn
Mikä nykyisessä tietojenkäsittelyssä on "vikana"? Tiedostot siirtyvät ohjelmien välillä jotenkuten, itse tieto erittäin huonosti Useimmat dokumenttiformaatit lähtevät ajatuksesta ihmisestä informaation aktiivisena tulkitsijana, vrt. osoite: Tampereen teknillinen yliopisto, Korkeakoulunkatu 1, 33101 Tampere vs. organisaatio: Tampereen teknillinen yliopisto osoite: katuosoite: Korkeakoulunkatu katunumero: 1 postinumero: 33101 kaupunki: Tampere data1 data2 Katuosoite on fyysinen paikka kaupungin sisällä, jne. 29
Ajattelutavan muutos toimintatavan muutos Tieto ja sen hyödyntämisen prosessit pitää kuvata "tietokoneiden näkökulmasta" sovellus ihminen sovellus ihminen sovellus sovellus kone sovellus kone sovellus esim. juna-aikataulu ryhmätyöohjelma kalenteri Mitä tarkoittaa (ideatasolla) käytännössä? 1. tarvitaan yhteinen tietomalli, esim. X:llä on ominaisuus "osoite" 2. tarvitaan pelisäännöt kuinka määritellä universaaleja ominaisuuksia (predikaatteja), esim. "katuosoite"...joita myös pitää yhteisesti noudattaa sovelluksissa... 30
Semanttinen Web = Web + kuvailutieto 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 31
SW:n määrittelyrakenne 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) 32
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.) 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: jobs:affiliation http://persons.fi/presidents/e2000 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
RDF Query Language, RDQL ( RDF Data Access) RDQL on Semanttisen Webin SQL (std-työ vasta alussa) RDF-lähde SELECT?resource,?familyName WHERE (?resource, <info:age>,?age), (?resource, <vcard:n>,?y), (?y, <vcard:family>,?familyname) AND?age >= 24 USING info FOR <http://somewhere/peopleinfo#>, vcard FOR <http://www.w3.org/2001/vcard-rdf/3.0#>";?resource?familyname http://www.u1... Romppainen http://www.u2... Ala-Harja http://www.u3... Kaarto...... sovellus Ks. HP Labs SW Research http://www.hpl.hp.com/semweb/ 38
Semanttisen Webin sovelluksia Dublin Core RSS CC/PP
Esimerkki: Dublin Core DC on sovittu standardi esim. verkkosivujen kuvailemisessa käytettävistä predikaateista (attribuutit) Sisältää seuraavat sanat (ja std-tulkinnan näille!): 40
Esimerkki: RSS RDF Site Summary (RSS 1.0) määrittelee kehyksen jonka avulla voidaan julkaista ja yhdistellä esim. tiedotteita ja uutisia Esimerkki: käyttäjäystävällinen uutispalvelu Tampereen seudun tiedotteet Turun seudun tiedotteet koonta, hakupalvelu, näkymät eri uutislähteitä yhdistelevä sovellus Pääkaupunkiseudun tiedotteet Yhteisen luokituksen mukaisia uutisia ja ilmoituksia (esim. yhteystiedot, uutiset asuntokauppa yms.) vs. Ks. esim. http://www.oreillynet.com/meerkat/ 41
Esimerkki: CC/PP Composite Capability/Preference Profiles (CC/PP) päätelaitteet (ja käyttäjät) voivat kertoa palvelimelle ominaisuuksistaan ja toiveistaan 2-tasoinen malli: komponentit attribuutit RDF/XML-formaatti Perusta esim. WAP:in UAProf -määritykselle Kuvalähde. WASP, http://www.webstandards.org/learn/askw3c/feb2004.html 42
Semanttisen Webin spesifikaatiot Keskeiset SW-spesifikaatiot ovat saanet W3Csuosituksen statuksen vuonna 2004 OWL Web Ontology Language Overview OWL Web Ontology Language Guide OWL Web Ontology Language Reference OWL Web Ontology Language Semantics and Abstract Syntax OWL Web Ontology Language Test Cases Resource Description Framework (RDF): Concepts and Abstract Syntax RDF Semantics RDF Primer RDF Vocabulary Description Language 1.0: RDF Schema RDF/XML Syntax Specification (Revised) RDF Test Cases OWL Web Ontology Language Use Cases and Requirements http://www.w3c.org/2001/sw/ 43
Lopuksi
Yhteenveto "XML is the ASCII of the 21st century" (Tim Bray) Muistamisen arvoista: W3C ja standardointityö (tervetuloa jäseneksi!) XML 1.0/1.1 vs. XML-perhe useissa sovelluksissa XML on "vain" tekstiformaatti standardoitujen XML-tekstiformaattien merkitys: yhteisö, XMLyhteensopivuus, saatavilla olevat työkalut uusi teknologia jonka kehitystä kannattaa seurata: XQuery Semanttinen Web = Web + kuvailutieto Semanttinen Web on kehys joka hyödyntää RDF-sanastojen kehitystyötä 45
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 46
Liite 1: 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/consortium/activities (yleiskuva) W3C:n suositukset ja raportit sekä teknistä tietoa http://www.w3c.org/tr/ (kaikki spesifikaatiot) 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 47