Félig-strukturált adatmodell (Semi-structured data model)

Hasonló dokumentumok
Általános lekérdezési feladatok

A szoftver és hardverfüggetlen adatbázis

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

Adatkezelési mőveletek az XML nyelvben XQuery - XML dokumentumok lekérdezésére szolgáló lekérdezınyelv kifejezı ereje az OQL nyelvével egyenértékő.

5. téma XML DB. Az adatkezelés és XML kapcsolata. Miért fontos az XML használata az adatbázis kezelésben?

XML és XSLT (a színfalak mögül)

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Az XML Bevezetés. Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Utolsó módosítás:

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

HTML. Dr. Nyéki Lajos 2016

XPath 1.0. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar Utolsó módosítás: szeptember 5.

Lekérdezések az SQL SELECT utasítással

Az XML szabvány. Az XML rövid története. Az XML szabvány

Web-fejlesztés NGM_IN002_1

Adatbázis rendszerek 7. előadás State of the art

Az XML 1.0 szabvány. tanulmány. Készítette: Mészáros Tamás. Budapest, BME Méréstechnika és Információs Rendszerek Tanszék

BASH script programozás II. Vezérlési szerkezetek

Az XML dokumentumok adatmodellje

DTD Dokumentumtípus definició

Az XML alapnyelv. dr. Paller Gábor. XML technológiák

XML. Document Type Definitions (DTD) XML séma

XPath. dr. Paller Gábor. XML technológiák

34. Elsődleges kulcs megadása XMLSchema-ban Idegen kulcs megadása XMLSchema-ban Típusok kategóriái és saját típus megadásának

INFORMATIKA ÁGAZATI ALKALMAZÁSAI. Az Agrármérnöki MSc szak tananyagfejlesztése TÁMOP /1/A

Az XML alapjai BME VIK BSc. Intelligens Rendszerek ágazat, Kooperatív rendszerek labor

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

XML adatkezelés. 11. témakör. Az XQuery nyelv alapjai. XQuery. XQuery célja egy imperatív lekérdező nyelv biztosítása. XQuery.

Tudásalapú információ-kereső rendszerek elemzése és kifejlesztése

Webes űrlapok és az XForms ajánlás

Adatbázisok* tulajdonságai

Multimédia 2017/2018 II.

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Lekérdezések az SQL-ben 1.rész

Lekérdezések az SQL-ben 1.rész

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

Bevezetés: az SQL-be

SQL PÉLDATÁR. készült a PTE TTK Iskolai informatika III. kurzus teljesítésére

Gyakorlás: Hozzunk létre egy Alkalmazottak táblát AZO szám, Részleg szöveg, Munkakör szöveg és BelépésDátuma dátum típussal.

ADATBÁZISOK gyakorlat: SQL 2. rész SELECT

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatmodellezés. 1. Fogalmi modell

XML avagy az univerzális információelérés álma

XML EXtensible Markup Language

Az XML kidolgozásakor a fejlesztés szempontjait tíz pontban foglalták össze:

Informatikai alapismeretek Földtudományi BSC számára

Szerver oldali Java programozás /II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése.

Adatbázismodellek. 1. ábra Hierarchikus modell

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Adatbázis, adatbázis-kezelő

30 MB INFORMATIKAI PROJEKTELLENŐR

Java II. I A Java programozási nyelv alapelemei

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Programozás. Adatbázis-kezelés (alapok) Fodor Attila

A RAKTÁRI JEGYZÉKEK SZÁMÍTÓGÉPES FELDOLGOZÁSA: ADATMODELLEZÉS ÉS SZABVÁNYOK

Adatbázis Rendszerek

Adatbázis rendszerek 7. Matematikai rendszer amely foglal magában:

AWK programozás, minták, vezérlési szerkezetek

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

Intelligens közlekedési rendszerek (ITS)

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

1. Az XML és XHTML nyelvek. Az XML leíró nyelv Szabályok XHTML írásra. Tartalom Az XML leíró nyelv

