IV1023 Vårtermin Avancerad datahantering med XML

Relevanta dokument
Datalagring IV1351 HT2017. Kursanvisningar

Frågor att lösa med SQL mot databasen kursdb_sql Sida 1 av 5

TENTAMEN För kursen. Databasteknik. Ansvarig för tentamen: Anna Palmquist. Förfrågningar: Anslås inom 3 veckor

Introduktionsmöte Innehåll

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Konstruktion av datorspråk

Allmänna frågor om kursen: 1. Vilket är ditt allmänna omdöme om kursen? Antal svar: 25 Medelvärde: 4.3

Relationsdatabasdesign

Programutveckling med Java 7.5 p, ht 2007 (D0019N) STUDIEHANDLEDNING - ALLMÄN INFORMATION

GIT L0003B. Databaser, en introduktion. Information inför kursstart

Webbdesign med multimedia, 5p Kurskod Kurstillfälle Hösten 2007 Kursansvarig lärare Ulf Larsson, Rum 3047

En snabb titt på XML LEKTION 6

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Strukturering med XML och DTD

Institutionen för kulturvård KURSGUIDE. KGM 511 Kulturvårdens hantverk fördjupning, litteraturkurs 7,5 hp. Höstterminen 2016.

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Frontermanual för Rektorsprogrammet

Socialpsykologiska teorier, 7,5 hp

Sammanställning av studentutvärdering samt utvärdering kurs vid institutionen för naturvetenskapernas och matematikens didaktik

Kursutvärdering/1MD222 Konstruktion av användargränssnitt II Datum för sammanställning:

Allmänna frågor om kursen: 1. Vad är ditt allmänna omdöme om kursen? Antal svar: 14 Medelvärde: Har kursen känts relevant för din utbildning?

Introduktion till informatik - människa, teknik, organisation

Delkursplan för Sociologi I, Introduktion, 3 hp, GN

GIT L0009B GEOGRAFISK DATABASTEKNIK. Information inför kursstart

Poäng. Start v. DV1: Datavetenskapens byggstenar 7.5. Antal registrerade (män/kvinnor) 38 (38/0)

Inledande programmering med C# (1DV402) Introduktion till. eller så här är det tänkt att fungera.

Kursplan för kurs på grundnivå

Allmänna frågor om kursen: Kursutvärderare: IT-kansliet/Christina Waller. 1. Vad är ditt allmänna omdöme om kursen? Antal svar: 30 Medelvärde: 3.

Ritteknik och CAD. Kursintro MTA101 Vårterminen MTA005 / KMT005 - Ritteknik och CAD - VT

Kursplanering Utveckling av webbapplikationer

Kursledare och övriga föreläsare och övningsassistenter. Antal undervisningstimmar uppdelat på föreläsningar, övningar och andra undervisningsformer

TNSL08, Produktion och distribution 6 hp, VT1-2013

Religionskunskap 1 15 hp, delkurs 2 Etik (7,5 hp)

Ekonomisk sociologi 6 hp.

Formulär för kursansvarig. Kursanalysen utförs under kursens gång. Nomenklatur: F föreläsning, Ö övning, R räknestuga, L laboration, S seminarium)

PM för delkurs Grundläggande metod (4,5 + 3 högskolepoäng), Beteendevetenskaplig kurs PAO, HT 2013

Kursens tidsfördelning av olika moment (lärarledd tid per student) Total schemalagd lärarledd tid 13 räknestugor

Scriptprogrammering och avancerad Flash. Ulf Larsson Jon Wåhlstedt

Kom i gång med PING PONG

Kursledare och övriga föreläsare och övningsassistenter

Design och konstruktion av grafiska gränssnitt

Vad är en databas? Exempel på databaser: Databas = Organiserad samling och lagring av information.

Delkursplan för Sociologi I, Introduktion, 3 hp, GN

4. Kunna tolka och bedöma resultaten i enklare studier.

SOCIOLOGISK TEORI (7,5 hp), Sociologi III Kursinformation VT 2017 (Mindre ändringar kan förekomma)

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Morfologiska och syntaktiska strukturer, 7,5 hp LIN200, LIN202

Kursplan. Kursens benämning: Militärteknik, Metod och självständigt arbete. Engelsk benämning: Military-Technology, Methods and Thesis

Evaluation Summary - CDT104 Grundläggande Webbdesign HT07 Dan Levin

STOCKHOLMS UNIVERSITET Sociologiska institutionen. Kursplan för miljösociologi VT-10, 6 högskolepoäng (Environmental Sociology, 6 ECTS)

Lite om databasdesign och modellering

4. Kunna tolka och bedöma resultaten i enklare studier.

Sammanställning av studentutvärdering samt utvärdering kurs vid institutionen för naturvetenskapernas och matematikens didaktik

Sociologisk analys, Sociologi III, 7,5 hp GN. Del II: Kvalitativ del (3 hp)

4. Kunna tolka och bedöma resultaten i enklare studier.

Sociologisk analys III, VT 2016, Kvalitativ del (3 hp)

Studiehandbok 1FE196 Introduktion till ekonomistyrning, 7,5

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

JAMM07, Masteruppsats, 30 högskolepoäng Master Thesis, 30 credits Avancerad nivå / Second Cycle

TENTAMEN. För kursen. Databasteknik. Ansvarig för tentamen: Cecilia Sönströd. Förfrågningar: Anslås inom 3 veckor

Studieguide till Matematik för F 3, kurs 4 Vt 2016

Delkursplan för Sociologi I, Introduktion, 3 hp, GN

TMV166/186 Linjär Algebra M/TD 2009/2010

Grupper i Studentportalen

TNK046 GIS - Databaser Laborationsuppgift 2

SOCIOLOGISK ANALYS (7,5 hp) ( ) Sociologi I, VT 2009

LUVIT Resource Centre 1.4. Användarmanual

SLUNIK manual. SLUNIK version

Manual: Rapporter v.3

Vetenskapsteori och forskningsmetod. Statistik för lärare, 7,5hp 950a02, 949a12, 949a12

KURSPLAN Matematik för gymnasielärare, hp, 30 högskolepoäng

Projektuppgift: Kalender Martin Hultman marhu002 Patrik Karlsson patka843

Avancerade Webbteknologier

Sammanställning av studentutvärdering samt utvärdering kurs vid institutionen för naturvetenskapernas och matematikens didaktik

1DV405 - Databasteknik. Kursintroduktion. Så här är kursen planerad.

Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7.5 hp (Distans) (DT ) Antal svarande = 18

Poäng. Start v. Programmeringsteknik med C och Matlab 7,50. Antal registrerade (män/kvinnor) 274 (194/80)

INSTITUTIONEN FÖR SVENSKA SPRÅKET

1DV405 - Databasteknik. Kursintroduktion. Så här är kursen planerad.

SPAK01, spanska, kandidatkurs

Delkursplan för Sociologi I, Introduktion, 3 hp, GN

Databaser och Datamodellering Foreläsning IV

L0009B. Moment. Introduktion till geografiska databaser: G:\L0009B\Allmänt\IntroGeoDB.pdf (F)

Sammanställning av kursutvärdering Samlad bedömning

Studieanvisning. Affärsplanering för tillväxtföretag

Kursplan. Kursens benämning: Folkrätt i militära operationer. Engelsk benämning: International Law of Military Operations

Att organisera ett kursrum

Kursutvärdering. Kurs: IKK: Projektkurs geografiska informationssystem (GIS) 7,5 hp

Webbutveckling grundkurs, DA120A sm11

TPPE98 Ekonomisk analys: Ekonomisk teori 4 hp

Grupper; Gruppindelningar; Vanliga inställningar för modul

Moodle2 STUDENTMANUAL

Databaser och databasdesign, 7,5 hp

STOCKHOLMS UNIVERSITET HT 2011 Statistiska institutionen Bertil Wegmann

Sammanställning av studentutvärdering samt utvärdering kurs vid institutionen för naturvetenskapernas och matematikens didaktik

THFR41 - Teknisk kommunikation på franska del II

TENTAMEN TDDB77 Databaser och Bioinformatik 15 mars 2002, kl 14-18

Kursdesign som aktiverar studenter under HELA kursen

Transkript:

IV1023 Vårtermin 2018 Avancerad datahantering med XML

