Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Master Informatique 1 dr. Kiss AttilaFélig-strukturált adatmodell Félig-strukturált adatmodell (Semi-structured data model) dr. Kiss Attila

Hasonló előadás


Az előadások a következő témára: "Master Informatique 1 dr. Kiss AttilaFélig-strukturált adatmodell Félig-strukturált adatmodell (Semi-structured data model) dr. Kiss Attila"— Előadás másolata:

1 Master Informatique 1 dr. Kiss AttilaFélig-strukturált adatmodell Félig-strukturált adatmodell (Semi-structured data model) dr. Kiss Attila kiss@inf.elte.hu

2 Master Informatique 2 dr. Kiss AttilaFélig-strukturált adatmodell 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 XML séma 6.Az XPath lekérdező nyelv 7.Az XQuery lekérdező nyelv 8.Az XSLT 9.Összefoglalás

3 Master Informatique 3 dr. Kiss AttilaFélig-strukturált adatmodell Tankönyv az XML-hez III. Félig-strukturált adatok modellezése és programozása Adatbázisrendszerek alapvetés könyv: 11.1 fejezet: Félig-strukturált adat (515-519 oldal) 11.2 fejezet: XML (520-528 oldal) 11.3 fejezet: DTD (528-535 oldal) 11.4 fejezet: XML séma (535-547 oldal) 12.1 fejezet: XPath (553-560 oldal), 12.2 fejezet: XQuery (565-579 oldal) 12.3 fejezet: XSLT (580-589 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) xml.ppt

4 Master Informatique 4 dr. Kiss AttilaFélig-strukturált adatmodell 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

5 Master Informatique 5 dr. Kiss AttilaFélig-strukturált adatmodell A relációs adatmodell korlátai Hogyan tárolnánk ezt relációs adatbázisban?

6 Master Informatique 6 dr. Kiss AttilaFélig-strukturált adatmodell A relációs adatmodell korlátai Miből áll ez az oldal? 1. SZÖVEG2. KÉP 3. TÁBLÁZAT 4. FORMÁZÁS 5. GRAFIKON 6. HIPERLINK

7 Master Informatique 7 dr. Kiss AttilaFélig-strukturált adatmodell 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

8 Master Informatique 8 dr. Kiss AttilaFélig-strukturált adatmodell 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.

9 Master Informatique 9 dr. Kiss AttilaFélig-strukturált adatmodell Tom Sawyer weboldala Hello! Tudtad, hogy Huckleberry Finn a legjobb barátom? Azért néha Becky Thatcher -t is kedvelem... Ezeket szeretem a legjobban: Hajókázni a Mississippin Kincset keresni Kerítést festeni Ha hasonló dolgok érdekelnek, írjál a tom@mark.twain címemre! Egy egyszerű HTML kód

10 Master Informatique 10 dr. Kiss AttilaFélig-strukturált adatmodell A HTML megjelenítése böngészővel

11 Master Informatique 11 dr. Kiss AttilaFélig-strukturált adatmodell 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?

12 Master Informatique 12 dr. Kiss AttilaFélig-strukturált adatmodell 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ő.

13 Master Informatique 13 dr. Kiss AttilaFélig-strukturált adatmodell Tom Sawyer adatai XML fájlban Thomas Sawyer Hello! Tudtad, hogy Huckleberry Finn a legjobb barátom? Azért néha Becky Thatcher-t is kedvelem... Huckleberry Finn Becky Thatcher

14 Master Informatique 14 dr. Kiss AttilaFélig-strukturált adatmodell 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

15 Master Informatique 15 dr. Kiss AttilaFélig-strukturált adatmodell 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/ http://www.w3.org/XML/ Előzménye: – GML (1969) Generalized Markup Language – SGML (1986) Standard Generalized Markup Language – HTML (1989) HyperText Markup Language 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. HTML4.0 ∈ XML  SGML

16 Master Informatique 16 dr. Kiss AttilaFélig-strukturált adatmodell 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: Kiss Attila 372-2500-8479 363-4797 kiss@inf.elte.hu Nagy ügy! Ennyi az egész?

17 Master Informatique 17 dr. Kiss AttilaFélig-strukturált adatmodell 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)

18 Master Informatique 18 dr. Kiss AttilaFélig-strukturált adatmodell Elemek (Elements) Egy XML dokumentumban egy nyitó és megfelelő záró jelölő (tag) közötti részt elemnek hívjuk. Kiss Attila 02 – 444 7777 051 – 011 022 kiss@inf.elte.hu elem nem elem

