Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
KiadtaErvin Somogyi Megváltozta több, mint 10 éve
1
Master Informatique 20 10. 01. 07. 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 20 10. 01. 07. 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 XPath lekérdező nyelv 6.Az XQuery lekérdező nyelv 7.Összefoglalás
3
Master Informatique 20 10. 01. 07. 3 dr. Kiss AttilaFélig-strukturált adatmodell 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
4
Master Informatique 20 10. 01. 07. 4 dr. Kiss AttilaFélig-strukturált adatmodell 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
5
Master Informatique 20 10. 01. 07. 5 dr. Kiss AttilaFélig-strukturált adatmodell 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
6
Master Informatique 20 10. 01. 07. 6 dr. Kiss AttilaFélig-strukturált adatmodell 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/ 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) xml.ppt Az érdeklődőknek további, a részleteket jobban megvilágító, de nem kötelező segédanyagok: xml.pdf, xml07-oracle.pptxml.pdfxml07-oracle.ppt
7
Master Informatique 20 10. 01. 07. 7 dr. Kiss AttilaFélig-strukturált adatmodell 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
8
Master Informatique 20 10. 01. 07. 8 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
9
Master Informatique 20 10. 01. 07. 9 dr. Kiss AttilaFélig-strukturált adatmodell A relációs adatmodell korlátai Hogyan tárolnánk ezt relációs adatbázisban?
10
Master Informatique 20 10. 01. 07. 10 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
11
Master Informatique 20 10. 01. 07. 11 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
12
Master Informatique 20 10. 01. 07. 12 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.
13
Master Informatique 20 10. 01. 07. 13 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
14
Master Informatique 20 10. 01. 07. 14 dr. Kiss AttilaFélig-strukturált adatmodell A HTML megjelenítése böngészővel
15
Master Informatique 20 10. 01. 07. 15 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?
16
Master Informatique 20 10. 01. 07. 16 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ő.
17
Master Informatique 20 10. 01. 07. 17 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
18
Master Informatique 20 10. 01. 07. 18 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
19
Master Informatique 20 10. 01. 07. 19 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. Magyar XML összefoglaló és Oracle XML összefoglaló található az alábbi címen: http://ablinux.inf.elte.hu/indexxml.html http://ablinux.inf.elte.hu/indexxml.html HTML4.0 ∈ XML SGML
20
Master Informatique 20 10. 01. 07. 20 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?
21
Master Informatique 20 10. 01. 07. 21 dr. Kiss AttilaFélig-strukturált adatmodell 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
22
Master Informatique 20 10. 01. 07. 22 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)
23
Master Informatique 20 10. 01. 07. 23 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
24
Master Informatique 20 10. 01. 07. 24 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.
25
Master Informatique 20 10. 01. 07. 25 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.
26
Master Informatique 20 10. 01. 07. 26 dr. Kiss AttilaFélig-strukturált adatmodell Példa Igaz-e, hogy 2+3 < 6? Előre definiált entitások: << >> && '‘ "“
27
Master Informatique 20 10. 01. 07. 27 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
28
Master Informatique 20 10. 01. 07. 28 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)
29
Master Informatique 20 10. 01. 07. 29 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
30
Master Informatique 20 10. 01. 07. 30 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 –
31
Master Informatique 20 10. 01. 07. 31 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 ]]>
32
Master Informatique 20 10. 01. 07. 32 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
33
Master Informatique 20 10. 01. 07. 33 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
34
Master Informatique 20 10. 01. 07. 34 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ő: –
35
Master Informatique 20 10. 01. 07. 35 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.
36
Master Informatique 20 10. 01. 07. 36 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.
37
Master Informatique 20 10. 01. 07. 37 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.
38
Master Informatique 20 10. 01. 07. 38 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
39
Master Informatique 20 10. 01. 07. 39 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/
40
Master Informatique 20 10. 01. 07. 40 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.
41
Master Informatique 20 10. 01. 07. 41 dr. Kiss AttilaFélig-strukturált adatmodell 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
42
Master Informatique 20 10. 01. 07. 42 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.
43
Master Informatique 20 10. 01. 07. 43 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)
44
Master Informatique 20 10. 01. 07. 44 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
45
Master Informatique 20 10. 01. 07. 45 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.
46
Master Informatique 20 10. 01. 07. 46 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.
47
Master Informatique 20 10. 01. 07. 47 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+
48
Master Informatique 20 10. 01. 07. 48 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
49
Master Informatique 20 10. 01. 07. 49 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+)> ]>
50
Master Informatique 20 10. 01. 07. 50 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”>
51
Master Informatique 20 10. 01. 07. 51 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
52
Master Informatique 20 10. 01. 07. 52 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ó
53
Master Informatique 20 10. 01. 07. 53 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” >
54
Master Informatique 20 10. 01. 07. 54 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> ]>
55
Master Informatique 20 10. 01. 07. 55 dr. Kiss AttilaFélig-strukturált adatmodell A DTD-nek megfelelő dokumentum Henry William Diana Charles
56
Master Informatique 20 10. 01. 07. 56 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:
57
Master Informatique 20 10. 01. 07. 57 dr. Kiss AttilaFélig-strukturált adatmodell Példa DTD: XML: &ka;©right;
58
Master Informatique 20 10. 01. 07. 58 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 –
59
Master Informatique 20 10. 01. 07. 59 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.
60
Master Informatique 20 10. 01. 07. 60 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
61
Master Informatique 20 10. 01. 07. 61 dr. Kiss AttilaFélig-strukturált adatmodell Egy DTD-nek megfelelő XML schema DTD:
62
Master Informatique 20 10. 01. 07. 62 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:
63
Master Informatique 20 10. 01. 07. 63 dr. Kiss AttilaFélig-strukturált adatmodell 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
64
Master Informatique 20 10. 01. 07. 64 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.
65
Master Informatique 20 10. 01. 07. 65 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.
66
Master Informatique 20 10. 01. 07. 66 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
67
Master Informatique 20 10. 01. 07. 67 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.
68
Master Informatique 20 10. 01. 07. 68 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ó.
69
Master Informatique 20 10. 01. 07. 69 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ő.
70
Master Informatique 20 10. 01. 07. 70 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
71
Master Informatique 20 10. 01. 07. 71 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
72
Master Informatique 20 10. 01. 07. 72 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.
73
Master Informatique 20 10. 01. 07. 73 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
74
Master Informatique 20 10. 01. 07. 74 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
75
Master Informatique 20 10. 01. 07. 75 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
76
Master Informatique 20 10. 01. 07. 76 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.
77
Master Informatique 20 10. 01. 07. 77 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
78
Master Informatique 20 10. 01. 07. 78 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.
79
Master Informatique 20 10. 01. 07. 79 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
80
Master Informatique 20 10. 01. 07. 80 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.
81
Master Informatique 20 10. 01. 07. 81 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
82
Master Informatique 20 10. 01. 07. 82 dr. Kiss AttilaFélig-strukturált adatmodell A child tengely Az attribútumnak van szülője, de ő nem gyereke semelyik csúcsnak! b
83
Master Informatique 20 10. 01. 07. 83 dr. Kiss AttilaFélig-strukturált adatmodell A parent tengely b
84
Master Informatique 20 10. 01. 07. 84 dr. Kiss AttilaFélig-strukturált adatmodell Az attribute tengely b
85
Master Informatique 20 10. 01. 07. 85 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
86
Master Informatique 20 10. 01. 07. 86 dr. Kiss AttilaFélig-strukturált adatmodell A descendant-or-self tengely b
87
Master Informatique 20 10. 01. 07. 87 dr. Kiss AttilaFélig-strukturált adatmodell Az ancestor tengely b
88
Master Informatique 20 10. 01. 07. 88 dr. Kiss AttilaFélig-strukturált adatmodell Az ancestor-or-self tengely b
89
Master Informatique 20 10. 01. 07. 89 dr. Kiss AttilaFélig-strukturált adatmodell A following tengely b
90
Master Informatique 20 10. 01. 07. 90 dr. Kiss AttilaFélig-strukturált adatmodell A following-sibling tengely b
91
Master Informatique 20 10. 01. 07. 91 dr. Kiss AttilaFélig-strukturált adatmodell A preceding tengely b
92
Master Informatique 20 10. 01. 07. 92 dr. Kiss AttilaFélig-strukturált adatmodell A preceding-sibling tengely b
93
Master Informatique 20 10. 01. 07. 93 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.
94
Master Informatique 20 10. 01. 07. 94 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]
95
Master Informatique 20 10. 01. 07. 95 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()
96
Master Informatique 20 10. 01. 07. 96 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.
97
Master Informatique 20 10. 01. 07. 97 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
98
Master Informatique 20 10. 01. 07. 98 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.
99
Master Informatique 20 10. 01. 07. 99 dr. Kiss AttilaFélig-strukturált adatmodell 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
100
Master Informatique 20 10. 01. 07. 100 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)
101
Master Informatique 20 10. 01. 07. 101 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
102
Master Informatique 20 10. 01. 07. 102 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()}
103
Master Informatique 20 10. 01. 07. 103 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.
104
Master Informatique 20 10. 01. 07. 104 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
105
Master Informatique 20 10. 01. 07. 105 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)}
106
Master Informatique 20 10. 01. 07. 106 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:......
107
Master Informatique 20 10. 01. 07. 107 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.
108
Master Informatique 20 10. 01. 07. 108 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
109
Master Informatique 20 10. 01. 07. 109 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 } }
110
Master Informatique 20 10. 01. 07. 110 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 } }
111
Master Informatique 20 10. 01. 07. 111 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 ( )
112
Master Informatique 20 10. 01. 07. 112 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.
113
Master Informatique 20 10. 01. 07. 113 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ő } }
114
Master Informatique 20 10. 01. 07. 114 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)
115
Master Informatique 20 10. 01. 07. 115 dr. Kiss AttilaFélig-strukturált adatmodell 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
116
Master Informatique 20 10. 01. 07. 116 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!
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.