1 KURSBESKRIVNING... 3 2 LITTERATUR... 3 HUVUDBOK... 3 ANDRA REKOMMENDERADE BÖCKER... 3 ÖVRIGT MATERIAL... 3 3 LÄRARE... 3 4 UNDERVISNINGSFORM... 3 5 DATORMILJÖ... 4 6 EXAMINATION... 4 TENTA... 4 INLÄMNINGSUPPGIFTERNA... 5 QUIZZAR... 5 INLÄMNINGSUPPGIFTER... 5 7 HANDLEDNING... 6 8 KURSUTVECKLING OCH KURSUTVÄRDERING... 6 9 SCHEMA/FÖRSLAG PÅ ARBETSGÅNG... 7 10 ÖVNINGSDATABASER... 9 KURSDATABASEN... 9 FILMDATABASEN... 11 11 LEKTIONSUPPGIFTER... 15 LEKTION 1 LOREL & XQUERY... 15 LEKTION 2 3 XSLT & SQL/XML... 16 LEKTION 4 RDF & RDFS... 17 12 QUIZUPPGIFTER... 18 QUIZ 1 SEMISTRUKTURERADE DATA, XML, DTD, XML SCHEMA... 18 QUIZ 2 XQUERY & XPATH... 18 QUIZ 3 XSLT... 18 QUIZ 4 SQL/XML... 18 QUIZ 5 RDF, RDFS, XML BASERADE SPRÅK... 18 13 INLÄMNINGSUPPGIFTER... 19 INLUPP 1 SEMINARIUM 1: XQUERY, SQL/XML, XSLT... 19 INLUPP 2 XQUERY... 21 INLUPP 3 XSLT... 22 INLUPP 4 DB2 & XML... 23 INLUPP 5 ORACLE & XML... 25 INLUPP 6 SQL SERVER & XML... 27 INLUPP 7 ARTIKLAR OM FRÅGESPRÅK FÖR SSD & XML, SAMT OM XML BASERADE SPRÅK... 29 INLUPP 8 EXTRA UPPGIFTER FÖR BETYGET D... 30 INLUPP 9 EXTRA UPPGIFTER FÖR BETYGET C... 32 INLUPP 10 EXTRA UPPGIFTER FÖR BETYGET B... 33 INLUPP 11 EXTRA UPPGIFTER FÖR BETYGET A... 34 2 (34)

1 Kursbeskrivning Kursen ska ge grundläggande kunskaper om semistrukturerade data med fördjupning inom XML och XML-relaterade teknologier för datalagring och frågespråk. Kursen behandlar även relationen mellan relationsdabaser och XML, både med standardteknologier som SQL/XML och med produktspecifika lösningar från IBM, Oracle och Microsoft. Under kursen diskuteras även XML-baserade språk med extra fokus på RDF och modellering med RDFS. Kursens fokus ligger på XML, DTD, XMLSchema, XPath, XQuery, XSLT, och SQL/XML. 2 Litteratur Huvudbok Querying XML: XQuery, XPath, and SQL-XML in context (ISBN: 9781558607118) Jim Melton, Stephen Buxton, Morgan Kaufmann, 2006 Man förväntas också ha en grunddatabasbok som t ex kursboken till IV1351: Database Systems (Thomas Connolly, Carolyn Begg), Addison-Wesley, upplaga 4 eller senare Läsanvisningar finns i föreläsningsbilderna. Andra rekommenderade böcker An Introduction to XML and Web Technologies (ISBN: 9780321269669) Moller, Schwartzbach, Addisson-Wesley, 2006 Data on the Web (ISBN: 9781558606227) Abiteboul et al, Morgan Kaufmann, 2000 Beginning XML Databases (ISBN: 9780471791201) Gavin Powell, Wiley, 2007 XQuery - Search across a variety of XML-data (Second Edition, ISBN: 9781491915103) Priscilla Walmsley, O'Reilly, 2015 Övrigt material Kursanvisningar (det här kompendiet) Föreläsningsbilder Kompendier om teknologierna och produkterna Utdrag och artiklar Relevanta webbsidor Annat material (lektionslösningsförslag, exempeldatabaser, gamla tentor) 3 Lärare nikos dimitrakas (kursansvarig) Rum: 2423 Tel: 08-161295 E-post: nikosd@kth.se 4 Undervisningsform Undervisning ges i form av föreläsningar, lektioner, seminarier, labbar, inlämningsuppgifter samt genom handledning. I kursen ingår även fem obligatoriska quizzar som görs elektroniskt. Det är starkt rekommenderat att delta i all undervisning. Elektronisk handledning och annan kommunikation med lärarna sker via Canvas eller via mejl. 3 (34)

5 Datormiljö Under kursen skall ett antal olika verktyg användas för databaskonstruktion och exekvering av frågespråk. Följande verktyg måste användas: XQuisitor BaseX Webbläsare (XSLT) Oracle 12c IBM DB2 11.1 Microsoft SQL Server 2016 Texteditor, gärna med syntaxstöd för XML Utöver dessa verktyg är det nödvändigt att man har tillgång till Canvas och andra KTH-tjänster som man får tillgång till automatiskt när man är registrerad på kursen. De flesta av verktygen ovan är tillgängliga gratis via webben, eventuellt endast som trials eller för icke-kommersiell användning. Microsofts verktyg finns tillgängliga för alla studenter via MSDN DreamSpark (mer information på KTH:s webbplats). 6 Examination Kursen har två examinationer. Den ena examinationen är på 3 högskolepoäng och motsvarar tentan. Den andra examinationen är på 4,5 högskolepoäng och innefattar inlämningsuppgifterna och quizzarna. Kursbetyget blir medelvärdet av examinationernas betyg avrundat uppåt, dock högst ett steg bättre än tentans betyg. Tenta Salstenta på fyra timmar. Inga hjälpmedel tillåtna (förutom lexikon mellan svenska och främmande språk). Tentan består av tre delar. För att få godkänt på tentan måste man uppnå ett visst resultat på varje del och ett visst resultat totalt. Betygsgränser (vad man måste uppnå på varje del och på hela tentan för att få ett visst betyg på tentan): Hela tentan Per del A-gräns 92% 84% B-gräns 84% 73% C-gräns 76% 62% D-gräns 68% 51% E-gräns 60% 40% Får man minst 75% på en del utan att uppnå E-gränsen, får man rest (Fx) på de delar man inte fick 75% på, dvs möjlighet att endast göra dessa delar vid nästa tenta. Då kan man få högst E. Man behöver inte använda sig av denna möjlighet, men om man använder sig av den gäller E- gränserna för de delar man skriver, dvs 60% på hela tentan och 40% per del. Det framgår av schemat vilka tentatillfällen som finns planerade just nu. Flera tillfällen kommer att planeras, så kontrollera alltid i schemat. Gamla tentor / Exempeltentor finns tillgängliga i Canvas. Tentans tre delar täcker följande områden: 4 (34)

Del 1 (Teori och modellering): Allt om semistrukturerade data, XML, DTD, XML Schema, XML-baserade språk, representationer av XML, RDFS Del 2 (Frågespråk för SSD och XML): Path expressions, Lorel, XPath, XQuery, XSLT Del 3 (XML och relationsdatabaser): SQL/XML, samt produktspecifika lösningar av Microsoft, Oracle och IBM Inlämningsuppgifterna Ett antal mindre uppgifter utförs i form av grupparbete och lämnas in elektroniskt. Grupperna skall bestå av tre (eller två) studenter. Gruppanmälningar görs i Canvas. Använd Canvas för att hitta andra studenter som behöver grupp. Utöver inlämningsuppgifterna skall varje student individuellt göra fem quizzar. Quizzarna görs elektroniskt via Canvas. De relaterar till de olika föreläsningarna och skall göras efter respektive föreläsning. Quizzar Fem obligatoriska quizzar måste göras individuellt vid bestämda tidpunkter under kursen. Quizzarna görs via Canvas. Quiz 1 ska göras efter föreläsning 2 och före föreläsning 4. Den täcker det som tas upp under de två första föreläsningarna. Quiz 2 ska göras efter föreläsning 3 och före lektion 1. Den täcker det som tas upp under de tre första föreläsningarna och den första lektionen. Quiz 3 ska göras efter föreläsning 4 och före lektion 2. Den täcker det som tas upp på föreläsning 4 och lektion 2. Quiz 4 ska göras efter föreläsning 5 och före lektion 2. Den täcker det som tas upp på föreläsning 5 och lektion 2-3. Quiz 5 ska göras efter föreläsning 9 och före lektion 4. Den täcker det som tas upp på föreläsning 9 och lektion 4. Quizzarna beskrivs i mer detalj senare i det här kompendiet. Inlämningsuppgifter Flera inlämningsuppgifter skall skickas in via Canvas av grupperna. En av inlämningsuppgifterna lämnas in inför seminarium 1 och presenteras och diskuteras under seminariet. De andra inlämningsuppgifterna kan lämnas in senast 2018-06-04, men det är rekommenderat att man utför så mycket som möjligt före tentan. Inlämningsuppgifterna beskrivs mer i detalj senare i det här kompendiet. 5 (34)