19 Master Informatique 19 dr. Kiss AttilaFélig-strukturált adatmodell Attribútumok (Attributes) Egy nyitó jelölő (tag) tartalmazhat attribútumokat. Az attribútum értékét idézőjelek közé kell tenni. cheese fromage sajt A sajt egy tejtermék.

20 Master Informatique 20 dr. Kiss AttilaFélig-strukturált adatmodell 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.

21 Master Informatique 21 dr. Kiss AttilaFélig-strukturált adatmodell Példa Igaz-e, hogy 2+3 < 6? Előre definiált entitások: << >> && &apos;‘ "“

22 Master Informatique 22 dr. Kiss AttilaFélig-strukturált adatmodell 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

23 Master Informatique 23 dr. Kiss AttilaFélig-strukturált adatmodell 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)

24 Master Informatique 24 dr. Kiss AttilaFélig-strukturált adatmodell Példa <cikk xmlns=“http://ecommerce.example.org/schema” xmlns:játék=“http://ecommerce.example.org/toy”> zsákbamacska plüssmacska Szintaktika: a névütközés elkerülésére Szemantika: milyen URL-en található a séma

25 Master Informatique 25 dr. Kiss AttilaFélig-strukturált adatmodell További XML fogalmak XML deklaráció – Feldolgozási instrukció –Az alkalmazásokhoz, nem az elemző számára kell –

26 Master Informatique 26 dr. Kiss AttilaFélig-strukturált adatmodell További XML fogalmak Megjegyzések – CDATA szekció –Olyan blokk, amelynek tartalmát az elemző figyelmen kívül hagyja – ez hibás elem lenne az elemző számára ]]>

27 Master Informatique 27 dr. Kiss AttilaFélig-strukturált adatmodell Egy teljes XML dokumentum Kiss Attila 372-2500-8479 363-4797 kiss@inf.elte.hu Kötelező Opcionális

28 Master Informatique 28 dr. Kiss AttilaFélig-strukturált adatmodell XML szabályok (1.) Az XML sorrend-érzékeny, vagyis a következők különböznek: Az XML kisbetű-nagybetű érzékeny, vagyis a következők különböznek:,, cheese fromage fromage cheese

29 Master Informatique 29 dr. Kiss AttilaFélig-strukturált adatmodell XML szabályok (2.) A jelölők párokat képeznek... A jelölő párokat helyesen kell egymásba ágyazni –Jó:......... –Rossz:......... –Rossz:... A szöveget nem tartalmazó elem rövidíthető: –

30 Master Informatique 30 dr. Kiss AttilaFélig-strukturált adatmodell XML szabályok (3.) Az XML dokumentum legfelső szintjén csak egyetlen elem lehet, amit gyökér elemnek hívunk. Ez így szabályos. Ez is szabályos ? N em.

31 Master Informatique 31 dr. Kiss AttilaFélig-strukturált adatmodell Jólformált dokumentumok (Well-Formed Documents) Egy XML dokumentum jólformált (well- formed, ha –kielégíti az előző 3 szabályt, továbbá –jelölőn belül egy attribútum nem ismétlődhet.

32 Master Informatique 32 dr. Kiss AttilaFélig-strukturált adatmodell 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.

33 Master Informatique 33 dr. Kiss AttilaFélig-strukturált adatmodell Az XML dokumentumfa 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. személy név email tel Kiss Attila 372-2500-8479 363-47-97 kiss@inf.elte.hu

34 Master Informatique 34 dr. Kiss AttilaFélig-strukturált adatmodell 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/

35 Master Informatique 35 dr. Kiss AttilaFélig-strukturált adatmodell Az XML és a relációs adatbázisok Tetszőleges relációs adatbázis reprezentálható XML dokumentumként.

36 Master Informatique 36 dr. Kiss AttilaFélig-strukturált adatmodell 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.

37 Master Informatique 37 dr. Kiss AttilaFélig-strukturált adatmodell 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)

38 Master Informatique 38 dr. Kiss AttilaFélig-strukturált adatmodell Telefonkönyv DTD sémája Kiss Attila Attila 1117 Budapest Pázmány Péter 1/C 372-500-8479 372-500-8480 363-47-97 kiss@inf.elte.hu Telefonok, faxok keverve Legalább 1 email Annyi címsor, amennyi csak szükséges Legfeljebb 1 becenévPontosan 1 név

