Általános lekérdezési feladatok

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

A szoftver és hardverfüggetlen adatbázis

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?

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

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.

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

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

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

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

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

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.

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

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

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

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

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

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

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

Adatbázisok* tulajdonságai

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

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

Adatbázis Rendszerek

Adatok szűrése, rendezése

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

Komputeralgebra Rendszerek

A szürke háttérrel jelölt fejezet/alfejezet szövege a CD-mellékleten található. A CD-melléklet használata. 1. Elméleti áttekintés 1

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

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK UNIÓ, ALLEKÉRDEZÉSEK

WHERE záradék (további lehetıségek) SQL specialitások, nem írhatók át relációs algebrába: LIKE. NULL értékek. Az ismeretlen (unknown) igazságérték

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

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

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

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

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

Az SQL adatbázisnyelv: DML

SELECT. SELECT(projekció) FROM(forrás) WHERE(szűrés) GROUPBY(csoportosítás) HAVING(csoportok szűrése) ORDERBY(rendezés)

Adatbázisrendszerek Tervezése Közgazdászoknak Munkapéldány

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

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

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

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

5.3. Logika a relációkhoz

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

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

SQL. Táblák összekapcsolása lekérdezéskor Aliasok Allekérdezések Nézettáblák

Operációs Rendszerek II. labor. 2. alkalom

Adatbázisok I. Az SQL nyelv

Csoportosított adatok megjelenítése összesítı függvények használatával. Copyright 2004, Oracle. All rights reserved.

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

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

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

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

ADATBÁZISOK I. Az esetleges hibákat kérlek a csongor@csongorbokay.com címen jelezd! Utolsó módosítás: március 20.

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

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

Adatbázis, adatbázis-kezelő

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

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

S z á m í t ó g é p e s a l a p i s m e r e t e k

Szkriptnyelvek. 1. UNIX shell

Imperatív programozás

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

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Relációs algebra áttekintés és egy táblára vonatkozó lekérdezések

Tankönyv példák kidolgozása

Komputeralgebra Rendszerek

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

Adatbázis rendszerek. dr. Siki Zoltán

Adatbáziskezelés. SQL parancsok. Függvények

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

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

XML technikák II Kovács, László

Adatbázis használat I. 2. gyakorlat

SQLServer. DB Recovery modes

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

INFORMATIKA javítókulcs 2016

Access gyakorlati feladatok lépésről lépésre

AWK programozás Bevezetés

Az SQL nyelv. SQL (Structured Query Language = Strukturált Lekérdező Nyelv).

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Adatbázismodellek. 1. ábra Hierarchikus modell

Tartalomjegyzék 2. RENDSZER FELÉPÍTÉSE... 3

Adatbázis tartalmának módosítása

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

1. Alapok. #!/bin/bash

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

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.

2018, Funkcionális programozás

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Objektumorientált Programozás VI.

INFORMATIKAI ALAPISMERETEK

A relációs algebra egy speciális algebra, amely néhány egyszerű, de hathatós. operandusok. Egy reláció megadható a nevével vagy közvetlenül, sorainak

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

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

Java II. I A Java programozási nyelv alapelemei

Átírás:

Á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. 1

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. 2

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 3

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. 4

Csúcsok azonosítói Minden csúcsnak van egy egyedi csúcsazonosítója, ami nem módosítható. 5

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ő. 6

Példák XPath lekérdezésekre <irodalom> <könyv ár= 55 > <kiadó>addison-wesley</kiadó> <>Serge Abiteboul</> <><kernév>rick</kernév> <veznév>hull</veznév> </> <>Victor Vianu</> <cím>foundations of Databases</cím> <év>1995</év> </könyv> <könyv> <kiadó>freeman</kiadó> <>Jeffrey D. Ullman</> <cím>principles of Database and Knowledge Base Systems</cím> <év>1998</év> </könyv> </irodalom> 7

Az XML-fa Gyökér irodalom ár könyv könyv kiadó cím év kiadó cím év kernév veznév 8

/irodalom/könyv/év Gyökér irodalom ár könyv könyv kiadó cím év kiadó 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. 9

// Gyökér irodalom ár könyv könyv kiadó cím év kiadó cím év kernév veznév // Eredmény: <>Serge Abiteboul</> <><kernév>rick</kernév> <veznév>hull</veznév> </> <>Victor Vianu</> <>Jeffrey D. Ullman</> 10

/irodalom//kernév Gyökér irodalom ár könyv könyv kiadó cím év kiadó cím év kernév veznév /irodalom//kernév Eredmény: <kernév>rick</kernév> 11

/irodalom/könyv//text() Gyökér irodalom ár könyv könyv kiadó cím év kiadó 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//text() Eredmény: Serge Abiteboul Victor Vianu Jeffrey D. Ullman 12

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

/irodalom/könyv/@ár Gyökér irodalom ár könyv könyv kiadó cím év kiadó cím év kernév veznév /irodalom/könyv/@ár Eredmény: 55 14

/irodalom/könyv/[kernév] Gyökér irodalom ár könyv könyv kiadó cím év kiadó cím év kernév veznév /irodalom/könyv/[kernév] Eredmény: <> <kernév>rick</kernév> <veznév>hull</veznév> </> [kernév] igaz, ha a elemnek van kernév gyereke. 15

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

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. 17

Tengelyek b Aktuális csúcs Elem csúcs Attribútum csúcs Gyökér bli - Szöveg 18

A child tengely b Az attribútumnak van szülője, de ő nem gyereke semelyik csúcsnak! 19

A parent tengely b 20

Az attribute tengely b 21

A descendant tengely b A leszármazott, illetve felmenő a gyerek, illetve a szülő tranzitív lezárása. 22

A descendant-or-self tengely b 23

Az ancestor tengely b 24

Az ancestor-or-self tengely b 25

A following tengely b 26

A following-sibling tengely b 27

A preceding tengely b 28

A preceding-sibling tengely b 29

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. 30

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] 31

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::/parent::node() Rövid alak /irodalom/könyv /irodalom/könyv/@ár /.//cím (ugyanaz mint a //cím) ///.. 32

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. 33

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 34

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. 35

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) 36

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 37

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> 38

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. 39

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 40

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> 41

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> 42

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. 43

Konstruktorok for $k in doc( irodalom.xml )//könyv where $k//kernév = Kálmán and $k//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> 44

Ö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> 45

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

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

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. 48

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 $ in $könyv/ return <> {$ } </> </könyv> }</eredmény> 49

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 exists empty((0,4,2)) false() 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) 50

Ö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! 51