7 Handledning Under kursen ges handledning på plats i Electrum vid vissa tider och elektroniskt via Canvas. Handledningen fungerar som rådgivning runt lösningar (satser, konstruktioner, etc.) som ni tar fram. Under handledningen kan man också få svar eller förtydliganden på allt som rör kursinnehållet. Man kan även använda Canvas för att ställa frågor som relaterar till kursinnehållet, administrationen, etc. och frågor som handlar om praktiska problem med produkterna och inlämningsuppgifterna. Avstå dock från att skicka kompletta lösningar till handledningsforumet i Canvas. Till exempel kan man ställa frågor om man har problem med ett verktyg eller inte vet hur man gör en viss sak i ett verktyg. Man kan också ställa frågor om satser och konstruktioner i SQL/XQuery/XSLT som man inte får att fungera. Här kan man också ställa frågor om den teori som tas upp vid föreläsningarna och lektionerna samt i kurslitteraturen. Den elektroniska handledningen fungerar på så sätt att lärare och handledare bevakar Canvas, och svarar så snart de kan. Det är förstås också möjligt för studenterna att svara på varandras frågor, vilket ibland kan betyda att man får svar lite snabbare. Handledning på plats (i Electrum) har planerats på de tider som förväntas vara handledningsintensiva. Vid dessa tider är handledarna tillgängliga för handledning på plats i Forum. Man skriver upp sig för handledning via handledning.dsv.su.se. Handledarna bevakar listan elektroniskt och kommer till studenterna så snart som möjligt. Man kan sitta var man vill i Forumbyggnaden: bibliotekets grupprum, datorsalarna, grupprummen, etc. Handledningstiderna finns i Canvas och kan komma att anpassas efter behov. 8 Kursutveckling och kursutvärdering Det är viktigt att man berättar vad man tycker om kursen både under kursens gång och efter kursens slut. Ibland kan det finnas små förändringar som kan göras under kursens gång för att förbättra inlärningen eller på annat sätt förbättra kursen. Det enklaste sättet att uppmärksamma oss på synpunkter om kursen är att skriva ett inlägg i Canvas eller skriva direkt till lärarna. Kursen kan också utvärderas individuellt och anonymt via Canvas direkt efter den ordinarie tentan. Utvärderingen är inte till bara för den som har klagomål. Frågorna är för det mesta flervalsfrågor som kan ge oss en bild av vilka delar av kursen som har mottagits väl och vilka delar som behöver förändras/förbättras. Vi hoppas att samtliga deltagare tar sig tid att fylla i och skicka utvärderingen. En analys av kursen sammanställs så småningom med bl a eventuella förslag på förändringar till nästa tillfälle. Kursanalysen publiceras i Canvas. Förändringsarbetet är till stor del baserat på svaren i utvärderingen. 6 (34)

9 Schema/Förslag på arbetsgång Det kan ske förändringar i schemat under kursens gång. Titta alltid på KTH-webben för aktuellt schema. Nedan finns förslag på aktiviteter som är lämpliga att utföra vid olika tidpunkter under kursens gång. Kursen är på 7,5 högskolepoäng, vilket innebär 5 veckors heltidsarbete (en arbetsinsats på ungefär 200 timmar). Nedan ser man hur vi har tänkt. Det är dock upp till var och en att finjustera sin planering. Kursen går parallellt med andra kurser så planeringen visar lite grovt vad man bör jobba med i anknytning till de schemalagda aktiviteterna: Vecka 12 Föreläsning 1, 2, 3 Få tag i materialet Läs kursanvisningarna Ordna alla administrativa aspekter (Canvas, etc.) Bilda grupp Läs det relevanta materialet för Föreläsning 1, 2, 3 Quiz 1, 2 Jobba med lektionsuppgifter för Lektion 1 Jobba med kompendiet om XQuery Vecka 13 Föreläsning 4, 5 Lektion 1 Quiz 2, 3 Jobba med lektionsuppgifter för Lektion 1, 2 Jobba med kompendiet om XQuery Jobba med kompendiet om XSLT Läs det relevanta materialet för Föreläsning 3, 4, 5 Vecka 14 Jobba med kompendiet om XQuery Jobba med kompendiet om XSLT Läs det relevanta materialet för Föreläsning 3, 4, 5 Jobba med lektionsuppgifter för Lektion 2, 3 Vecka 15 Lektion 2, 3 Seminarium 1 Quiz 3, 4 Jobba med lektionsuppgifter för Lektion 2, 3 Jobba med seminarieuppgifter för Seminarium 1 Jobba med inlämningsuppgifterna XQuery & XSLT 7 (34)

Vecka 16 Föreläsning 6 Läs det relevanta materialet för Föreläsning 6 Jobba med kompendiet om DB2 Jobba med inlämningsuppgifterna Vecka 17 Föreläsning 7, 8 Läs det relevanta materialet för Föreläsning 6, 7, 8 Jobba med kompendierna om DB2, Oracle & SQL Server Jobba med inlämningsuppgifterna Vecka 18 Vecka 19 Jobba med inlämningsuppgifterna Börja lämna in inlämningsuppgifter (för att hinna få feedback före tentan) Föreläsning 9 Läs det relevanta materialet för Föreläsning 9 Jobba med lektionsuppgifter för Lektion 4 Lektion 4 Quiz 5 Vecka 20-21 Vecka 22 Vecka 23 Senare Jobba med inlämningsuppgifterna Kolla gamla tentor Repetera inför tentan Jobba med inlämningsuppgifterna Lämna in inlämningsuppgifterna (före tentan rekommenderas) Kolla gamla tentor Repetera inför tentan Tenta Fyll i utvärderingen i Canvas Jobba med inlämningsuppgifterna Lämna in inlämningsuppgifterna Fyll i utvärderingen i Canvas Omtenta Eventuella kompletteringar 8 (34)

10 Övningsdatabaser Under lektioner och seminarium kommer följande databaser att användas. Den första databasen är en relationsdatabas (med några XML-kolumner) om kurser och finns tillgänglig i Canvas som skript för att skapa databasen i DB2, Oracle och SQL Server. Den andra databasen är ett XML-dokument om filmer och finns tillgänglig som en XML-fil i Canvas. Under föreläsningarna och i de övriga kompendierna används även en databas om böcker och förlag, och en databas om personers bilar och anställningar. Dessa presenteras i respektive material. Alla fyra databaserna används för inlämningsuppgifterna. Kursdatabasen Grafisk relationsdatabasmodell Kolumner med nyckelsymbol bredvid sig utgör tabellens primärnyckel. Relationerna mellan tabellerna betecknar främmande nycklar. T ex är kolumnen lokal i tabellen Ktillf främmande nyckel till kolumnen namn i tabellen Lokal. Kolumnerna sdat och kurs i tabellen Deltag utgör en sammansatt främmande nyckel till Ktillf-tabellens sammansatta primärnyckel. Det är ganska vanligt att långa tabellnamn måste förkortas i databaser. Tabellen med alla kurstillfällen heter därför Ktillf medan tabellen med alla deltaganden heter Deltag. Tabellerna Elev och Lärare har var sin surrogatnyckel (eid respektive lid). Dessa är av datatypen Autonumber (varierar från produkt till produkt). Användaren behöver inte se dem eller jobba med dem. Kolumnerna Elev.kontakt och Kurs.info är av datatypen XML. Ingen validering är aktiverad i databasen, men kolumnernas XML-innehåll förväntas följa mönstret som framgår av exempeldata. Databasinnehållet visas på nästa sida. 9 (34)