39 Master Informatique 39 dr. Kiss AttilaFélig-strukturált adatmodell 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.

40 Master Informatique 40 dr. Kiss AttilaFélig-strukturált adatmodell 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.

41 Master Informatique 41 dr. Kiss AttilaFélig-strukturált adatmodell Miből állhat egy személy elem? –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 név, bece?, cím*, (tel | fax)*, email+

42 Master Informatique 42 dr. Kiss AttilaFélig-strukturált adatmodell aa 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,e2Az e2 az e1 után következik e1|e2e1 vagy e2 (e)Zárójelezés #PCDATANem elemzendő szöveg EMPTYNincs tartalom ANYTetszőleges tartalom (#PCDATA|a 1 |..|a n )*Vegyes tartalom A model reguláris kifejezéseiben a következők használhatók

43 Master Informatique 43 dr. Kiss AttilaFélig-strukturált adatmodell A telefonkönyv DTD sémája <!DOCTYPE telefonkönyv [ <!ELEMENT személy (név, bece?, cím*, (fax | tel)*, email+)> ]>

44 Master Informatique 44 dr. Kiss AttilaFélig-strukturált adatmodell 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”>

45 Master Informatique 45 dr. Kiss AttilaFélig-strukturált adatmodell <!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 CDATAKaraktersorozat (en1|en2|..)A lista egyik tagja IDEgyedi azonosító IDREFEgy másik elem azonosítója IDREFSMás elemek azonosítóinak listája

46 Master Informatique 46 dr. Kiss AttilaFélig-strukturált adatmodell <!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ékAz attribútum alapértéke #REQUIRED Az attribútumértéknek szerepelnie kell az elemben #IMPLIED Az attribútum megadása nem kötelező #FIXED érték Az attribútum értéke nem változtatható

47 Master Informatique 47 dr. Kiss AttilaFélig-strukturált adatmodell Példa <!ATTLIST magasság mértékegység (cm | in) #REQUIRED pontosság CDATA #IMPLIED mérhető CDATA #FIXED “igen” >

48 Master Informatique 48 dr. Kiss AttilaFélig-strukturált adatmodell Azonosító (ID) és hivatkozás (IDREF) attribútumok <!DOCTYPE család [ <!ATTLIST személy azon ID #REQUIRED anya IDREF #IMPLIED apa IDREF #IMPLIED gyerekei IDREFS #IMPLIED> ]>

49 Master Informatique 49 dr. Kiss AttilaFélig-strukturált adatmodell A DTD-nek megfelelő dokumentum Henry William Diana Charles

50 Master Informatique 50 dr. Kiss AttilaFélig-strukturált adatmodell 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: –kivül:

51 Master Informatique 51 dr. Kiss AttilaFélig-strukturált adatmodell Példa DTD: XML: &ka;&copyright;

52 Master Informatique 52 dr. Kiss AttilaFélig-strukturált adatmodell A DTD séma hozzárendelése a dokumentumhoz A dokumentumon belül: … ]>... A DTD egy külön fájlban szerepel: – vagy –

53 Master Informatique 53 dr. Kiss AttilaFélig-strukturált adatmodell É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.

54 Master Informatique 54 dr. Kiss AttilaFélig-strukturált adatmodell 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

55 Master Informatique 55 dr. Kiss AttilaFélig-strukturált adatmodell Egy DTD-nek megfelelő XML schema DTD:

56 Master Informatique 56 dr. Kiss AttilaFélig-strukturált adatmodell 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:

57 Master Informatique 57 dr. Kiss AttilaFélig-strukturált adatmodell Á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.

58 Master Informatique 58 dr. Kiss AttilaFélig-strukturált adatmodell 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.

59 Master Informatique 59 dr. Kiss AttilaFélig-strukturált adatmodell 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

60 Master Informatique 60 dr. Kiss AttilaFélig-strukturált adatmodell 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.

61 Master Informatique 61 dr. Kiss AttilaFélig-strukturált adatmodell Csúcsok azonosítói Minden csúcsnak van egy egyedi csúcs- azonosítója, ami nem módosítható.

62 Master Informatique 62 dr. Kiss AttilaFélig-strukturált adatmodell 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ő.

63 Master Informatique 63 dr. Kiss AttilaFélig-strukturált adatmodell Példák XPath lekérdezésekre Addison-Wesley Serge Abiteboul Rick Hull Victor Vianu Foundations of Databases 1995 Freeman Jeffrey D. Ullman Principles of Database and Knowledge Base Systems 1998

