XML data v relacích, indexace XML dat, podobnost XML dat, XML a webové služby. (nové od 2011) (🎓🎓🎓)
{{Zkazky|
xPath (Pokorny) - 2009
XQuery a XSLT (Mlýnková) 2010 - Popsat co to je a k čemu to je. Stačí vědět jak to funguje, není nutný znát help zpaměti. Vědět jakou má který jazyk sílu a co umí. A pak vědět, že jsou vzásadě ekvivalentní. Akorát že XSLT umí přepínat mezi různými výstupními soubory.
Technologie XML 2010 - největší zádrhel mých státnic - přestože jsem znal co je a na co je a v principu jak se používá XML, SGML, DTD, XML Schema, XPath, XQuery, XSLT, DOM, SAX, docela chtěl zkoušející vědět, jak přesně (i když zase ne úplně syntakticky přesně) se něco konkrétního zapíše v XSLT nebo v XML Schema, což jsem přesně nevěděl; snažil jsem se říct princip (že v XML Schema např. určuju, co může daný element obsahovat skrze typy, co se může jak opakovat, atd., že v XSLT mám naskládány šablony a k nim příslušející XPath), leč to nestačilo, chtěl vidět konkrétní (polo-konkrétní) zápis a konkrétně jak se to vyhodnocuje krok za krokem, což jsem pořád nebyl schopen moc přesně napsat a popsat. Nakonec jsem to nějak ukoulel na 3 matným vzpomínáním na to, jak jsem někdy před šesti lety něco dělal v XSLT... Docela zrádná otázka, doporučuju na to dávat bacha. Viděl jsem nějaké zápisky, kde někdo tvrdí, že "stačí slajdy z 1. přednášky", no, myslím, že určitě nestačí.
v tehle otazce je potreba znat XSLT, XPath a to vcetne prikladu
}} {{TODO|umravnit a zkonfrontovat}}
Indexace XML
Metody indexace
:Indexace úplného textu ::nevýhoda: nelze dotazovat podle struktury
:Indexace relací klasicky (Lore) ???
:: http://infolab.stanford.edu/lore/
:Číselná schémata ::indexování založené na pozicích
:::použití absolutních resp. relativních adres pro reprezentaci pozic slov a značek v XML dokumentu ::Dietzovo číslování
::... :...
Absolutní souřadnice regionu (ARC) ::
:D( S, E ) ::D : číslo dokumentu
::S : počátečni pozice, E : koncová pozice v dokumentu :výhody: pro dotazování
:nevýhody: aktualizace v listu znamená, že všechny následníky je třeba změnit také :XML_indexing-ARC.PNG does not exist. Create it?{: alt="XML_indexing-ARC.PNG"}
Relativní souřadnice regionu (RRC) ::
:RRC uzlu n v XML stromu: [ c1, c2 ] ::c1 : počet byte z počáteční pozice rodičovského uzlu k počáteční pozici n
::c2 : počet byte z počáteční pozice rodičovského uzlu ke koncové pozici uzlu n :výhoda: aktualizace je menší oproti ARC
:XML_indexing-RRC2.PNG does not exist. Create it?{: alt="XML_indexing-RRC2.PNG"}
Dietzovo číslování ::
:Preorder průchod - potomci každého uzlu následují při preorder průchodu stromem za svým rodičovským uzlem :Postorder průchod - každý uzel posloupnosti je uveden až za svými potomky
:Konstrukce číselného schématu ::každému uzlu v∈N přiřadíme dvojici (x,y) značící preorder resp. postorder pořadí
::uzel v∈N s ohodnocením L(v) = (x,y) je potomkem uzlu L(u) = (x',y') právě když x' <x & y' > y :XML_indexing-Dietz.PNG does not exist. Create it?{: alt="XML_indexing-Dietz.PNG"}
Podobnost XML dat
Typ dat ::
:Podobnost dokumentů :Podobnost schémat
:Podobnost dokumentů a schémat
Podobnost XML dokumentů
Idea ::
:Vstup: Dokumenty D1 a D2 :Výstup: sim(D1, D2) ∈ [0,1]
:Přístupy: :*Zjistíme jak složité je transformovat dokument D1 na D2
:**Editační vzdálenost stromů T1 na T2 :*Definujeme reprezentaci D1 a D2, která umožní efektivní vyhodnocení podobnosti
:**Př. reprezentace množinou cest, reprezentace signálem, …
Editační vzdálenost
(pro stromy) minimální počet operací pro transformaci stromu T1 na strom T2
Editační operace na XML stromech ::
:Insert - vloží uzel n na pozici danou rodičovským uzlem p a pořadím určujícím pozici v rámci podelementů p :Delete - smaže listový uzel n
:Relabel - přeznačí uzel n :InsertTree - vloží celý podstrom T na pozici danou rodičovským uzlem p a pořadím určujícím pozici v rámci podelementů p
:DeleteTree - celý podstrom T s kořenem n je smazán Minimální editační vzdálenost se jaksi vyhodnocuje pomoci dynamickeho programovani
Tree Alignment
Obdoba editační vzdálenosti
Myšlenka: Pro stromy T1 a T2 vybudujeme tzv. alignment *Do obou stromů vložíme uzly tak, aby výsledné stromy T1’ a T2’ měly stejnou strukturu (bez ohledu na označení), tj. pokud bychom je přiložili na sebe, překrývaly by se
Postup ::
:Vybudujeme alignment :Každé dvojici překrývajících se uzlů přiřadíme skóre
:Vzdálenost stromů = součet skóre
Obe dve transformace dokumentu jsou NP-tezke (tipl bych si, ze jsou primo slabe NP-tezke)
:Hledání minimální editační vzdálenosti XML stromů je obecně NP-těžký problém :Tree Alignment: pokud je stupeň stromu omezený, lze minimální vzdálenost nalézt v polynomiálním čase, jinak je to NP-těžký problém.
Reprezentace množinami cest
Myšlenka: XML strom = množina cest
Které cesty budeme brát? :Všechny různé cesty z kořene do listu
:Všechny různé cesty z kořene do listu a všechny jejich pod-cesty :Všechny různé cesty z kořene do listu a všechny jejich pod-cesty + informace o četnosti
Problém podobnosti stromů se redukuje na určení velikosti průniku množin cest
Poznámka: Přístup ignoruje uspořádání
Signál XML dokumentu
Myšlenka: XML dokument reprezentujeme jako signál (impuls = počáteční/koncový tag)
Problém podobnosti XML dokumentů jsme převedli na problém podobnosti signálů
Postup ::
:Signály jsou periodicky zopakovány (asi aby byly stejne dlouhe) :Je na ně aplikována diskrétní Fourierova transformace
:Výsledek je lineárně interpolován
Podobnost XML dokumentů a schémat
Problém: Chceme porovnat podobnost XML dokumentu D (stromu) a XML schématu S (množina regulárních výrazů)
Možná myšlenka: z dokumentů odvodíme schéma a porovnáme schémata (prozatím se nevyužívá a potřebovali bychom hodně dokumentů)
Existující přístupy:
*Metoda měřící počet elementů, které se vyskytují v D, ale ne v S a naopak *Metoda, měřící nejkratší vzdálenost mezi D a „všemi“ dokumenty validními vůči S
Podobnost XML schémat
Problém: podobnost regulární výrazů, resp. gramatik
Typické použití je integrace XML schémat - několik systémů poskytuje stejná (podobná) data v různých formátech → chceme sjednotit do společného schématu (XML Schema, relační, objektové, …)
Obecná myšlenka ::
:Definujeme množinu pomocných podobnostních funkcí (matchers), kde každá vyhodnocuje podobnost určité charakteristiky (např. podobnost listů, podobnost jmen kořenových elementů, podobnost kontextu, …) :Výsledky podobnostních funkcí jsou (váženě) agregovány do výsledné podobnosti
Poznámka: Velké množství metod využívá strojové učení (např. pro nastavení vah, pro vyhodnocování, …)
Algoritmy: :Cupid - dvě fáze vyhodnocování (lingvistická a strukturální)
:COMA - kombinace velké množiny matcherů s uživatelskou interakcí
Matching velkých schémat :Problém: U velkých schémat nechceme matchovat každý uzel s každým
:Myšlenka: Dekomponujeme problém do menších a jejich výsledky sloučíme
XML a webové služby
http://cs.wikipedia.org/wiki/Webov%C3%A1_slu%C5%BEba
http://cs.wikipedia.org/wiki/SOAP
http://cs.wikipedia.org/wiki/Web_Services_Description_Language
Datový model RDF, dotazovací jazyk SPARQL
RDF
RDF (Resource Description Framework) Dátový model tvorený orientovaným grafom ( bez násobných hrán)- prostředí na popis (webovských) zdrojů. Uložený v XML
Rozlišujeme Zdroj( moze mat vlasnosti), Prázdny uzol a literál ( Dátová hodnota ktorá nie je zdroj , môže mat dátový typ )
RDF graf je možné reprezentovať : Množinou, Graficky, Slovami v abecede, Gramatikom , najčastejšie sa používa zoznam trojíc (subject,predicate,object)
Forma zápisu je N3 notácia, zložitý formalizmus alebo používanejšia Turtle:
Turtle : URI ( jedinečná identifikácia ) v hranatých zátvorkách , forma prefixovej skratky
Literály v úvodzovkách
Trojice uzatvorené bodkou
Mezery, eol, … se ignorují
Opakujúce hodnoty môžeme vynechať, oddeľovať nie . ale ;
Viac trojíc s rovnakým subjekt a predicate oddeľovať objekty ,
Môžeme redukovať uzly na prázdne uzly , takýto uzol má lokálne meno ale nemá url
[[Soubor:Rdf.png|thumb|Rdf graf
RDF Schema
SPARQL
?nameX !! ?nameY !! ?nickY | ||
Alice | Bob | Prazdny vysledok, nieje to null |
Alice | Clare | CT |