Kurs kurskod kursben Info Java1 Java, grundkurs <info><längd>5</längd><pris>6700</pris></info> Java2 Java, fortsättningskurs <info><längd>4</längd><pris>6000</pris></info> DBM1 Databasmetodik <info><längd>2</längd><pris>2800</pris></info> LDBD Logisk databasdesign <info><längd>4</längd><pris>6000</pris></info> FDBD Fysisk databasdesign <info><längd>5</längd><pris>7200</pris></info> Log1 Logik <info><längd>3</längd><pris>4500</pris></info> Ktillf Lokal sdat kurs lärare lokal 2008-03-06 Java1 2 Tellus 2008-04-02 DBM1 5 Sirius 2008-04-16 Java2 2 Orion 2008-04-16 Log1 3 Jupiter 2008-05-06 LDBD 5 Sirius 2008-05-06 Java1 2 Jupiter 2008-05-09 FDBD 4 Jupiter 2008-09-02 Java1 3 Tellus 2008-09-02 LDBD 4 Orion 2009-01-22 Java2 2 Orion 2009-01-28 DBM1 5 Jupiter namn maxant Jupiter 12 Orion 24 Sirius 16 Tellus 32 Lärare lid lnamn rum tel 1 Anders Ödman 634 151576 2 Bo Åkerman 604 151526 3 Carl Nordin 603 151553 4 Lena Svensson 605 151556 5 Sofia Wilsson 622 151585 Deltag sdat kurs elev 2008-03-06 Java1 1 2008-04-02 DBM1 1 2008-04-16 Java2 7 2008-04-16 Log1 4 2008-05-06 LDBD 7 2008-05-06 Java1 2 2008-05-09 FDBD 8 2008-09-02 Java1 1 2008-09-02 LDBD 8 2009-01-22 Java2 2 2009-01-28 DBM1 3 2008-03-06 Java1 9 2008-04-02 DBM1 2 2008-04-16 Java2 5 2008-04-16 Log1 5 2008-05-06 LDBD 1 2008-05-06 Java1 6 2008-05-09 FDBD 6 2008-09-02 Java1 9 2008-09-02 LDBD 6 2009-01-22 Java2 9 2009-01-28 DBM1 5 2008-03-06 Java1 8 2008-04-02 DBM1 10 2008-04-16 Java2 6 2008-03-06 Java1 10 2008-04-02 DBM1 3 2008-03-06 Java1 3 2009-01-22 Java2 10 Elev eid enamn kontakt 1 Bo Dahl <kontakt><tel typ="hemma">163578</tel><tel typ="mobil">073564889</tel><adress postnummer ="16102" postort="bromma"><gata>ahlgatan</gata><nummer>6</nummer></adress></kontakt> 2 Ann Stål <kontakt><tel typ="hemma">373789</tel><tel typ="mobil">073148964</tel><adress postnummer ="16429" postort="kista"><gata>lindvägen</gata><nummer>3</nummer></adress></kontakt> 3 Ebba Ryd <kontakt><tel typ="hemma">325305</tel><adress postnummer="16107" postort="bromma"><gata>ankvägen</gata><nummer>4</nummer></adress></kontakt> 4 Robert Ahl <kontakt><tel typ="hemma">123435</tel><tel typ="mobil">073552491</tel><adress postnummer ="16425" postort="kista"><gata>ekvägen</gata><nummer>1</nummer></adress></kontakt> 5 Lars Holm <kontakt><tel typ="hemma">203045</tel><adress postnummer="16966" postort="solna"><gata>skolgatan</gata><nummer>3</nummer></adress></kontakt> 6 Siw Björk <kontakt><tel typ="hemma">452678</tel><adress postnummer="16431" postort="kista"><gata>bokvägen</gata><nummer>2</nummer></adress></kontakt> 7 Sigge Ehn <kontakt><tel typ="hemma">245578</tel><tel typ="mobil">073691934</tel><adress postnummer ="16429" postort="kista"><gata>bokvägen</gata><nummer>24</nummer></adress></kontakt> 8 Kurt Grahn <kontakt><tel typ="hemma">192292</tel><tel typ="mobil">073318175</tel><adress postnummer ="19735" postort="bro"><gata>byvägen</gata><nummer>112</nummer></adress></kontakt> 9 Eva Jung <kontakt><tel typ="hemma">131187</tel><tel typ="mobil">073559185</tel><adress postnummer ="16966" postort="solna"><gata>storgatan</gata><nummer>5</nummer></adress></kontakt> 10 Lola Frid <kontakt><tel typ="hemma">723384</tel><tel typ="mobil">073292612</tel><adress postnummer ="18754" postort="täby"><gata>lillgatan</gata><nummer>3</nummer></adress></kontakt> 10 (34)

Filmdatabasen Grafisk och textuell representation av strukturen Filmer 1..* Film Titel 1..1 År 1..1 1..* Skådis Namn 1..1 Födesleår 1..1 Land 1..1 1 Regissör Namn 1..1 Födelseår 1..1 Land 1..1 1 Produktionsbolag innehåll String Rotelementet är "Filmer" och det har ett eller flera subelement "Film". Varje element "Film" har attributen "Titel" och "År" och innehåller ett eller flera element "Skådis", exakt ett element "Regissör" och exakt ett element "Produktionsbolag". Varje element "Skådis" och varje element "Regissör" har attributen "Namn", "Födelseår" och "Land". Elementet "Produktionsbolag" har inga attribut eller subelement, men har text som innehåll. Diagrammet ovan motsvarar följande DTD och XML Schema. XML Schema <?xml version="1.0"?> <schema xmlns="http://www.w3.org/2001/xmlschema"> <element name="filmer" type="filmertype"/> <complextype name="filmertype"> <sequence> <element name="film" type="filmtype" minoccurs="1" maxoccurs="unbounded" /> </sequence> </complextype> <complextype name="filmtype"> <sequence> <element name="skådis" type="persontype" minoccurs="1" maxoccurs="unbounded" /> <element name="regissör" type="persontype" minoccurs="1" maxoccurs="1" /> <element name="produktionsbolag" type="string" minoccurs="1" maxoccurs="1" /> </sequence> <attribute name="titel" type="string" use="required" /> <attribute name="år" type="integer" use="required" /> </complextype> <complextype name="persontype"> <attribute name="namn" type="string" use="required" /> <attribute name="födelseår" type="integer" use="required" /> <attribute name="land" type="string" use="required" /> </complextype> </schema> 11 (34)

DTD <!ELEMENT Filmer (Film+)> <!ELEMENT Film (Skådis+, Regissör, Produktionsbolag)> <!ATTLIST Film Titel CDATA #REQUIRED År CDATA #REQUIRED> <!ELEMENT Skådis EMPTY> <!ATTLIST Skådis Namn CDATA #REQUIRED Födelseår CDATA #REQUIRED Land CDATA #REQUIRED> <!ELEMENT Regissör EMPTY> <!ATTLIST Regissör Namn CDATA #REQUIRED Födelseår CDATA #REQUIRED Land CDATA #REQUIRED> <!ELEMENT Produktionsbolag (#PCDATA)> Databasinnehåll <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE Filmer> <Filmer> <Film Titel="Driven" År="2001"> <Skådis Namn="Burt Reynolds" Födelseår="1936" Land="USA"/> <Skådis Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Skådis Namn="Kip Pardue" Födelseår="1976" Land="Canada"/> <Regissör Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Produktionsbolag>Tri-Star</Produktionsbolag> <Film Titel="Antz" År="1998"> <Skådis Namn="Woody Allen" Födelseår="1935" Land="USA"/> <Skådis Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Regissör Namn="Eric Darnell" Födelseår="1961" Land="Ireland"/> <Produktionsbolag>Universal</Produktionsbolag> <Film Titel="The Muse" År="1999"> <Skådis Namn="Andie MacDowell" Födelseår="1958" Land="USA"/> <Skådis Namn="Jeff Bridges" Födelseår="1949" Land="USA"/> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Regissör Namn="Pitof" Födelseår="1970" Land="France"/> <Produktionsbolag>October Films</Produktionsbolag> <Film Titel="End Game" År="2006"> <Skådis Namn="James Woods" Födelseår="1955" Land="USA"/> <Skådis Namn="Cuba Gooding Jr" Födelseår="1968" Land="USA"/> <Regissör Namn="Andy Cheng" Födelseår="1972" Land="China"/> <Produktionsbolag>Millennium Films</Produktionsbolag> 12 (34)