64 Master Informatique 64 dr. Kiss AttilaFélig-strukturált adatmodell Az XML-fa irodalom Gyökér könyv kiadó szerző ár cím év veznévkernév

65 Master Informatique 65 dr. Kiss AttilaFélig-strukturált adatmodell /irodalom/könyv/év irodalom Gyökér könyv kiadó szerző ár cím év veznévkernév /irodalom/könyv/év Eredmény: 1995 1998 /irodalom/cikk/év eredménye üres, mert nincs cikk.

66 Master Informatique 66 dr. Kiss AttilaFélig-strukturált adatmodell //szerző irodalom Gyökér könyv kiadó szerző ár cím év veznévkernév //szerző Eredmény : Serge Abiteboul Rick Hull Victor Vianu Jeffrey D. Ullman

67 Master Informatique 67 dr. Kiss AttilaFélig-strukturált adatmodell /irodalom//kernév irodalom Gyökér könyv kiadó szerző ár cím év veznévkernév /irodalom//kernév Eredmény: Rick

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

69 Master Informatique 69 dr. Kiss AttilaFélig-strukturált adatmodell //szerző/* irodalom Gyökér könyv kiadó szerző ár cím év veznévkernév //szerző/* Eredmény: Rick Hull A * tetszőleges elemre illeszkedik, de szövegre, attribútumra nem.

70 Master Informatique 70 dr. Kiss AttilaFélig-strukturált adatmodell /irodalom/könyv/@ár irodalom Gyökér könyv kiadó szerző ár cím év veznévkernév /irodalom/könyv/@ár Eredmény: 55

71 Master Informatique 71 dr. Kiss AttilaFélig-strukturált adatmodell /irodalom/könyv/szerző[kernév] irodalom Gyökér könyv kiadó szerző ár cím év veznévkernév /irodalom/könyv/szerző[kernév] Eredmény : Rick Hull [kernév] igaz, ha a szerző elemnek van kernév gyereke.

72 Master Informatique 72 dr. Kiss AttilaFélig-strukturált adatmodell 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 Aritmetikai összehasonlítás Egzisztenciális kifejezés Pozícionáló kifejezés

73 Master Informatique 73 dr. Kiss AttilaFélig-strukturált adatmodell 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.

74 Master Informatique 74 dr. Kiss AttilaFélig-strukturált adatmodell Tengelyek b Aktuális csúcs Elem csúcs Attribútum csúcs Gyökér bli … - Szöveg

75 Master Informatique 75 dr. Kiss AttilaFélig-strukturált adatmodell A child tengely Az attribútumnak van szülője, de ő nem gyereke semelyik csúcsnak! b

76 Master Informatique 76 dr. Kiss AttilaFélig-strukturált adatmodell A parent tengely b

77 Master Informatique 77 dr. Kiss AttilaFélig-strukturált adatmodell Az attribute tengely b

78 Master Informatique 78 dr. Kiss AttilaFélig-strukturált adatmodell A descendant tengely A leszármazott, illetve felmenő a gyerek, illetve a szülő tranzitív lezárása. b

79 Master Informatique 79 dr. Kiss AttilaFélig-strukturált adatmodell A descendant-or-self tengely b

80 Master Informatique 80 dr. Kiss AttilaFélig-strukturált adatmodell Az ancestor tengely b

81 Master Informatique 81 dr. Kiss AttilaFélig-strukturált adatmodell Az ancestor-or-self tengely b

82 Master Informatique 82 dr. Kiss AttilaFélig-strukturált adatmodell A following tengely b

83 Master Informatique 83 dr. Kiss AttilaFélig-strukturált adatmodell A following-sibling tengely b

84 Master Informatique 84 dr. Kiss AttilaFélig-strukturált adatmodell A preceding tengely b

85 Master Informatique 85 dr. Kiss AttilaFélig-strukturált adatmodell A preceding-sibling tengely b

86 Master Informatique 86 dr. Kiss AttilaFélig-strukturált adatmodell 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.

87 Master Informatique 87 dr. Kiss AttilaFélig-strukturált adatmodell Rövidítések RövidítveTeljes alak /root(.) ///descendant-or-self::node()/.self::node()..parent::node() child:: @attribute:: [szám][position() = szám]

