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
AliceBobPrazdny vysledok, nieje to null
AliceClareCT