<Film Titel="Picking Up the Pieces" År="2000"> <Skådis Namn="Woody Allen" Födelseår="1935" Land="USA"/> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Skådis Namn="Alfonso Arau" Födelseår="1948" Land="USA"/> <Regissör Namn="Eric Darnell" Födelseår="1961" Land="Ireland"/> <Produktionsbolag>Tri-Star</Produktionsbolag> <Film Titel="Anything Else" År="2003"> <Skådis Namn="Woody Allen" Födelseår="1935" Land="USA"/> <Skådis Namn="Jason Biggs" Födelseår="1978" Land="USA"/> <Skådis Namn="Christina Ricci" Födelseår="1980" Land="USA"/> <Regissör Namn="Woody Allen" Födelseår="1935" Land="USA"/> <Produktionsbolag>Universal</Produktionsbolag> <Film Titel="Catwoman" År="2004"> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Skådis Namn="Halle Berry" Födelseår="1966" Land="USA"/> <Regissör Namn="Pitof" Födelseår="1970" Land="France"/> <Produktionsbolag>Universal</Produktionsbolag> <Film Titel="The Specialist" År="1994"> <Skådis Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Skådis Namn="James Woods" Födelseår="1955" Land="USA"/> <Regissör Namn="Eric Darnell" Födelseår="1961" Land="Ireland"/> <Produktionsbolag>Tri-Star</Produktionsbolag> <Film Titel="Sliver" År="1993"> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Skådis Namn="William Baldwin" Födelseår="1963" Land="USA"/> <Skådis Namn="Tom Berenger" Födelseår="1949" Land="USA"/> <Regissör Namn="Phillip Noyce" Födelseår="1950" Land="Australia"/> <Produktionsbolag>Universal</Produktionsbolag> <Film Titel="Last Action Hero" År="1993"> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Skådis Namn="Arnold Schwarzenegger" Födelseår="1947" Land="Austria"/> <Regissör Namn="John McTiernan" Födelseår="1951" Land="USA"/> <Produktionsbolag>Universal</Produktionsbolag> <Film Titel="The Saint" År="1997"> <Skådis Namn="Val Kilmer" Födelseår="1959" Land="USA"/> <Skådis Namn="Elisabeth Shue" Födelseår="1963" Land="USA"/> <Regissör Namn="Phillip Noyce" Födelseår="1950" Land="Australia"/> <Produktionsbolag>Universal</Produktionsbolag> <Film Titel="Hide and Seek" År="2005"> <Skådis Namn="Robert De Niro" Födelseår="1943" Land="USA"/> <Skådis Namn="Dakota Fanning" Födelseår="1994" Land="USA"/> <Skådis Namn="Famke Janssen" Födelseår="1964" Land="Netherlands"/> <Skådis Namn="Elisabeth Shue" Födelseår="1963" Land="USA"/> <Regissör Namn="John Polson" Födelseår="1965" Land="Australia"/> <Produktionsbolag>20th Century Fox</Produktionsbolag> 13 (34)

<Film Titel="Demolition Man" År="1993"> <Skådis Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Skådis Namn="Wesley Snipes" Födelseår="1962" Land="USA"/> <Skådis Namn="Sandra Bullock" Födelseår="1964" Land="USA"/> <Skådis Namn="Hiro Kanagawa" Födelseår="1963" Land="Japan"/> <Regissör Namn="Marco Brambilla" Födelseår="1960" Land="Italy"/> <Produktionsbolag>Warner Bros</Produktionsbolag> <Film Titel="Excess Baggage" År="1997"> <Skådis Namn="Alicia Silverstone" Födelseår="1976" Land="USA"/> <Skådis Namn="Benicio Del Toro" Födelseår="1967" Land="Puerto Rico"/> <Skådis Namn="Hiro Kanagawa" Födelseår="1963" Land="Japan"/> <Regissör Namn="Marco Brambilla" Födelseår="1960" Land="Italy"/> <Produktionsbolag>Warner Bros</Produktionsbolag> <Film Titel="The 6th Day" År="2000"> <Skådis Namn="Arnold Schwarzenegger" Födelseår="1947" Land="Austria"/> <Skådis Namn="Hiro Kanagawa" Födelseår="1963" Land="Japan"/> <Skådis Namn="Robert Duvall" Födelseår="1931" Land="USA"/> <Regissör Namn="Roger Spottiswoode" Födelseår="1945" Land="Canada"/> <Produktionsbolag>Phoenix Pictures</Produktionsbolag> <Film Titel="Cliffhanger" År="1993"> <Skådis Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Regissör Namn="Renny Harlin" Födelseår="1960" Land="Italy"/> <Produktionsbolag>Warner Bros</Produktionsbolag> <Film Titel="The Kid And I" År="1993"> <Skådis Namn="Tom Arnold" Födelseår="1959" Land="USA"/> <Skådis Namn="Arnold Schwarzenegger" Födelseår="1947" Land="Austria"/> <Regissör Namn="Penelope Spheeris" Födelseår="1945" Land="USA"/> <Produktionsbolag>Universal</Produktionsbolag> <Film Titel="True Lies" År="1994"> <Skådis Namn="Tom Arnold" Födelseår="1959" Land="USA"/> <Skådis Namn="Jamie Lee Curtis" Födelseår="1958" Land="USA"/> <Skådis Namn="Arnold Schwarzenegger" Födelseår="1947" Land="Austria"/> <Skådis Namn="Eliza Dushku" Födelseår="1980" Land="USA"/> <Regissör Namn="James Cameron" Födelseår="1954" Land="Canada"/> <Produktionsbolag>Tri-Star</Produktionsbolag> </Filmer> 14 (34)

11 Lektionsuppgifter Kursen innefattar flera lektioner. Här hittar man uppgifterna för dessa lektioner. Man förväntas ha tittat igenom uppgifterna och försökt lösa dem före respektive lektion. Lektion 1 Lorel & XQuery Att förstå hur SSD-grafer, SSD-uttryck och XML representerar information. Att förstå hur navigeringen i semistrukturerade datastrukturer och XML fungerar. Att förstå hur XQuery-uttryck kan användas för att ställa frågor mot XML, konstruera XMLresultat och nästlas. Övning 1 Omvandla filmdatabasen (XML-dokumentet) till en SSD-graf och ett SSD-uttryck! (Det räcker med de första två filmerna.) Övning 2 Skriv Lorel-uttryck för följande frågor: 1. Ta fram produktionsbolaget för filmen "True Lies"! 2. Ta fram namn på skådespelare som var med i filmen "Sliver"! 3. Ta fram titel och regissörens namn för filmer där regissörer är med som skådespelare! Övning 3 Uppgifterna nedan ska lösas med XQuery. Uppgifterna använder filmdatabasen (som beskrivs i kapitel 10) som kan laddas ner från Canvas för att träna praktiskt med XQuery. Uppgifterna kan tolkas lite olika, så prova olika resultatstrukturer med attribut-, element- och textnoder. Uppgift X1 Ta fram alla regissörer! Uppgift X2 Ta fram alla skådespelare från USA som är med i filmen Driven! Uppgift X3 Ta fram antal skådespelare per film! Uppgift X4 Ta fram titel på filmer vars regissör är med i filmen som skådis! Uppgift X5 Ta fram antal filmer per produktionsbolag! Uppgift X6 Ta fram varje skådespelares filmer! Uppgift X7 Ta fram varje skådespelares ålder vid varje film! Uppgift X8 Ta fram titel på filmer som Sharon Stone inte är med i! Uppgift X9 Ta fram filmer som endast har skådespelare från USA! Uppgift X10 Ta fram olika skådespelare som Eric Darnell har regisserat! Uppgift X11 Ta fram alla personer och sätt attributet typ till "skådis", "regissör" eller "lite av allt"! 15 (34)