88 Master Informatique 88 dr. Kiss AttilaFélig-strukturált adatmodell Példák rövidítésekre Rövid alakHosszú alak /irodalom/könyv/child::irodalom/child::könyv /irodalom/könyv/@ár/child::irodalom/child::könyv/ attribute::ár /.//cím (ugyanaz mint a //cím) /self::node()/descendant-or- self::node()/child::cím //szerző/../descendant-or-self::node()/ child::szerző/parent::node()

89 Master Informatique 89 dr. Kiss AttilaFélig-strukturált adatmodell 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.

90 Master Informatique 90 dr. Kiss AttilaFélig-strukturált adatmodell 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

91 Master Informatique 91 dr. Kiss AttilaFélig-strukturált adatmodell 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.

92 Master Informatique 92 dr. Kiss AttilaFélig-strukturált adatmodell 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)

93 Master Informatique 93 dr. Kiss AttilaFélig-strukturált adatmodell 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

94 Master Informatique 94 dr. Kiss AttilaFélig-strukturált adatmodell 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 { $f / cím / text()}, "rendezte" {$f / rendező / veznév / text()}

95 Master Informatique 95 dr. Kiss AttilaFélig-strukturált adatmodell 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.

96 Master Informatique 96 dr. Kiss AttilaFélig-strukturált adatmodell 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

97 Master Informatique 97 dr. Kiss AttilaFélig-strukturált adatmodell 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 { $x } A lekérdezés 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 {$i}. {data($x)}

98 Master Informatique 98 dr. Kiss AttilaFélig-strukturált adatmodell 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 { $x } A lekérdezés eredménye:......

99 Master Informatique 99 dr. Kiss AttilaFélig-strukturált adatmodell 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.

100 Master Informatique 100 dr. Kiss AttilaFélig-strukturált adatmodell 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/cím, $k/ár } A lekérdezés eredménye: Noszty fiú 845 Gavallérok 530

101 Master Informatique 101 dr. Kiss AttilaFélig-strukturált adatmodell Összekapcsolás (Join) Hasonlítsuk össze a Libri és az Alexandra árait! { for $a in doc(“alexandra.xml”)/könyv, $l in doc(“libri.xml”)/könyv where $a/@isbn = $l/@isbn return { $a/cím } { $a/ár }, { $l/ár } }

102 Master Informatique 102 dr. Kiss AttilaFélig-strukturált adatmodell Csoportosítás Nincs GROUP BY az XQuery nyelvben. Adjuk meg a PANEM kiadó szerzőinek összes művét: { for $s in distinct- values(doc(‘irodalom.xml’)/irodalom/könyv[kiado=‘PANEM’]/szerző) return { $s, for $c in document(‘irodalom.xml’)/irodalom/könyv[szerző=$a]/cím return { $c } }

103 Master Informatique 103 dr. Kiss AttilaFélig-strukturált adatmodell 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 { $s, $é, count($k) } else ( )

104 Master Informatique 104 dr. Kiss AttilaFélig-strukturált adatmodell 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.

105 Master Informatique 105 dr. Kiss AttilaFélig-strukturált adatmodell Példa rendezésre Listázzuk ki rendezve a PANEM kiadó 2001 utáni könyveit. { 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 }, for $szerző in $könyv/szerző return {$szerző } }

106 Master Informatique 106 dr. Kiss AttilaFélig-strukturált adatmodell 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ényPélda countcount((0,4,2)) → 3 maxmax((0,4,2)) → 4 subsequencesubsequence((1,3,5,7),2,3) → (3,5,7) emptyempty((0,4,2)) → false() existsexists((0,4,2)) → true() distinct-valuesdistinct-values((4,4,2,4)) → (4,2) to(1 to 10)[. mod 2 eq 1] → (1,3,5,7,9)

107 Master Informatique 107 dr. Kiss AttilaFélig-strukturált adatmodell Ö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ázis- kezelő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/http://xmlzoo.net/ Interaktív XPath: http://www.mizar.dk/XPath/http://www.mizar.dk/XPath/ Interaktív XQuery: http://demo.exist-db.org/exist/sandbox/http://demo.exist-db.org/exist/sandbox/ KÖSZÖNÖM A FIGYELMET!


Letölteni ppt "Master Informatique 1 dr. Kiss AttilaFélig-strukturált adatmodell Félig-strukturált adatmodell (Semi-structured data model) dr. Kiss Attila"

Hasonló előadás


Google Hirdetések