Post on 08-Jan-2016
description
VISUAL-
Grafický dotazovací jazyk
David Hoksza
Obsah
Model systému, práce se systémem VISUAL do OQL VISUAL do Komplexní algebry D-VISUAL
Vlastnosti
Vizuální návrh dotazů Objektový návrh Převod do OQL Prostorové dotazy
Význačné prvky VISUAL
1) Objektově orientovaný specifikační model
2) Klient-server model dotazů
3) Jednotná interpretace a násobné vykonání
4) Jednotné vyhodnocení metod, agregačních funkcí a množinových operací
OOS model
I dotazy jsou objekty Při vyhodnocování spolu komunikují objekty
Výhody OOS modelu
Jednotnost Sdílení dotazů Paralelní/Distributivní zpracování dotazů Omezení času zpracování dotazu Synchronizované zpracování dotazu Bezpečnost Hierarchie, dědičnost, přetěžování, …
Klient-server model dotazů
Objekt jehož služby jsou využívány – server Objekt, který vyžaduje služby jiného dotazu
– klient Každý dotaz (mimo hlavního) – server i
klient
Jednotná interpretace, násobné vykonání
Vykonání (pod)dotazu lze provést několika způsoby – komplexní algebra, OQL, … (a to v rámci jednoho dotazu)
Jednotné vyhodnocení
Společné vlastnosti metod, agregačních funkcí, množinových operátorů
Existence operátoru “Method Aplier” pracující s těmito vlastnostmi
Jednotná metoda optimalizace
Objekt Základní primitivum
Skládá se z: Atomických objektů (integer, …) Komplexních objektů Kolekcí (množina, sekvence, …)
Oblast zájmu (doména) (1) V této prezentaci – vlastnosti materiálu Termíny:
Částice (Perticles) Porucha (Fracture) Dělení částic (Particle splitting) Mřížka (Grid) – plocha rozdělena mřížkou Rámeček (Frame) – mikrosnímek v mřížce Shluk (Cluster) – velikost, hustota, okraje Experiment navíc obsahuje
– grafy, histogramy, audio, video, komentáře, sekvence mřížek, čas počátku a konce experimentu
Doména (2) Každý rámeček obsahuje čas vzniku (z
mřížky) Částice se mohou dělit (singleEvolve), nebo
spojovat (splitEvolve) v průběhu času
Schéma DB
Dotazy Typy dotazů:
Hlavní dotaz Externí dotaz Interní dotaz
Části dotazů: Objekt hlavičky dotazu Objekt tělo dotazu
V jednom okně může být více ikon dotazů se stejným jménem, pak je výsledkem jejich sjednocení
Hlavička dotazu Obsahuje:
Jméno dotazu Parametry (seznam vstupních a výstupních atributů) Specifikaci výstupního typu
Vstupní parametry se liší podle typu dotazu: Interní dotazy
– Nemá vstupní parametry (pouze implicitní) Hlavní a externí dotazy
– Parametry v závorce za jménem spolu s typy (VISUAL je silně typovaný jazyk)
Tělo dotazu Může obsahovat:
Ikonizované objekty Podmínkové okénka Reference na interní a externí dotazy
Podmínkové okénka obsahují Aritmetické výrazy
– Za operandy mohou mít agregační funkce operující na dotazech
Množinové výrazy– Mohou se odkazovat na výstupy dotazů
Příklad dotazu
Ikonizované objekty Čtyři typy ikonizovaných objektů:
Doménové objekty – obsahuje:• Jméno proměnné• Specifikaci typu• Doménu (volitelně)• Grafickou reprezentaci
Objekty metod Rozsahové objekty (range objects) Prostorové objekty (spatial enforcement region
objects)
Vztahy mezi objekty Typy vztahů:
Prostorový vztah Kompoziční vztah (compostition membership) Vztah kolekce (collection membership) – nastává:
1) Vnější objekt reprezentuje volání dotazu
2) Vnější objekt má atribut, který je kolekcí vnitřních objektů
Prostorové vztahy (1) Prostorový atribut
– Atribut doménového objketu specifikující geometrické souřadnice objektu
Prostorový objekt– Objekt obsahující prostorový atribut
Neprostorový objekt– Objekt, který není prostorový
Prostorové vztahy (2) Prostorové vztahy mezi prostorovými
objekty jsou vyjádřeny zvýrazněnou oblastí uvnitř těla dotazu
Pro různé domény se zvýrazněné oblasti mohou různě uživatelsky definovat podle jejich významu
Tyto oblasti nazýváme “prostorovými oblastmi” (spatial-enforcement region)
Příklad prostorových vztahů
F …rámeček (frame)
P …částice (particle)
W …okno (window)
A …anotace (neprostorový objekt)
Kompoziční vztah
E …experiment
A’ …anotace
Vztah třída-podtřída
Příklad prostorový a kompozičních vztahů
Neúplná cesta V případě, kdy neexistuje nejednoznačnost
v cestě k objektu, je možno nezadávat celou cestu, např.:
Operátor odhnízdění V minulém příkladě pouze neklastrované
částice Zavedení operátoru odhnízdění, který
“zploští” hierarchii:
Externí dotazy Podobný koncept jako procedury a funkce Jsou volány z těla dotazu ikonou s názvem
externího dotazu Při volání musí být předávané parametry
svázané s nějakou proměnnou volajícího dotazu
Interní dotazy
Má pouze výstupní parametry Vstupní parametry jsou implicitně děděné z
dotazu, ve kterém je interní dotaz definován
Příklad interního dotazu
Metody
Uživatelské metody vyjádřeny ikonami a čárami, které je spojují
Ikona metody je spojena s jejími parametry tlustou čarou
Metody – příklad
Množinové operátory (1)
Množinové operátory (2)
VISUAL do OQL
Lze provést mapování VISUALu do OQL VISUAL jako front-end k OQL
Mapování do OQL
Je třeba vyřešit mapování:
Objektu hlavního dotazu Externích a interních dotazů Návratových typů Podmínkových okének Grafických objektů
Mapování hlavního dotazu V OQL nejsou metody pro explicitní
předávání parametrů Parametry externích objektů musí být
konstruovány jako nově vytvořené objekty v hlavním dotazu
Atributy interních dotazů budou přístupné v interním dotazu jako vázané, díky tomu, že v OQL je viditelnost z podbloků
Mapování externích a interních dotazů
Všechny vstupní parametry konstruovány v hlavním dotazu
Externí dotazy jsou konvertovány na interní dotazy
Výstupní parametry jsou ukládány do objektu vytvořeného vnějším objektem
Mapování návratových hodnot
VISUAL povoluje různé návratové typy, stejné jako OQL
Sémantika návratových typů a operací mezi nimi je stejná
Mapování podmínek Různé typy podmínek mapovány do
různých struktur OQL Aritmetické výrazy
– Mapovány do “where” části výrazu ”select from where” Výrazy náležení
– Náležení je mapováno do operátoru “in”
– Nenáležení mapováno jako kombinace unárního operátoru “not” a testování náležení
Množinový výrazy– VISUAL obsahuje , , , – Existuje více způsobů mapování
Mapování množinových výrazů
1. Mapování pomocí binárních množinových operací (union, intersect, except):
• A B na (((A - B) = {}) and ((B - A) != {}))• A B na ((A - B) = {})• A B na (((A - B) = {}) and ((B - A) = {}))
2. Mapování pomocí univerzálního a existenčního kvantifikátoru
• A B na (for all x in A:(x in B)) and (exists x in B:(not (x in A))))
• A B na (for all x in A:(x in B))• A B na ((for all x in A:(x in B)) and ((for all x in B:(x in A))
Mapování grafických objektů
Vztahy a objekty, které je třeba mapovat:
Doménový grafický objekt uvnitř doménového grafického objektu
Doménový grafický objekt uvnitř dotazového grafického objektu
Ikony metod, prostorová okna, prostorové ikony
Doménový objekt uvnitř doménového objektu
Kompoziční hierarchie Oba objekty jsou v kartézském součinu (za
“from”) a určení náležení je v “where” Př.:
Select … from …e:Experiment, F:Frame where F.experimentIn( ) = e
Doménový objekt uvnitř dotazu
Typy objektů určují návratovou hodnotu dotazu
Mapováno pomocí “select from where” – from a where určují tělo dotazu– select odpovídá doménovým objektům– Počet selectů je určen počtem vnitřních objektů
Ikony metod, prostorová okna, prostorové oblasti
Metody jsou mapovány do booleovských funkcí, které se uplatňují ve “where” části dotazu
Prostorová okna mají smysl pouze tehdy, když jsou v prostorové oblasti
Prostorové vztahy jsou mapovány na funkce v OQL (porovnávají souřadnice)
Příklad převodu do OQL
Převod z VISUAL do komplexní algebry (1)
Komplexní algebra vyhodnocuje odspoda nahoru
Kvůli efektivitě Tři fáze:
1) Překlad hlavičky dotazu
2) Překlad těla dotazu
3) Připojení poddotazů
Převod z VISUAL do komplexní algebry (2)
Před převodem je vytvořen orientovaný graf, kde vrcholy jsou dotazy a hrany vedou do poddotazů
Graf je topologicky setříděn Je-li nalezen cyklus => chyba Dotazy jsou vyhodnocovány v opačném
pořadí k topologickému setřídění
KA - Kompoziční hierarchie (1)
Pro převod kompozičních hierarchií je vytvořen graf z grafické reprezentace
KA - Kompoziční hierarchie (2)
Aplikace odhnízdění na každou větev grafu
{f} F
{c1,c2} C
{p1,p2,p3} P1
{p4,p5} c1
{p6,p7} c2
Cesta (F-C-P2) = {(f, c1, p4), (f, c1, p5), (f, c2, p6), (f, c2, p7)}
Cesta (F-P1) = {(f, p1), (f, p2), (f, p3)}
KA - Operátor odhnízdění a hierarchie
Řeší se stejně jako v obecném případě, ale nejdřív je aplikován operátor odhnízdění
- zde je potřeba přidat nové proměnné pro členy, které nejsou v hierarchii
KA - Spojení dotazů (1)
Dotaz A využívá služby dotazu B při třech akcích:
Volání metody (zahrnuje přímé volání dotazů skrz ikony)
Počítání agregačních funkcí Vyhodnocování množinových operátorů
Všechny akce jsou prováděny jednotně
KA - Spojení dotazů (2) Všechny tři akce mají společné:
Mají vstupní kolekci Jsou to aplikace metod (funkcí) na členy vstupní
kolekce Produkují výstupní kolekci obsahující výsledky
aplikace metody na členy vnitřní kolekce
=> Aplikátor metod => Jednotnost optimalizačních metod pro
metody (funkce), agregační funkce, množinové operace
KA – Aplikátor metod Černá skříňka
Vstup– “Vstupní funkce” - metoda, agregační funkce,
množinová operace
– „Vstupní množina“ – doména související funkce• Obsahuje přirozené spojení domén parametrů vstupní
funkce – to může být více, než vstupní funkce žádá => projekce
– Obecná projekce – umožňuje duplikaci vstupních parametrů na rozdíl od klasické projekce
– Výstup má tvar nový_element.výstup_funkce, kde “.” je zřetězení a nový_element je element vzniklý přirozeným spojením
KA – Aplikátor metod pro metody
KA – Aplikátor metod pro metody - příklad
SP – predikát selekce
Výstup SP = {(p, p1, false), (p, p2, false), (p, p3, true), (p, p4, false)}
KA – Aplikátor metod pro agregační funkce (1)
Používá se GROUP-By šablona, která říká, které hodnoty “groupovacích” atributů se budou uvažovat
Na výstup jdou atributy z šablony spolu s výstupem => odpadá problém s prázdným dotazem (i COUNT(prázdná tabulka) nic nevrací)
KA – Aplikátor metod pro agregační funkce (2)
KA – Aplikátor metod pro agregační funkce - příklad
KA – Aplikátor metod pro množinové operace
KA - Aplikátor metod pro množinové operace – př.
GROUP1 a GROUP2 jsou nové atributy vytvořené Group-by-template
Výstupy group operátoru na Frames(E,F) a Frames_With_Cluster(E,F1) jsou:
(E, GROUP1) = {(e1,{f1,f2,f3}), (e2,{f4,f5}), (e3,{f6})}
(E, GROUP2) = {(e1,{f1,f2,f3}), (e2,{f4})}
D-VISUAL Nosný jazyk VISUAL Tvořen pravidly => D(atalog)-VISUAL Podobný relačnímu kalkulu s množinami
(RC/S) Umožňuje rekurzi Nemá univerzální kvantifikátor (nahrazuje jej
množinovými operátory)
Predikáty D-VISUAL (1)1. X θ1 Y , kde θ1 {=, , <, , >, }, X,Y jsou konstanty nebo
proměnné
2. X θ2 S, kde θ2 {,}, X je konstanta nebo proměnná a Y je množina
3. S1 θ3 S2 , kde θ3 {,,,,}, S1, S2 jsou množiny
4. S1 θ4 S2 = , kde θ4 {,,-}, S1, S2 jsou množiny a značí prázdnou množinu
5. S = , kde S je množina
6. S = Ik, kde S je množina stupně k, I je množina celých čísel, Ii = IxIi-1, I>1, a x značí kartézský součin
Predikáty D-VISUAL (2) Používá pozitivní a negativní (nevestavěné
predikáty) R(X) a ¬R(X), kde R je relace a X je vektor proměnných a konstant
Množiny v D-VISUAL Množina je:
množina konstant definovaných operátorem {,} pozitivní predikát formule tvaru <pravidlo1,,…, pravidlok>
Množinové operátory:– Pro manipulace s množinami
, , -
– Operátory porovnání ,,,,
– Operátory náležení ,
Program D-VISUAL Skládá se z množiny pravidel typu “hlava:-
tělo” Hlava je pozitivní predikát a tělo je
konjunkce predikátů
Bezpečné výrazy v D-VISUAL
Aby D-VISUAL neprodukoval nekonečné výsledky, nebo nevyhodnocoval nekonečně dlouhou, zavádíme omezení:
Proměnná z hlavičky se objeví také v těle dotazu Všechny proměnné v těle dotazu (mimo těch, které
jsou pouze v množinách) jsou omezené. Proměnná x je omezená, když:
– X je členem pozitivního predikátu mimo množinu v těle– X je členem X S, kde S je množina bez X v libovolném
ze svých pravidel– X je členem X = Y a Y je omezená
Každé pravidlo definující množinu splňuje (a) a (b)
Příklady D-VISUAL (1) experiment(eid, first-time, last-time), frame(fid, ftime, parent, eid), cluster(cid,fid, centroid_X,
centroid_Y), particle(pid, fid, centroid_X,
centroid_Y), particle-in-cluster(pid, cid), splitEvolves(pid, pid),
Příklady D-VISUAL (2) Particles_In_Window(P) :- experiment(e,,), frame(F,,,e),
particle(P,F,X,Y), window_Xlow X, X window_Xhigh, window_Ylow Y, Y window_Yhigh
Experiment_With_All_Frames_Having_Clusters(E) :- experiment(E,,), Frames(E,F1) :- experiment(E,,), frame(F1,,,E)<Frames_With_Cluster(E,F2) :- experiment(E,,), frame(F2,,,E), cluster(C,F2,,)
Frames_With_No_Clusters(F) :- experiment(e,,),frame(F,,,e), F Frames_With_Cluster(F’) :- frame(F’,,,), cluster(C,F’,,)