Lektion 2-3 XSLT & SQL/XML Att förstå hur XSLT kan användas för att omvandla XML både rekursivt och iterativt. Att förstå hur SQL/XML-publiceringsfunktioner kan användas för att omvandla SELECTsatsers resultat till XML. Att förstå hur XQuery kan användas inuti SQL för att komma åt XML-data lagrade i kolumner. Att förstå hur XQuery transform-uttryck kan användas för att uppdatera XML. Övning 4 Skapa XSLT-dokument för att producera följande: 1. Alla skådespelare som ett element (per skådespelare) under ett rotelement. 2. Alla skådespelare som en HTML-tabell. 3. Alla filmer per regissör som nästlade HTML-listor. 4. Alla filmer från Tri-Star och antal skådespelare i varje film som lämplig HTML-struktur. Övning 5 Uppgifterna nedan ska lösas med SQL (inklusive XML-publiceringsfunktionerna och XQueryfunktionerna). Uppgifterna använder kursdatabasen (som beskrivs i kapitel 10) som kan laddas ner från Canvas för att träna praktiskt med SQL/XML. Uppgifterna kan tolkas lite olika, så prova olika resultatstrukturer med attribut-, element- och textnoder (när resultatet skall vara XML). Uppgift S1 Ta fram namn på kurser som har gått i lokalen Orion! Ett element per kurs. Uppgift S2 Hur många kurstillfällen har varje elev gått? Visa namn och antal! Ett element per elev, namn och antal som attribut. Uppgift S3 Ta fram information om alla kurstillfällen. Visa kursnamnet, startdatum, lokalens namn och lärarens namn! Ett element per kurstillfälle. Uppgift S4 Ta fram information om alla lärare! Ett element per lärare inuti rotelementet Alla. Uppgift S5 Vilka lokaler har varje lärare gett kurser i? Visa lärarnas namn och lokalernas namn! Ett element per lärare med ett subelement för varje lokal. Uppgift S6 Vilka lärare har eleverna träffat? Visa elevernas namn och lärarnas namn! Ett element per elev med ett subelement per lärare. Uppgift S7 Hur många lokaler och hur många lärare har använts av varje kurs? Ett element per kurs med namnet och antalen som attribut. Uppgift S8 Vilka lokaler har använts för fyraveckorskurser? Visa namnet och kapaciteten! Uppgift S9 Vilka elever har mobil? Visa namn och mobilnummer! Uppgift S10 Hur många telefonnummer har varje elev? Visa namn och antal! Uppgift S11 Visa eleverna grupperade per postort! Ett element per unik postort med ett subelement för varje elev med namnet som attribut och elevens alla telefonnummer som subelement. Uppgift S12 Ta fram Eva Jungs telefonnummer! Två kolumner: typ och nummer. Uppgift S13 Lars Holm har skaffat mobil! Numret är 070919293. Gör ändringen i databasen! Uppgift S14 Kursernas priser skall höjas med 100 kronor per vecka! Gör ändringen i databasen! 16 (34)

Lektion 4 RDF & RDFS Att förstå principen om RDF-påståenden med subjekt, predikat och objekt. Att förstå olika likvärdiga representationer av RDF-information. Att förstå RDFS-modellering och hur det skiljer sig från t ex UML. Att förstå hur RDFS styr vad som är möjligt i RDF-påståenden. Övning 6 Representera informationen nedan med RDF både som graf och som XML! Filmen The Avengers kom ut 1998 och producerades av Warner Bros. Filmen Watchmen producerades också av Warner Bros och kom ut 2009. Övning 7 Representera informationen nedan med RDFS både som graf och som XML! Varje film produceras av ett bolag och har en titel och ett premiärår. Varje produktionsbolag har ett namn. 17 (34)

12 Quizuppgifter Kursen innefattar fem quizzar. Här hittar man instruktioner för dessa. Quiz 1 Semistrukturerade data, XML, DTD, XML Schema Att repetera teorin från föreläsningarna om semistrukturerade data, XML, DTD, XML Schema. Uppgift Quiz 1 görs via Canvas. Quiz 2 XQuery & XPath Att repetera teorin från de första föreläsningarna om XPath och XQuery. Att öva på grundläggande XPath och XQuery. Uppgift Quiz 2 görs via Canvas. Quiz 3 XSLT Att repetera teorin från föreläsningen om XSLT. Att öva på grundläggande XSLT. Uppgift Quiz 3 görs via Canvas. Quiz 4 SQL/XML Att repetera teorin från föreläsningen om SQL/XML. Att öva på grundläggande SQL/XML. Uppgift Quiz 4 görs via Canvas. Quiz 5 RDF, RDFS, XML-baserade språk Att repetera teorin från föreläsningen om RDF/RDFS och XML-baserade språk. Uppgift Quiz 5 görs via Canvas. 18 (34)

13 Inlämningsuppgifter Under kursen skall flera inlämningsuppgifter lämnas in via Canvas. De första sju inlämningsuppgifterna krävs för betyget E. Uppgifterna i dessa skall lösas i grupp. De övriga inlämningsuppgifterna krävs för högre betyg. Uppgifterna i dessa kan lösas antingen i grupp eller individuellt, förutom uppgifterna för betyg A som skall lösas individuellt. För alla inlämningar gäller att lösningarna skall vara testade och inlämningarna skall innehålla lösningen, exekveringsresultat och relevanta kommentarer. Lösningarna måste lämnas in i ett format som tillåter att lösningens text kan kopieras och testas. Lämna gärna in i god tid före deadline. Då får ni även feedback tidigare. Inlupp 1 Seminarium 1: XQuery, SQL/XML, XSLT Krävs för betyget E Inlupp 1 skall lämnas in före seminarium 1. Att öva på olika frågespråk för XML. Att reflektera på skillnader mellan olika frågespråk för XML. Uppgift Lös följande frågor med XQuery: 1. Ta fram det antal olika personer som har jobbat för varje produktionsbolag! Ett element per produktionsbolag med namn och antal som attribut. Rotelement Resultat. 2. Ta fram antal skådespelare per land för varje film! Resultatet skall ha följande utseende: <Resultat> <Film titel=""> <Land namn="" antalskådisar="" /> <Land namn="" antalskådisar="" /> <Film titel=""> <Land namn="" antalskådisar="" /> <Land namn="" antalskådisar="" /> </Resultat> 3. Ta fram de skådespelare som varje regissör har regisserat minst två gånger! Resultatet skall ha följande utseende: <Resultat> <Regissör Namn="" Land="" Födelseår=""> <Skådis Namn="" Land="" /> <Skådis Namn="" Land="" /> </Regissör> <Regissör Namn="" Land="" Födelseår=""> <Skådis Namn="" Land="" /> <Skådis Namn="" Land="" /> </Regissör> </Resultat> 19 (34)

Lös följande frågor med SQL: Dessa frågor kan testas med DB2 eller Oracle som stödjer SQL/XML. Men eftersom introduktionen till dessa produkter kommer senare, är det acceptabelt att lämna in SQL-satser som inte har körts. Det är dock rekommenderat att man installerar DB2 enligt kompendiet för att testa. 4. Ta fram de lokaler som eleverna från Kista har gått kurser i! Resultatet skall ha följande utseende: <Resultat> <Elev namn=""> <Lokal>lokalens namn</lokal> <Lokal>lokalens namn</lokal> </Elev> <Elev namn=""> <Lokal>lokalens namn</lokal> <Lokal>lokalens namn</lokal> </Elev> </Resultat> 5. Hur många elever har deltagit i varje kurstillfälle? Resultatet skall ha följande utseende: <Resultat> <Kurstillfälle kurskod="" kursnamn="" startdatum="" lokal=""> <Lärare>lärarens namn</lärare> <AntalElever>antalet</AntalElever> </Kurstillfälle> <Kurstillfälle kurskod="" kursnamn="" startdatum="" lokal=""> <Lärare>lärarens namn</lärare> <AntalElever>antalet</AntalElever> </Kurstillfälle> </Resultat> 6. Vad är snittpriset för kurser av olika längd? Resultatet skall ha följande utseende: <Resultat> <Kurslängd antalveckor="" snittpris="" /> <Kurslängd antalveckor="" snittpris="" /> <Kurslängd antalveckor="" snittpris="" /> </Resultat> Lös följande frågor med XSLT: 7. Visa filmer per produktionsbolag som HTML. Produktionsbolag som rubrik med en tabell med filmerna där titeln, året, regissörens namn, regissörens land och antalet skådespelare är kolumnerna. 8. Ta fram en ny XML-struktur med filmerna sorterade per år! Resultatet skall ha följande utseende: <Filmer> <Film Titel="" År="" Produktionsbolag="" Regissör="regissörnamn"> <Skådis>skådisnamn</Skådis> <Skådis>skådisnamn</Skådis> <Film Titel="" År="" Produktionsbolag="" Regissör="regissörnamn"> <Skådis>skådisnamn</Skådis> <Skådis>skådisnamn</Skådis> </Filmer> 20 (34)

Inlupp 2 XQuery Krävs för betyget E Att träna på XQuery. Att förstå hur XQuery och XPath ibland kan användas för samma sak. Att förstå hur XML-strukturens redundans hanteras i XQuery. Uppgift Lös följande frågor med XQuery 1.0! Man får även göra lösningar med XQuery 3 för att jämföra, men inlämningen måste inkludera lösningar som fungerar med XQuery 1! Lämnar man in även lösningar för XQuery 3, får man dem kommenterade. XML-filerna books.xml och publishers.xml skall användas. 1. Vilka böcker har flera utgåvor (editions)? Resultatet skall följa reglerna i följande DTD: <!ELEMENT Resultat (Bok*)> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED> 2. Ta fram författare per genre! Resultatet skall följa reglerna i följande DTD: <!ELEMENT Resultat (Genre*)> <!ELEMENT Genre (Författare*)> <!ATTLIST Genre Namn CDATA #REQUIRED> <!ELEMENT Författare (#PCDATA)> 3. Vilka böcker har översatts till ryska och minst ett språk till? Resultatet skall följa reglerna i följande DTD: <!ELEMENT Resultat (Bok*)> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED Originalspråk CDATA #REQUIRED Antalandraspråk CDATA #REQUIRED> Obs! Attributet Antalandraspråk anger antal språk utöver ryska som boken har översatts till. 4. Vilka böckers översättningar har publicerats av varje förlag? Resultatet skall följa reglerna i följande DTD: <!ELEMENT Resultat (Förlag+)> <!ELEMENT Förlag (Bok*)> <!ATTLIST Förlag Namn CDATA #REQUIRED Land CDATA #REQUIRED> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED Genre CDATA #IMPLIED> 21 (34)