modell, amiben csak bináris sok-egy kapcsolatok (link, memberowner,

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

LEKÉRDEZÉSEK SQL-BEN. A relációs algebra A SELECT utasítás Összesítés és csoportosítás Speciális feltételek

Célkitűzések Az Oracle10 g felépítésének, használatának alapszíntű megismerése

5.előadás: Adatbázisok-I. dr. Hajas Csilla (ELTE IK)

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Relációs algebra 1.rész alapok

Adatbázisok II. rész

Orvos Bejelentő Program (OBP) rekordkép 2. verzió XML formátum

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

Adatbázis rendszerek. dr. Siki Zoltán

KML Keyhole Markup Language

Multimédiás adatbázisok

Szemantikus Web Semantic Web A szemantikus web alkalmas megközelítés, illetve megfelel nyelvekkel, eszközökkel támogatja az intelligens információs

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved.

ABR ( Adatbázisrendszerek) 1. Előadás : Műveletek a relációs medellben

XML sémanyelvek Jeszenszky, Péter

1. fejezet Bevezetés a web programozásába (Balássy György munkája) Az internet működése... 11

Adatbázisok elmélete 9. előadás

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Adatbázisok tavaszi félév Vizsgatételsor

A szemantikus világháló oktatása

AWK programozás Bevezetés

Adatbázisok I. Az SQL nyelv

Web programozás I. 4. előadás

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

TSIMMIS egy lekérdezés centrikus megközelítés. TSIMMIS célok, technikák, megoldások TSIMMIS korlátai További lehetségek

Az adatok a vállalat kulcsfontosságú erőforrásai. Az információs rendszer adatai kezelésének két alapvető változata:

XML az Extensible Markup Language (Kiterjeszthet jelöl nyelv) szavak rövidítése. XML a World Wide Web Konzorcium (W3C) ajánlása, amely kompatíbilis

AB1 ZH mintafeladatok. 6. Minősítse az állításokat! I-igaz, H-hamis

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

Többfelhasználós és internetes térkép kezelés, megjelenítés

SQL bevezetés. Select-From-Where záradékok Több relációt tartalmazó lekérdezések Alkérdések

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Átírás:

Félig-strukturált adatmodell 2010.01.07. 1 Félig-strukturált adatmodell (Semi-structured data model) dr. Kiss Attila Habilitációs előadása Forrás: http://people.inf.elte.hu/kiss/10bir/10bir.htm

Félig-strukturált adatmodell 2010.01.07. 2 Az előadás vázlata 1. Általános információk 2. Bevezető: Félig-strukturált, XML adatbázisok 3. Az XML fogalmai 4. Az XML DTD sémája 5. Az XPath lekérdező nyelv 6. Az XQuery lekérdező nyelv 7. Összefoglalás

1. Általános információk 2. Bevezető: Félig-strukturált, XML adatbázisok 3. Az XML fogalmai 4. Az XML DTD sémája 5. Az XPath lekérdező nyelv 6. Az XQuery lekérdező nyelv 7. Összefoglalás Félig-strukturált adatmodell 2010.01.07. 3

Félig-strukturált adatmodell 2010.01.07. 4 Tematika Előadás: XML alapok: XML, DTD, XPath, XQuery Gyakorlat: XML-kezelő eszközök: XML Spy http://www.altova.com/xmlspy.html Az Oracle XML kezelése

Félig-strukturált adatmodell 2010.01.07. 5 Szükséges előismeretek Relációs adatbázisok Lekérdező nyelvek Irányított, címkézett gráfok, fák Reguláris nyelvek

Félig-strukturált adatmodell 2010.01.07. 6 Előadáshoz kapcsolódó anyagok Az előadás diái a kurzus oldaláról letölthetők: http://people.inf.elte.hu/kiss/09ab2/ Adatbázisrendszerek alapvetés könyv: 11.2 fejezet: XML (520-528 oldal), 11.3 fejezet: DTD (528-535 oldal), 12.1 fejezet: XPath (553-560 oldal), 12.2 fejezet: XQuery (565-579 oldal) Oracle XML DB: XML típusú tábla, XML típusú attribútum, XMLType(), XMLElement(), getclobval(), XMLQuery(), XMLTable() függvények használata: xml.ppt (37,39, 43-45, 50-51, 54-58 oldal) Az érdeklődőknek további, a részleteket jobban megvilágító, de nem kötelező segédanyagok: xml.pdf, xml07-oracle.ppt

1. Általános információk 2. Bevezető: Félig-strukturált, XML adatbázisok 3. Az XML fogalmai 4. Az XML DTD sémája 5. Az XPath lekérdező nyelv 6. Az XQuery lekérdező nyelv 7. Összefoglalás Félig-strukturált adatmodell 2010.01.07. 7

Félig-strukturált adatmodell 2010.01.07. 8 Relációs adatbázisok Strukturált adatok Rögzített adatbázisséma (táblák rendszere) Megbízható, gyors SQL lekérdező nyelv

Félig-strukturált adatmodell 2010.01.07. 9 A relációs adatmodell korlátai Hogyan tárolnánk ezt relációs adatbázisban?

Félig-strukturált adatmodell 2010.01.07. 10 A relációs adatmodell korlátai Miből áll ez az oldal? 1. SZÖVEG 2. KÉP 3. TÁBLÁZAT 4. FORMÁZÁS 5. GRAFIKON 6. HIPERLINK

Félig-strukturált adatmodell 2010.01.07. 11 A relációs adatmodell korlátai A relációs adatbázisban tároláshoz ismernünk kellene előre a weboldalak belső szerkezetét, DE a szereplő tartalmak változnak, nem egységesek. ÖTLET: a táblákba kényszerítés helyett az adatok maguk írják le a tartalmukat és a formázásukat! Az XHTML forráskód részlete

Félig-strukturált adatmodell 2010.01.07. 12 A weboldalak HTML nyelve A HTML egy jelölő nyelv (markup language). Egy HTML oldal jelölőkből (tag), attribútumokból és adatokból áll. A HTML az oldal megjelenítését (betűtípus, szín, stb.) (style) definiálja.

Félig-strukturált adatmodell 2010.01.07. 13 Egy egyszerű HTML kód <html> <body> <h1>tom Sawyer weboldala</h1> <img src="tom.jpg"> <p> Hello! Tudtad, hogy <b>huckleberry Finn</b> a legjobb barátom? Azért néha <b>becky Thatcher</b>-t is kedvelem... <p> <font color = "red"> Ezeket szeretem a legjobban: <ul> <li> Hajókázni a Mississippin <li> Kincset keresni <li> Kerítést festeni </ul> </font> Ha hasonló dolgok érdekelnek, írjál a <a href="mailto:tom@mark.twain">tom@mark.twain</a> címemre! </body></html>

A HTML megjelenítése böngészővel Félig-strukturált adatmodell 2010.01.07. 14

Félig-strukturált adatmodell 2010.01.07. 15 Hogyan nyerhető ki az információ a HTML oldalakból? Melyek Tom Sawyer hobbijai? Meg kell találni az adott személy oldalát Ki kell nyerni szükséges információt az oldalról Problémák: Honnan tudjuk, hogy egy oldal személyhez tartozik? Hogyan nyerjük ki az információt, ha mindenki más stílusú oldalon tárolja az adatait? Honnan tudjuk, hogy a hobbi szó jelentése annak felel meg, hogy mit szeret csinálni?

Félig-strukturált adatmodell 2010.01.07. 16 Két megközelítés Ha a weben található információs egy előre ismert sémájú adatbázisban lenne tárolva, akkor a problémákat könnyen meg lehetne oldani. De nem így van tárolva akkor most mit kell tenni? 1. Adatbányászat, mesterséges intelligencia alkalmazása: Intelligens technikákkal próbáljuk felismerni a HTML oldalon tárolt információt a környezetből, a formázásból, a hivatkozásokból. 2. Adatbázisos megközelítés: Használjunk XML-t a tartalom leírására. Ezáltal a web egy félig-strukturált XML adatbázissá válik, amelyből az információ az XML lekérdező nyelveivel (Xpath, XQuery) egyszerűen kinyerhető.

Tom Sawyer adatai XML fájlban <Személy xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:nonamespaceschemalocation="e:\habil2009\vedes\tom.xsd"> <név>thomas Sawyer</név> <email cím="tom@mark.twain"/> <kép hely="tom.jpg"/> <leírás>hello! Tudtad, hogy Huckleberry Finn a legjobb barátom? Azért néha Becky Thatcher-t is kedvelem...</leírás> <hobbi megnevezés="hajókázni a Mississippin"/> <hobbi megnevezés="kincset keresni"/> <hobbi megnevezés="kerítést festeni"/> <barát> <Személy> <név>huckleberry Finn</név> <email cím="finn@mark.twain"/> </Személy> </barát> <kedveli> <Személy> <név>becky Thatcher</név> </Személy> </kedveli> </Személy> Félig-strukturált adatmodell 2010.01.07. 17

Félig-strukturált adatmodell 2010.01.07. 18 Az XML használata rohamosan terjed A Microsoft Office 2007 dokumentumok alapformátuma az XML. (.docx,.xlsx,.pptx) APEH Tájékoztató a járulékbevallások (0608, 06081K, 06083) kezeléséről (2006.03.22.): Az olyan típusú nyomtatványokat - ilyen a 0608, 06083, 06081K - amelyek egy foglalkoztató (pl. 0608A), és ismeretlen számú foglalkoztatott (pl. 0608M) adatait tartalmazzák, kizárólag XML formában, elektronikus úton lehet eljuttatni az APEH-hez. Szakmaspecifikus XML nyelvek: Matematikai formulák: MathML Ábrák: SVG Webes űrlapok: XForms Multimédia prezentációk: SMIL Hangvezérlés: VoiceXML Dokumentumok: OpenDocument, DocBook Földrajzi megjelenítés: KML Génchipek: MINiML, MAGE-ML

Az XML története Az Extensible Markup Language (XML, kiterjeszthető leíró nyelv) a W3C által ajánlott általános célú leíró nyelv speciális célú leíró nyelvek létrehozására. http://www.w3.org/xml/ Előzménye: GML (1969) Generalized Markup Language SGML (1986) Standard Generalized Markup Language HTML (1989) HyperText Markup Language HTML4.0 XML SGML Jelenleg két XML verzió létezik: Az XML 1.0-t 1998-ban definiálták. Jelenleg az 5. kiadás az aktuális. 2006. szeptember: XML 1.1. Jelenleg a 2. kiadás az aktuális. Magyar XML összefoglaló és Oracle XML összefoglaló található az alábbi címen: http://ablinux.inf.elte.hu/indexxml.html Félig-strukturált adatmodell 2010.01.07. 19

Félig-strukturált adatmodell 2010.01.07. 20 Mi az XML röviden? Az XML dokumentum HTML dokumentumra hasonlít. De XML-ben tetszőleges jelölőnév (tag) használható. Például: <személy> <név> Kiss Attila</név> <tel> 372-2500-8479 </tel> <tel> 363-4797 </tel> <email> kiss@inf.elte.hu </email> </személy> Nagy ügy! Ennyi az egész?

1. Általános információk 2. Bevezető: Félig-strukturált, XML adatbázisok 3. Az XML fogalmai 4. Az XML DTD sémája 5. Az XPath lekérdező nyelv 6. Az XQuery lekérdező nyelv 7. Összefoglalás Félig-strukturált adatmodell 2010.01.07. 21

Félig-strukturált adatmodell 2010.01.07. 22 Az XML alapfogalmai Elemek (Elements) Attribútumok (Attributes) Entitások (Entities) Névterek (Namespaces) XML deklaráció (XML declaration) Feldolgozási instrukciók (Processing Instruction) Megjegyzések (Comments) CDATA szekciók (CDATA sections)

Félig-strukturált adatmodell 2010.01.07. 23 Elemek (Elements) Egy XML dokumentumban egy nyitó és megfelelő záró jelölő (tag) közötti részt elemnek hívjuk. elem elem <személy> <név> Kiss Attila </név> <tel> 02 444 7777 </tel> <tel> 051 011 022 </tel> <email> kiss@inf.elte.hu </email> </személy> nem elem

Félig-strukturált adatmodell 2010.01.07. 24 Attribútumok (Attributes) Egy nyitó jelölő (tag) tartalmazhat attribútumokat. Az attribútum értékét idézőjelek közé kell tenni. <szócikk> <szó nyelv = en > cheese</szó> <szó nyelv = fr > fromage</szó> <szó nyelv = hu > sajt </szó> <jelentés> A sajt egy tejtermék.</jelentés> </szócikk>

Félig-strukturált adatmodell 2010.01.07. 25 Entitások (Entities) Az entitás egy rövidítés, egy bonyolult vagy hosszú szöveges adat megnevezésére. Entitások szabadon definiálhatók és beépített entitások is léteznek. Az entitások bárhol használhatók a dokumentumban. Hivatkozás az entitásra: &entitásnév; Elemzéskor az entitás helyére behelyettesítődik az a szöveg, amit rövidít.

Félig-strukturált adatmodell 2010.01.07. 26 Példa <feladat> Igaz-e, hogy 2+3 < 6? </feladat> Előre definiált entitások: < < > > & & &apos; "

Félig-strukturált adatmodell 2010.01.07. 27 Névterek (Namespaces) Mi a névtér? Jelőlőnevek (tag-ek) egyedivé tétele, hogy dokumentumok összefésülésekor elkerülhessük a névütközést. A névterekkel egyedivé tett jelölőket, attribútumneveket minősített neveknek (qualified names) (QNames) hívjuk: Például isbn:name, xlink:href

Félig-strukturált adatmodell 2010.01.07. 28 Névterek (Namespaces) Névteret egy elem nyitó jelölőjének attribútumaként definiálhatjuk: xmlns:névtér_elnevezés="valamilyen URI" Az alapértelmezett névteret a következő módon definiáljuk xmlns="url" URI (Uniform Resource Identifier) URL (Uniform Resource Locator)

Félig-strukturált adatmodell 2010.01.07. 29 Példa <cikk xmlns= http://ecommerce.example.org/schema xmlns:játék= http://ecommerce.example.org/toy > <név>zsákbamacska</név> <tartalma> <játék:cikk> <játék:név>plüssmacska</játék:név> </játék:cikk> </tartalma> </cikk> Szemantika: milyen URL-en található a séma

Félig-strukturált adatmodell 2010.01.07. 30 További XML fogalmak XML deklaráció <?xml version= 1.0 standalone= yes encoding= UTF-8?> Feldolgozási instrukció Az alkalmazásokhoz, nem az elemző számára kell <?xml-stylesheet href= book.css type= text/css?>

Félig-strukturált adatmodell 2010.01.07. 31 További XML fogalmak Megjegyzések <! ez egy megjegyzés --> CDATA szekció Olyan blokk, amelynek tartalmát az elemző figyelmen kívül hagyja <![CDATA[<nyitó>ez hibás elem lenne az elemző számára</záró>]]>

Egy teljes XML dokumentum <?XML version ="1.0" encoding="utf-8" standalone="no"?> Kötelező <!DOCTYPE névjegyzék SYSTEM "http://people.inf.elte.hu/kiss/névjegyzék.dtd"> <névjegyzék> <!--telefonkönyv--> Opcionális <személy> <név> Kiss Attila </név> <tel> 372-2500-8479 </tel> <tel> 363-4797 </tel> <email> kiss@inf.elte.hu </email> </személy> </névjegyzék> Félig-strukturált adatmodell 2010.01.07. 32

Félig-strukturált adatmodell 2010.01.07. 33 XML szabályok (1.) Az XML sorrend-érzékeny, vagyis a következők különböznek: <szócikk> <szó language = en > cheese</szó> <szó language = fr > fromage</word> </szócikk> <szócikk> <szó language = fr > fromage</szó> <szó language = en > cheese</szó> </szócikk> Az XML kisbetű-nagybetű érzékeny, vagyis a következők különböznek: <személy>, <Személy>, <SZEMÉLY>

Félig-strukturált adatmodell 2010.01.07. 34 XML szabályok (2.) A jelölők párokat képeznek <dátum>...</dátum> A jelölő párokat helyesen kell egymásba ágyazni Jó: <dátum>... <nap>... </nap>... </dátum> Rossz: <dátum>... <nap>... </dátum>... </nap> Rossz: <dátum>... </Dátum> A szöveget nem tartalmazó elem rövidíthető: <személy vnév= Kiss knév= Attila /> <személy vnév= Kiss knév= Attila ></személy >

Félig-strukturált adatmodell 2010.01.07. 35 XML szabályok (3.) Az XML dokumentum legfelső szintjén csak egyetlen elem lehet, amit gyökér elemnek hívunk. <?xml version = 1.0?> <Kérdés>Ez így szabályos.</kérdés> <?xml version = 1.0?> <Kérdés> Ez is szabályos? </Kérdés> <Válasz> Nem. </Válasz>

Félig-strukturált adatmodell 2010.01.07. 36 Jólformált dokumentumok (Well-Formed Documents) Egy XML dokumentum jólformált (wellformed, ha kielégíti az előző 3 szabályt, továbbá jelölőn belül egy attribútum nem ismétlődhet.

Félig-strukturált adatmodell 2010.01.07. 37 Az XML feldolgozási modellje Fizikai szinten az XML dokumentum nem más mint egy sima szöveges állomány, vagyis valamilyen (UTF-8/16) karakterkészletből választott jólformált karaktersorozat. A strukturálatlan karaktersorozatokat a feldolgozó alkalmazások általában nem tudják hatékonyan kezelni. Az XML elemek, attribútumok beágyazása egy természetes logikai fa-struktúrát definiál.

Félig-strukturált adatmodell 2010.01.07. 38 Az XML dokumentumfa személy név tel tel email Kiss Attila 372-2500-8479 363-47-97 kiss@inf.elte.hu Az XML dokumentumok absztrakt modelljei az egymásba ágyazásnak megfelelő, gyökeres, irányított, címkézett fa. Azonosítók és hivatkozások (ID és IDREFS) használata esetén fa helyett tetszőleges gráf keletkezhet.

Félig-strukturált adatmodell 2010.01.07. 39 XML dokumentum feldolgozása Az XML feldolgozó (Processor) (XML parser) előállítja a jólformált XML dokumentumhoz tartozó gráfot. Az XML alkalmazások ezen a gráfon végzik el a műveleteket. XML feldolgozó például az Apache Xerces: http://xerces.apache.org/xerces2-j/

Félig-strukturált adatmodell 2010.01.07. 40 Az XML és a relációs adatbázisok Tetszőleges relációs adatbázis reprezentálható XML dokumentumként.

1. Általános információk 2. Bevezető: Félig-strukturált, XML adatbázisok 3. Az XML fogalmai 4. Az XML DTD sémája 5. Az XPath lekérdező nyelv 6. Az XQuery lekérdező nyelv 7. Összefoglalás Félig-strukturált adatmodell 2010.01.07. 41

Félig-strukturált adatmodell 2010.01.07. 42 A DTD sémaleíró A DTD (Document Type Description) sémaleíró meghatározza az XML dokumentumok szerkezetét. DTD használatával specifikáljuk, hogy mikor érvényes egy XML dokumentum. A DTD azt mondja meg, hogy mikor legális egy elem, illetve milyen beágyazások megengedettek. A DTD kifejező ereje nem elég típusok definiálására.

Félig-strukturált adatmodell 2010.01.07. 43 Mire jó a DTD? A DTD segítségével lehet az XML speciális nyelveit megadni. Például: FOAF (közösségi háló - friend of a friend) SVG (skálázható vektorgrafika) WML (HTML mobil eszközökre) SOAP (üzenetküldés webszolgáltatásokhoz) XHTML (jólformált HTML)

Félig-strukturált adatmodell 2010.01.07. 44 <személy> Telefonkönyv DTD sémája <név> Kiss Attila </név> <bece> Attila </bece> <cím>1117 Budapest </cím> <cím> Pázmány Péter 1/C</cím> <tel> 372-500-8479 </tel> <fax> 372-500-8480 </fax> <tel> 363-47-97 </tel> <email> kiss@inf.elte.hu </email> </személy> Pontosan 1 név Legfeljebb 1 becenév Annyi címsor, amennyi csak szükséges Telefonok, faxok keverve Legalább 1 email

Félig-strukturált adatmodell 2010.01.07. 45 A struktúra specifikálása Mit tartalmazhat egy személy elem? DTD-ben a megengedett tartalmakat definiáljuk (content model). A specifikálás reguláris kifejezésekkel történik.

Félig-strukturált adatmodell 2010.01.07. 46 Miből állhat egy személy elem? A kifejezés a következő lesz: név, bece?, cím*, (tel fax)*, email+ Ezek jelentése a következő: név = 1 név elem szükséges bece? = a bece elem opcionális, 0 vagy 1 bece elem lehet. név, bece? = A név elem után következik egy opcionális bece elem.

Félig-strukturált adatmodell 2010.01.07. 47 Miből állhat egy személy elem? név, bece?, cím*, (tel fax)*, email+ cím* = 0 vagy több cím elem tel fax = egy tel vagy egy fax elem (tel fax)* = 0 vagy több ismétlődése a tel vagy fax elemeknek email+ = 1 vagy több email elem

Félig-strukturált adatmodell 2010.01.07. 48 A model reguláris kifejezéseiben a következők használhatók a a elem e1? 0 vagy 1 előfordulása az e1 kifejezésnek e1* 0 vagy több előfordulása az e1-nek e1+ 1 vagy több előfordulása az e1-nek e1,e2 Az e2 az e1 után következik e1 e2 e1 vagy e2 (e) Zárójelezés #PCDATA Nem elemzendő szöveg EMPTY Nincs tartalom ANY Tetszőleges tartalom (#PCDATA a 1.. a n )* Vegyes tartalom

Félig-strukturált adatmodell 2010.01.07. 49 A telefonkönyv DTD sémája <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE telefonkönyv [ <!ELEMENT telefonkönyv (személy*)> <!ELEMENT személy (név, bece?, cím*, (fax tel)*, email+)> <!ELEMENT név (#PCDATA)> <!ELEMENT bece (#PCDATA)> <!ELEMENT cím (#PCDATA)> <!ELEMENT tel (#PCDATA)> <!ELEMENT fax (#PCDATA)> <!ELEMENT email (#PCDATA)> ]>

Félig-strukturált adatmodell 2010.01.07. 50 Attribútumok megadása a DTD sémában Az általános szintaxis a következő: <!ATTLIST elemnév attribútumnév1 típus1 alapérték1 attribútumnév2 típus2 alapérték2. attribútumnévn típusn alapértékn > Például: <!ATTLIST magasság mértékegység CDATA cm >

Félig-strukturált adatmodell 2010.01.07. 51 <!ATTLIST elemnév attribútumnév1 típus1 alapérték1 attribútumnév2 típus2 alapérték2. attribútumnévn típusn alapértékn > típus a következők valamelyike CDATA (en1 en2..) ID IDREF IDREFS Karaktersorozat A lista egyik tagja Egyedi azonosító Egy másik elem azonosítója Más elemek azonosítóinak listája

Félig-strukturált adatmodell 2010.01.07. 52 <!ATTLIST elemnév attribútumnév1 típus1 alapérték1 attribútumnév2 típus2 alapérték2. attribútumnévn típusn alapértékn > alapérték a következők egyike érték #REQUIRED #IMPLIED #FIXED érték Az attribútum alapértéke Az attribútumértéknek szerepelnie kell az elemben Az attribútum megadása nem kötelező Az attribútum értéke nem változtatható

Félig-strukturált adatmodell 2010.01.07. 53 Példa <!ELEMENT magasság (#PCDATA)> <!ATTLIST magasság mértékegység (cm in) #REQUIRED pontosság CDATA #IMPLIED mérhető CDATA #FIXED igen >

Azonosító (ID) és hivatkozás (IDREF) attribútumok <!DOCTYPE család [ <!ELEMENT család (személy)*> <!ELEMENT személy (név)> <!ELEMENT név (#PCDATA)> <!ATTLIST személy azon ID #REQUIRED anya IDREF #IMPLIED apa IDREF #IMPLIED gyerekei IDREFS #IMPLIED> ]> Félig-strukturált adatmodell 2010.01.07. 54

Félig-strukturált adatmodell 2010.01.07. 55 A DTD-nek megfelelő dokumentum <család> <személy azon= henry anya= diana apa= charles > <név> Henry </név> </személy> <személy azon= willi anya= diana apa= charles > <név> William </név> </személy> <személy azon= diana gyerekei= henry willi > <név> Diana </név> </személy> <személy azon= charles gyerekei= henry willi > <név> Charles </név> </személy> </család>

Félig-strukturált adatmodell 2010.01.07. 56 Entitások megadása a DTD sémában Az entitások rövidítések Az entitás belül és kívül is deklarálható. belül: <!ENTITY entitásnév "entitásérték"> kivül: <!ENTITY entitásnév SYSTEM "URI/URL">

Félig-strukturált adatmodell 2010.01.07. 57 Példa DTD: <!ENTITY ka "Kiss Attila"> <!ENTITY copyright SYSTEM "http://www.w3schools.com/dtd/entities.dtd"> XML: <author>&ka;&copyright;</author>

Félig-strukturált adatmodell 2010.01.07. 58 A DTD séma hozzárendelése a dokumentumhoz A dokumentumon belül: <?xml version="1.0"?> <!DOCTYPE család [<!ELEMENT...> ]> <család>... </család> A DTD egy külön fájlban szerepel: <!DOCTYPE család SYSTEM "család.dtd"> vagy <!DOCTYPE család SYSTEM "http://people.inf.elte.hu/kiss/család.dtd">

Félig-strukturált adatmodell 2010.01.07. 59 Érvényes dokumentumok Egy XML dokumentum érvényes egy adott DTD szerint, ha a dokumentum illeszkedik a reguláris kifejezésekre, az attribútumok típusai megfelelőek, és az azonosítók és hivatkozások használata szabályos.

Félig-strukturált adatmodell 2010.01.07. 60 XML Schema (XSD) Egy másik sémamegadási mód Többféle alaptípus használható Új típusok származtathatók Típus-kiterjesztéssel Típus-megszorítással Adatbázisszerű kulcsok fogalma Névterek használata Részletek: http://www.w3schools.com/schema

Félig-strukturált adatmodell 2010.01.07. 61 Egy DTD-nek megfelelő XML schema DTD: <!ELEMENT cikk (cím,szerző*,év, (folyóirat konferencia))> <xsd:element name= cikk type= cikktípus /> <xsd:complextype name= cikktípus > <xsd:sequence> <xsd:element name= cím type= xsd:string /> <xsd:element name= szerző minoccurs= 0 /> <xsd:element name= év /> <xsd:choice> <xsd:element name= folyóirat /> <xsd:element name= konferencia /> </xsd:choice> </xsd:sequence> </xsd:complextype> </xsd:element>

Félig-strukturált adatmodell 2010.01.07. 62 A DTD vagy XML schema diagramja A sémát diagrammal ábrázolhatjuk. A diagramon az elemek egymásba ágyazását, attribútumait adjuk meg a reguláris kifejezéseknek megfelelően. A járulékbevallás sémájának diagramja:

1. Általános információk 2. Bevezető: Félig-strukturált, XML adatbázisok 3. Az XML fogalmai 4. Az XML DTD sémája 5. Az XPath lekérdező nyelv 6. Az XQuery lekérdező nyelv 7. Összefoglalás Félig-strukturált adatmodell 2010.01.07. 63

Félig-strukturált adatmodell 2010.01.07. 64 Általános lekérdezési feladatok Az XML értékeinek szűrése, kiválasztása: navigálás, kiválasztás, információ kinyerése XML dokumentumok összefésülése, aggregálás: Összekapcsolás, aggregálás Adott sémájú XML dokumentum átalakítása másik sémájú dokumentummá: XML konstrukció A programozási felülettel a hogyant specifikáljuk. A lekérdező nyelven nem a hogyant, hanem a mit specifikáljuk.

Félig-strukturált adatmodell 2010.01.07. 65 Az XML lekérdező nyelvei XPath 2.0: Általános nyelv a navigálásra, kiválasztásra, információs kinyerésre Az XSLT, XQuery, XML Schema, alapját képezi. XSLT 2.0: XML XML, HTML, Text Átalakító script nyelv. Az XML-t például HTML formájúvá alakítja, hogy böngészővel meg lehessen jeleníteni. XQuery 1.0: XML XML Az XPath-nál bővebb lekérdező nyelv.

Félig-strukturált adatmodell 2010.01.07. 66 XPath adatmodell Az XML lekérdezései az XML fa bejárását határozzák meg. XPath kifejezéseit az XML fa alapján kell kiértékelni. Az XML fa csúcsai a következő csúcstípusúak lehetnek: Dokumentum Elem Attribútum Szöveg Instrukció Megjegyzés Névtér

Félig-strukturált adatmodell 2010.01.07. 67 Csúcsok Egy csúcsnak lehet neve, vagy értéke, vagy mindkettő egy Elem csúcsnak neve van, de értéke nincs; egy Szöveg csúcsnak nincs neve, de karaktersorozatú értéke van; egy Attribútum csúcsnak neve és értéke is van.

Félig-strukturált adatmodell 2010.01.07. 68 Csúcsok azonosítói Minden csúcsnak van egy egyedi csúcsazonosítója, ami nem módosítható.

Félig-strukturált adatmodell 2010.01.07. 69 Dokumentum sorrend A csúcsok közti rendezést a dokumentum sorrend definiálja, mely a pre-order bejárásnak felel meg. Egy szülő csúcs megelőzi a gyerekeit és attribútumait. A testvér csúcsok közül az attribútumok jönnek előbb és csak utána a más típusúak. Az attribútumok sorrendje implementáció függő.

Félig-strukturált adatmodell 2010.01.07. 70 Példák XPath lekérdezésekre <irodalom> <könyv ár= 55 > <kiadó>addison-wesley</kiadó> <szerző>serge Abiteboul</szerző> <szerző><kernév>rick</kernév> <veznév>hull</veznév> </szerző> <szerző>victor Vianu</szerző> <cím>foundations of Databases</cím> <év>1995</év> </könyv> <könyv> <kiadó>freeman</kiadó> <szerző>jeffrey D. Ullman</szerző> <cím>principles of Database and Knowledge Base Systems</cím> <év>1998</év> </könyv> </irodalom>

Félig-strukturált adatmodell 2010.01.07. 71 Az XML-fa Gyökér irodalom ár könyv könyv kiadó szerző szerző szerző cím év kiadó szerző cím év kernév veznév

/irodalom/könyv/év Gyökér irodalom ár könyv könyv kiadó szerző szerző szerző cím év kiadó szerző cím év kernév veznév /irodalom/könyv/év Eredmény: <év>1995</év> <év>1998</év> /irodalom/cikk/év eredménye üres, mert nincs cikk. Félig-strukturált adatmodell 2010.01.07. 72

Félig-strukturált adatmodell 2010.01.07. 73 //szerző Gyökér irodalom ár könyv könyv kiadó szerző szerző szerző cím év kiadó szerző cím év kernév veznév //szerző Eredmény: <szerző>serge Abiteboul</szerző> <szerző><kernév>rick</kernév> <veznév>hull</veznév> </szerző> <szerző>victor Vianu</szerző> <szerző>jeffrey D. Ullman</szerző>

Félig-strukturált adatmodell 2010.01.07. 74 /irodalom//kernév Gyökér irodalom ár könyv könyv kiadó szerző szerző szerző cím év kiadó szerző cím év kernév veznév /irodalom//kernév Eredmény: <kernév>rick</kernév>

Félig-strukturált adatmodell 2010.01.07. 75 /irodalom/könyv/szerző/text() Gyökér irodalom ár könyv könyv kiadó szerző szerző szerző cím év kiadó szerző cím év kernév veznév text() = visszaadja a szövegcsúcs értékét node() = visszaadja csúcsot name() = visszadja a jelölő nevét /irodalom/könyv/szerző/text() Eredmény: Serge Abiteboul Victor Vianu Jeffrey D. Ullman

Félig-strukturált adatmodell 2010.01.07. 76 //szerző/* Gyökér irodalom ár könyv könyv kiadó szerző szerző szerző cím év kiadó szerző cím év kernév veznév //szerző/* Eredmény: <kernév>rick</kernév> <veznév>hull</veznév> A * tetszőleges elemre illeszkedik, de szövegre, attribútumra nem.

Félig-strukturált adatmodell 2010.01.07. 77 /irodalom/könyv/@ár Gyökér irodalom ár könyv könyv kiadó szerző szerző szerző cím év kiadó szerző cím év kernév veznév /irodalom/könyv/@ár Eredmény: 55

Félig-strukturált adatmodell 2010.01.07. 78 /irodalom/könyv/szerző[kernév] Gyökér irodalom ár könyv könyv kiadó szerző szerző szerző cím év kiadó szerző cím év kernév veznév /irodalom/könyv/szerző[kernév] Eredmény: <szerző> <kernév>rick</kernév> <veznév>hull</veznév> </szerző> [kernév] igaz, ha a szerző elemnek van kernév gyereke.

Félig-strukturált adatmodell 2010.01.07. 79 További példák predikátumokra /irodalom/könyv[@ár < 60] az ára kisebb mint 60 /irodalom/könyv[szerző/kernév = "Rick"] egyik szerzőjének kerneve Rick /irodalom/könyv[szerző/text()] van szöveggel megadott szerzője /irodalom/könyv[2] a 2. könyv Pozícionáló kifejezés Aritmetikai összehasonlítás Egzisztenciális kifejezés

Félig-strukturált adatmodell 2010.01.07. 80 Lekérdezések eredményeinek kombinálása A következő halmazműveleteket lehet használni: Egyesítés:, union Metszet: intersect Kivonás: except Ezek a műveletek eltávolítják a többszörös előfordulásokat.

Félig-strukturált adatmodell 2010.01.07. 81 Tengelyek b Aktuális csúcs Elem csúcs Attribútum csúcs Gyökér bli - Szöveg

Félig-strukturált adatmodell 2010.01.07. 82 A child tengely b Az attribútumnak van szülője, de ő nem gyereke semelyik csúcsnak!

Félig-strukturált adatmodell 2010.01.07. 83 A parent tengely b

Félig-strukturált adatmodell 2010.01.07. 84 Az attribute tengely b

Félig-strukturált adatmodell 2010.01.07. 85 A descendant tengely b A leszármazott, illetve felmenő a gyerek, illetve a szülő tranzitív lezárása.

Félig-strukturált adatmodell 2010.01.07. 86 A descendant-or-self tengely b

Félig-strukturált adatmodell 2010.01.07. 87 Az ancestor tengely b

Félig-strukturált adatmodell 2010.01.07. 88 Az ancestor-or-self tengely b

Félig-strukturált adatmodell 2010.01.07. 89 A following tengely b

Félig-strukturált adatmodell 2010.01.07. 90 A following-sibling tengely b

Félig-strukturált adatmodell 2010.01.07. 91 A preceding tengely b

Félig-strukturált adatmodell 2010.01.07. 92 A preceding-sibling tengely b

Félig-strukturált adatmodell 2010.01.07. 93 XPath tengelyei (Axes) child (alapértelmezett tengely) Gyerek csúcsok. parent Szülő csúcsok. attribute Attribútum csúcsok. descendant Leszármazott csúcsok, az aktuális csúcsot nem beleértve. descendant-or-self Leszármazott csúcsok, az aktuális csúcsot is beleértve. ancestor Felmenő ősök, az aktuális csúcsot nem beleértve. ancestor-or-self Felmenő ősök, az aktuális csúcsot is beleértve. following A dokumentum sorrend szerint következő csúcsok. following-sibling A dokumentum sorrend szerint következő testvérek. preceding A dokumentum sorrend szerint megelőző csúcsok. preceding-sibling A dokumentum sorrend szerint megelőző testvérek. self Az aktuális kontextus csúcs.

Félig-strukturált adatmodell 2010.01.07. 94 Rövidítések Teljes alak root(.) /descendant-or-self::node()/ self::node() parent::node() child:: attribute:: [position() = szám] Rövidítve / //... @ [szám]

Félig-strukturált adatmodell 2010.01.07. 95 Példák rövidítésekre Hosszú alak /child::irodalom/child::könyv /child::irodalom/child::könyv/ attribute::ár /self::node()/descendant-orself::node()/child::cím /descendant-or-self::node()/ child::szerző/parent::node() Rövid alak /irodalom/könyv /irodalom/könyv/@ár /.//cím (ugyanaz mint a //cím) //szerző/..

Félig-strukturált adatmodell 2010.01.07. 96 Kontextus csúcsok Az útvonalakat egy vagy több kontextus csúcsból indítjuk el. Egy XPath lépés: cs 0 /lépés cs 0 jelöli a kontextus csúcsok sorozatát, ahonnan a navigációs lépést végrehajtuk.

Félig-strukturált adatmodell 2010.01.07. 97 Lépéssorozat Egy XPath navigációs kifejezés egy vagy több egymás utáni lépésből áll (lépés i (i>=1) ). A lépés 1 a cs 0 kontextus csúcsokból indul és cs 1 csúcsokba érkezik. Ezután cs 1 lesz a lépés 2 új kontextus csúcssorozata, és így tovább. Egy többlépéses XPath útvonal tehát így néz ki: cs 0 /lépés 1 /lépés 2 / ((cs 0 /lépés 1 )/lépés 2 )/ cs 1

Félig-strukturált adatmodell 2010.01.07. 98 Egy XPath lépés szintaxisa Egy lépés a következő fomájú: ax::nt[p 1 ] [p n ] ahol 1. az ax egy tengely (axis), amely azt határozza meg, hogy milyen irányba kell a kontextus csúcsokból a navigációt végrehajtani, 2. a nt egy csúcsteszt (node test), amelyet arra használunk, hogy csak bizonyos nevű vagy típusú csúcsokhoz navigáljunk, 3. A p i egy opcionális predikátum, amely segítségével tovább lehet szűrni, hogy milyen csúcsokhoz akarunk a lépéssel eljutni. A predikátumlista a predikátumok konjunkcióját jelenti.

1. Általános információk 2. Bevezető: Félig-strukturált, XML adatbázisok 3. Az XML fogalmai 4. Az XML DTD sémája 5. Az XPath lekérdező nyelv 6. Az XQuery lekérdező nyelv 7. Összefoglalás Félig-strukturált adatmodell 2010.01.07. 99

Félig-strukturált adatmodell 2010.01.07. 100 Az XQuery lekérdező nyelv Az XQuery egy deklaratív XML lekérdező nyelv. Azt a szerepet játssza, mint az SQL a relációs adatbázisok esetében. Az XQuery rendelkezik programozási nyelvre és adatbázisnyelvre jellemző tulajdonságokkal is. Programozási nyelvi jellemzők: iteráció, változók (for in, let in) rekurzív, felhasználói függvények reguláris kifejezések, típusok listák, tömbök Adatbázisos jellemzők: szűrés csoportosítás, összekapcsolás (joins)

Félig-strukturált adatmodell 2010.01.07. 101 Az XQuery nyelvtana XQuery Expr :=Literal Variable FunctionCalls PathExpr ComparisonExpr ArithmeticExpr LogicExpr FLWRExpr ConditionalExpr QuantifiedExpr TypeSwitchExpr InstanceofExpr CastExpr UnionExpr IntersectExceptExpr ConstructorExpr ValidateExpr Ebből a FLWRExpr kifejezésekkel foglalkozunk. A PathExpr tetszőleges XPath kifejezés, azaz XPath XQuery

Félig-strukturált adatmodell 2010.01.07. 102 FLOWR Expressions A FLOWR kifejezés a következőkből áll. iteráció (for); változók definiálása, lekötése (let); eredmény rendezése (order); predikátum alkalmazása (where); az eredmény konstrukciója (return). Egy példa (let nélkül): for $f in collection( filmek')/film where $f / év >= 2005 return <film>{ $f / cím / text()}, "rendezte" {$f / rendező / veznév / text()} </film>

Félig-strukturált adatmodell 2010.01.07. 103 Dokumentumok és kollekciók megadása Az XQuery számára az input a következő módon adható meg: doc() - az XML dokumentum URI-jét adjuk meg, és visszaadja a dokumentumfának a gyökerét; collection() egy olyan XML URI-jét veszi át, amely további XML fájlok URI-jét tartalmazza. Így egy XML adatbázist tudunk lekérdezni az XQuery segtségével.

Félig-strukturált adatmodell 2010.01.07. 104 A FLOWR kifejezések Szintaxis: for $v in e1 [ where e3 ] [ order by... ] return e2 let $v := e1 [ where e3 ] [ order by... ] return e2 A for és let részekből több is lehet: let $x:=1 let $y:=2 return $x+$y

Félig-strukturált adatmodell 2010.01.07. 105 for $x in expr1 return expr2 Jelentése: az $x változó felveszi az expr1 által visszaadott értékeket minden felvett értékre kiértékeljük az expr2 kifejezést az eredményeket konkatenáljuk for $x in doc("irodalom.xml")/irodalom/könyv return <eredmény> { $x } </eredmény> A lekérdezés eredmény: <eredmény> <könyv>...</könyv></eredmény> <eredmény> <könyv>...</könyv></eredmény> at kulcsszóval lehet számolni az iterációkat: for $x at $i in doc("irodalom.xml")/könyvesbolt/könyv/cím return <könyv>{$i}. {data($x)}</könyv>

Félig-strukturált adatmodell 2010.01.07. 106 let $x := expr1 return expr2 Jelentése: az $x változó az expr1 eredményét veszi fel kiértékeli és visszaadja az expr2 eredményét let $x := doc("irodalom.xml")/irodalom/könyv return <eredmény> { $x } </eredmény> A lekérdezés eredménye: <eredmény> <könyv>...</könyv> <könyv>...</könyv> </eredmény>

Félig-strukturált adatmodell 2010.01.07. 107 where where hasonló az SQL where feltételéhez. Milyen filmeket rendezett Fellini: for $f in collection(" filmek")/ film where $f/ rendező / veznév = Fellini return $f/ cím Az XPath útvonalra vonatkozó szabályok: Ha az útvonal nem létezik, akkor feltétel HAMIS! Ha az útvonal kifejezés több csúcsot eredményez, akkor a feltétel IGAZ, ha LEGALÁBB EGY csúcsra igaz.

Félig-strukturált adatmodell 2010.01.07. 108 Konstruktorok for $k in doc( irodalom.xml )//könyv where $k/szerző/kernév = Kálmán and $k/szerző/veznév = Mikszáth return <könyv> { $k/cím, $k/ár } </könyv> A lekérdezés eredménye: <könyv><cím>noszty fiú</cím><ár>845</ár></könyv> <könyv><cím>gavallérok</cím><ár>530</ár> </könyv>

Összekapcsolás (Join) Hasonlítsuk össze a Libri és az Alexandra árait! <árgép>{ for $a in doc( alexandra.xml )/könyv, $l in doc( libri.xml )/könyv where $a/@isbn = $l/@isbn return <könyv> { $a/cím } <alexandra_ár>{ $a/ár }</alexandra_ár>, <libri_ár>{ $l/ár }</libri_ár> </könyv> }</árgép> Félig-strukturált adatmodell 2010.01.07. 109

Félig-strukturált adatmodell 2010.01.07. 110 Csoportosítás Nincs GROUP BY az XQuery nyelvben. Adjuk meg a PANEM kiadó szerzőinek összes művét: <eredmény>{ for $s in distinctvalues(doc( irodalom.xml )/irodalom/könyv[kiado= PANEM ]/szerző) return <szerző>{ $s, for $c in document( irodalom.xml )/irodalom/könyv[szerző=$a]/cím return { $c } }</szerző> }</eredmény>

Félig-strukturált adatmodell 2010.01.07. 111 Aggregálás Hány könyvet adtak ki a szerzők évente? (A nulla ne jelenjen meg.) for $s in distinct-values(doc("http://www.libri.hu")/irodalom/könyv/szerző), $é in distinct-values(doc("http://www.libri.hu")/irodalom/könyv/@év) let $k := doc("http://www.libri.hu")/irodalom/könyv[szerző=$s and @év=$é] return if exists($k) then <eredmény> { $s, <év> $é </év>, <összesen> count($k) </összesen> } </eredmény> else ( )

Félig-strukturált adatmodell 2010.01.07. 112 Rendezés: order by A for $v in e1 return e2 FLWOR kifejezésben az e1 sorrendje határozza meg az eredmény elemeinek sorrendjét. Ha más sorrendet akarunk megadni, akkor a következőt használhatjuk: for $v in e1 order by e3 [ascending descending] [empty greatest least] return e2 A nullértékek esetén az [empty greatest least] mondja meg, hogy a nullérték a lista végén vagy elején legyen.

Félig-strukturált adatmodell 2010.01.07. 113 Példa rendezésre Listázzuk ki rendezve a PANEM kiadó 2001 utáni könyveit. <eredmény>{ for $könyv in /irodalom/könyv where $könyv/@évr > 2001 and $irodalom/kiadó= PANEM order by $könyv/cím return <könyv> <cím> {$könyv/cím } </cím>, for $szerző in $könyv/szerző return <szerző> {$szerző } </szerző> </könyv> }</eredmény>

Félig-strukturált adatmodell 2010.01.07. 114 Néhány fontosabb függvény Az XQuery beépített függvényei segítségével bonyolultabb számításokat is el lehet végezni. Új függvények is definiálhatók. Függvény Példa count count((0,4,2)) 3 max max((0,4,2)) 4 subsequence subsequence((1,3,5,7),2,3) (3,5,7) empty empty((0,4,2)) false() exists exists((0,4,2)) true() distinct-values distinct-values((4,4,2,4)) (4,2) to (1 to 10)[. mod 2 eq 1] (1,3,5,7,9)

1. Általános információk 2. Bevezető: Félig-strukturált, XML adatbázisok 3. Az XML fogalmai 4. Az XML DTD sémája 5. Az XPath lekérdező nyelv 6. Az XQuery lekérdező nyelv 7. Összefoglalás Félig-strukturált adatmodell 2010.01.07. 115

Félig-strukturált adatmodell 2010.01.07. 116 Összefoglalás Az XML adatbázisok egyre nagyobb szerepet kapnak. Kutatásuk, gyakorlati alkalmazásuk egyre fontosabb. Nem szorítják ki a relációs adatbázis-kezelőket. XML, DTD, XPath, XQuery Az XML adatbázis-kezelők rendelkeznek a szokásos adatbáziskezelői jellemzőkkel: Adatmodell (félig-strukturált) Lekérdező nyelvek Indexelés Tranzakció-kezelés Jogosultságok kezelése Ajánlott oldalak: Interaktív XML, DTD, XSLT: http://xmlzoo.net/ Interaktív XPath: http://www.mizar.dk/xpath/ Interaktív XQuery: http://demo.exist-db.org/exist/sandbox/ KÖSZÖNÖM A FIGYELMET!