Inlupp 3 - XSLT Krävs för betyget E Att träna på XSLT. Att jämföra de olika sätten att iterera i XSLT. Att förstå vilka begränsningar XSLT 1.0 och XPath 1.0 har. Uppgift Lös följande frågor med XSLT 1.0! Man får även göra lösningar med XSLT 2 eller 3 för att jämföra, men inlämningen måste inkludera lösningar som fungerar med XSLT 1! Lämnar man in även lösningar för en annan version, får man dem kommenterade. XML-filerna books.xml och publishers.xml skall användas. 1. Visa alla böcker per genre! Resultatet skall vara en HTML-sida där varje genre är en rubrik och böckerna visas som en lista 2. Vilka böckers översättningar har publicerats av varje förlag? Resultatet skall vara ett XML-dokument som följer reglerna i följande DTD: <!ELEMENT Resultat (Förlag+)> <!ELEMENT Förlag (Bok*)> <!ATTLIST Förlag Namn CDATA #REQUIRED Land CDATA #REQUIRED> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED Genre CDATA #IMPLIED> 3. Visa alla böcker per originalspråk! Resultatet skall vara en HTML-sida med en tabell där varje språk har en eller flera rader, enligt följande. Språken ska visas alfabetiskt och böckerna ska vara sorterade på titeln. Tips: rowspan 22 (34)

Inlupp 4 - DB2 & XML Krävs för betyget E Att träna på SQL/XML. Att träna på XQuery och XQuery Update Facility. Att jämföra standarden med en produktspecifik implementation. Uppgift Lös följande frågor med SQL i DB2 11.1! Databasen bookdb skall användas. 1. Vilka böcker har flera utgåvor (editions)? Resultatet skall följa reglerna i följande DTD: <!ELEMENT Resultat (Bok*)> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED> 2. Vilka böckers översättningar har publicerats av varje förlag? Resultatet skall vara ett XML-dokument som följer reglerna i följande DTD: <!ELEMENT Resultat (Förlag+)> <!ELEMENT Förlag (Bok*)> <!ATTLIST Förlag Namn CDATA #REQUIRED Land CDATA #REQUIRED> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED Genre CDATA #IMPLIED> 3. Vilka böcker har varje författare skrivit? Resultatet skall vara ett XML-dokument som följer reglerna i följande XML Schema: <schema xmlns="http://www.w3.org/2001/xmlschema"> <element name="alla"> <complextype> <sequence> <element name="författare" maxoccurs="unbounded"> <complextype> <all> <element name="bok" maxoccurs="unbounded"> <complextype> <attribute name="titel" type="string" use="required"/> <attribute name="originalspråk" type="string" use="required"/> <attribute name="genre" type="string" /> </complextype> </element> </all> <attribute name="namn" type="string" use="required"/> <attribute name="land" type="string" use="required"/> </complextype> </element> </sequence> </complextype> </element> </schema> 4. Ta fram namn och land på författare till böcker som har översatts till ryska! Resultatet skall ha två kolumner. 23 (34)

5. Den senaste upplagan (edition) av boken "Encore une fois" har översatts till norska och kostar 200 kronor. Den är utgiven av förlaget KLC. Gör ändringen i databasen! 6. Ta fram följande information om samtliga böcker: titel, originalspråk, genre, antal upplagor, antal olika språk boken finns tillgänglig på, antal författare och året då den tidigaste upplagan kom. Resultatet skall vara en tabell med sju kolumner. 7. Ta fram information om på vilka språk varje förlag har böcker! Resultatet skall ha följande struktur: <Resultat> <Förlag namn="" land=""> <Språk>språknamnet</Språk> <Språk>språknamnet</Språk> </Förlag> <Förlag namn="" land=""> <Språk>språknamnet</Språk> <Språk>språknamnet</Språk> </Förlag> </Resultat> 8. Det har visat sig att den franska översättningen av 1999-års upplaga av "Archeology in Egypt" är utgiven av förlaget "ABC International" och inte av "KLC". Gör ändringen i databasen! Lös följande med XQuery i DB2 11.1! Databasen bookdb skall användas. 9. Ta fram information om böckerna i databasen! Resultatet skall ha följande struktur: <Resultat> <Språk namn="" antalböcker="" /> <Språk namn="" antalböcker="" /> <Språk namn="" antalböcker="" /> </Resultat> Obs! Attributet antalböcker anger hur många böcker som är skrivna på (inte översatta till) det språket. 24 (34)

Inlupp 5 - Oracle & XML Krävs för betyget E Att träna på SQL/XML. Att jämföra standarden med en produktspecifik implementation. Uppgift Lös följande frågor med SQL i Oracle 12c! Databasen bookdb (tabellerna i schemat bookdb) skall användas. 1. Vilka böcker har flera utgåvor (editions)? Resultatet skall följa reglerna i följande DTD: <!ELEMENT Resultat (Bok*)> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED> 2. Vilka böckers översättningar har publicerats av varje förlag? Resultatet skall vara ett XML-dokument som följer reglerna i följande DTD: <!ELEMENT Resultat (Förlag+)> <!ELEMENT Förlag (Bok*)> <!ATTLIST Förlag Namn CDATA #REQUIRED Land CDATA #REQUIRED> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED Genre CDATA #IMPLIED> 3. Vilka böcker har varje författare skrivit? Resultatet skall vara ett XML-dokument som följer reglerna i följande XML Schema: <schema xmlns="http://www.w3.org/2001/xmlschema"> <element name="alla"> <complextype> <sequence> <element name="författare" maxoccurs="unbounded"> <complextype> <all> <element name="bok" maxoccurs="unbounded"> <complextype> <attribute name="titel" type="string" use="required"/> <attribute name="originalspråk" type="string" use="required"/> <attribute name="genre" type="string" /> </complextype> </element> </all> <attribute name="namn" type="string" use="required"/> <attribute name="land" type="string" use="required"/> </complextype> </element> </sequence> </complextype> </element> </schema> 4. Ta fram namn och land på författare till böcker som har översatts till ryska! Resultatet skall ha två kolumner. 25 (34)

5. Den senaste upplagan (edition) av boken "Encore une fois" har översatts till norska och kostar 200 kronor. Den är utgiven av förlaget KLC. Gör ändringen i databasen! 6. Ta fram följande information om samtliga böcker: titel, originalspråk, genre, antal upplagor, antal olika språk boken finns tillgänglig i, antal författare och året då den tidigaste upplagan kom. Resultatet skall vara en tabell med sju kolumner. 7. Ta fram information om på vilka språk varje förlag har böcker! Resultatet skall ha följande struktur: <Resultat> <Förlag namn="" land=""> <Språk>språknamnet</Språk> <Språk>språknamnet</Språk> </Förlag> <Förlag namn="" land=""> <Språk>språknamnet</Språk> <Språk>språknamnet</Språk> </Förlag> </Resultat> 8. Det har visat sig att den franska översättningen av 1999-års upplaga av "Archeology in Egypt" är utgiven av förlaget "ABC International" och inte av "KLC". Gör ändringen i databasen! Lös följande med XQuery i Oracle 12c! Databasen (schemat) bookdb skall användas. 9. Ta fram information om böckerna i databasen! Resultatet skall ha följande struktur: <Resultat> <Språk namn="" antalböcker="" /> <Språk namn="" antalböcker="" /> <Språk namn="" antalböcker="" /> </Resultat> Obs! Attributet antalböcker anger hur många böcker som är skrivna på (inte översatta till) det språket. 26 (34)

Inlupp 6 - SQL Server & XML Krävs för betyget E Att träna på en produktspecifik lösning för hantering av XML i en relationsdatabas. Att reflektera över SQL/XML och vilka för- och nackdelar SQL/XML har jämfört med SQLXML. Uppgift Lös följande frågor med SQL i SQL Server 2016! Databasen bookdb skall användas. 1. Vilka böcker har flera utgåvor (editions)? Resultatet skall följa reglerna i följande DTD: <!ELEMENT Resultat (Bok*)> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED> 2. Vilka böckers översättningar har publicerats av varje förlag? Resultatet skall vara ett XML-dokument som följer reglerna i följande DTD: <!ELEMENT Resultat (Förlag+)> <!ELEMENT Förlag (Bok*)> <!ATTLIST Förlag Namn CDATA #REQUIRED Land CDATA #REQUIRED> <!ELEMENT Bok EMPTY> <!ATTLIST Bok Titel CDATA #REQUIRED Genre CDATA #IMPLIED> 3. Vilka böcker har varje författare skrivit? Resultatet skall vara ett XML-dokument som följer reglerna i följande XML Schema: <schema xmlns="http://www.w3.org/2001/xmlschema"> <element name="alla"> <complextype> <sequence> <element name="författare" maxoccurs="unbounded"> <complextype> <all> <element name="bok" maxoccurs="unbounded"> <complextype> <attribute name="titel" type="string" use="required"/> <attribute name="originalspråk" type="string" use="required"/> <attribute name="genre" type="string" /> </complextype> </element> </all> <attribute name="namn" type="string" use="required"/> <attribute name="land" type="string" use="required"/> </complextype> </element> </sequence> </complextype> </element> </schema> 4. Ta fram namn och land för författare till böcker som har översatts till ryska! Resultatet skall ha två kolumner. 27 (34)

5. Den senaste upplagan (edition) av boken "Encore une fois" har översatts till norska och kostar 200 kronor. Den är utgiven av förlaget KLC. Gör ändringen i databasen! 6. Ta fram följande information om samtliga böcker: titel, originalspråk, genre, antal upplagor, antal olika språk boken finns tillgänglig i, antal författare, och året då den tidigaste upplagan kom. Resultatet skall vara en tabell med sju kolumner. 7. Ta fram information om på vilka språk varje förlag har böcker! Resultatet skall ha följande struktur: <Resultat> <Förlag namn="" land=""> <Språk>språknamnet</Språk> <Språk>språknamnet</Språk> </Förlag> <Förlag namn="" land=""> <Språk>språknamnet</Språk> <Språk>språknamnet</Språk> </Förlag> </Resultat> 8. Det har visat sig att den franska översättningen av 1999-årsupplagan av "Archeology in Egypt" är utgiven av förlaget "ABC International" och inte av "KLC". Gör ändringen i databasen! 28 (34)

Inlupp 7 - Artiklar om frågespråk för SSD & XML, samt om XML-baserade språk Krävs för betyget E Att utöka kunskaperna om bakgrunden och historiken till XML-frågespråk och användningsområden för XML. Att reflektera över olika designval i framtagningen av frågespråk som XQuery. Uppgift Läs igenom materialet om XML-frågespråk, RDF/RDFS och om XML-baserade språk och skriv en reflektion på minst en halv A4-sida (och max två A4-sidor) om ett av följande ämnen. Flera relevanta artiklar och länkar finns i Canvas under Filer och under Länkar (från huvudsidan), men man kan även söka själv efter annat material om man vill. A. Vilka nackdelar/svagheter har XQuery FLWOR jämfört med andra frågespråk? Vad saknas? Är det något som gör språket svåranvänt? Hur borde språket vidareutvecklas? B. Vad finns det för för- och nackdelar med att ha ett specialiserat frågespråk för ett specifikt XML-baserat språk som t ex RDF XML, MathML eller SVG? Varför finns det inte så många sådana frågespråk? C. XQuery 3 har en hel del ny funktionalitet jämfört med XQuery 1. Beskriv några utvalda nyheter i XQuery 3 och resonera kring deras nödvändighet/nytta jämfört med funktionaliteten som finns i XQuery 1. Diskutera vilka behov dessa nyheter tillfredsställer eller inte tillfredsställer. Man kan också välja att diskutera nyheter i XPath 3 jämfört med XPath 2 om man föredrar det. D. JSON är ett populärt format som är jämförbart med XML. Diskutera skillnaderna mellan XML och JSON och speciellt med fokus på frågespråk. Finns det ett behov av att ha ett specialiserat frågespråk för JSON (som JSONiq)? Varför? Skulle man kunna tänka sig att hantera JSON på något annat sätt utan att behöva ett helt nytt frågespråk? 29 (34)

Inlupp 8 - Extra uppgifter för betyget D Krävs för betyget D (utöver det som krävs för E) Att höja färdigheterna i användningen av XML-frågespråk. Uppgift Lös följande med XQuery i XQuisitor eller BaseX! XML-filerna books.xml och publishers.xml skall användas. 1. Vilka författare och vilka förlag tillhör varje land? Resultatet skall ha följande struktur: <Länder> <Land namn=""> <Författare namn="" /> <Författare namn="" /> </Land> <Land namn=""> <Förlag namn="" /> <Förlag namn="" /> </Land> <Land namn=""> <Förlag namn="" /> <Förlag namn="" /> <Författare namn="" /> <Författare namn="" /> </Land> </Länder> Alltså: Varje land har noll eller flera författare och noll eller flera förlag, men minst ett subelement. 2. Ta fram information om böckerna enligt följande regel: Om en bok är thriller eller science fiction är den bra, annars är den dålig. Om genren är okänd är den dock oklar. Resultatet skall ha följande struktur: <Böcker> <Dålig>bokens titel</dålig> <Bra>bokens titel</bra> <Dålig>bokens titel</dålig> <Oklar>bokens titel</oklar> <Bra>bokens titel</bra> </Böcker> 30 (34)

Lös följande med SQL i DB2 11.1 och i SQL Server 2016! Databasen bookdb skall användas. 3. Hur många böcker finns det i varje genre och på vilka språk? Resultatet skall ha följande struktur: <Resultat> <Genre namn="" antalböcker=""> <Språk>språkets namn</språk> <Språk>språkets namn</språk> </Gerne> <Genre namn="" antalböcker=""> <Språk>språkets namn</språk> <Språk>språkets namn</språk> </Gerne> </Resultat> Obs! Både originalspråk och översättningsspråk är relevanta för denna uppgift. Lös följande med SQL i Oracle 12c och i SQL Server 2016! Databasen bookdb skall användas. 4. Hur många förlag finns det i varje stad? Gruppera städerna per land! Resultatet skall ha följande struktur: <Resultat> <Land namn=""> <Stad namn="" antalförlag=""/> <Stad namn="" antalförlag=""/> </Land> <Land namn=""> <Stad namn="" antalförlag=""/> <Stad namn="" antalförlag=""/> </Land> </Resultat> 31 (34)

Inlupp 9 - Extra uppgifter för betyget C Krävs för betyget C (utöver det som krävs för D) Att höja färdigheterna i användningen av XML-frågespråk. Uppgift Lös följande med SQL i DB2 11.1 och i SQL Server 2016! Databasen cardb skall användas. 1. Vem äger bilar i varje färg? Resultatet skall ha följande struktur: <Resultat> <Färg namn=""> <Person namn="" antalarbetsgivare="" antalanställningar="" /> <Person namn="" antalarbetsgivare="" antalanställningar="" /> </Färg> <Färg namn=""> <Person namn="" antalarbetsgivare="" antalanställningar="" /> <Person namn="" antalarbetsgivare="" antalanställningar="" /> </Färg> </Resultat> 2. Vem är anställd just nu av varje arbetsgivare? Visa arbetsgivarens namn, personens namn, anställningens längd hittills i dagar och antal bilar som personen äger (även noll)! Resultatet skall ha fyra kolumner och en rad per aktuell anställning. Lös följande med SQL i Oracle 12c och i SQL Server 2016! Databasen cardb skall användas. 3. Var jobbar ägarna till de olika bilmärkena? Resultatet skall ha följande struktur: <Resultat> <Märke namn=""> <Företag namn="" antalanställdabilägare=""/> <Företag namn="" antalanställdabilägare=""/> </Märke> <Märke namn=""> <Företag namn="" antalanställdabilägare=""/> <Företag namn="" antalanställdabilägare=""/> </Märke> </Resultat> Obs! Attributet antalanställdabilägare skall ange antal personer som är anställda av det aktuella företaget och som äger minst en bil av det aktuella märket. 4. Vilka företag har aldrig anställt någon som äger en NISSAN? Resultatet skall ha en kolumn: företagsnamn. 32 (34)