VISUAL - Grafický dotazovací jazyk

69
VISUAL - Grafický dotazovací jazyk David Hoksza

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. - PowerPoint PPT Presentation

Transcript of VISUAL - Grafický dotazovací jazyk

Page 1: VISUAL - Grafický dotazovací  jazyk

VISUAL-

Grafický dotazovací jazyk

David Hoksza

Page 2: VISUAL - Grafický dotazovací  jazyk

Obsah

Model systému, práce se systémem VISUAL do OQL VISUAL do Komplexní algebry D-VISUAL

Page 3: VISUAL - Grafický dotazovací  jazyk

Vlastnosti

Vizuální návrh dotazů Objektový návrh Převod do OQL Prostorové dotazy

Page 4: VISUAL - Grafický dotazovací  jazyk

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í

Page 5: VISUAL - Grafický dotazovací  jazyk

OOS model

I dotazy jsou objekty Při vyhodnocování spolu komunikují objekty

Page 6: VISUAL - Grafický dotazovací  jazyk

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í, …

Page 7: VISUAL - Grafický dotazovací  jazyk

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

Page 8: VISUAL - Grafický dotazovací  jazyk

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)

Page 9: VISUAL - Grafický dotazovací  jazyk

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

Page 10: VISUAL - Grafický dotazovací  jazyk

Objekt Základní primitivum

Skládá se z: Atomických objektů (integer, …) Komplexních objektů Kolekcí (množina, sekvence, …)

Page 11: VISUAL - Grafický dotazovací  jazyk

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

Page 12: VISUAL - Grafický dotazovací  jazyk

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

Page 13: VISUAL - Grafický dotazovací  jazyk

Schéma DB

Page 14: VISUAL - Grafický dotazovací  jazyk

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í

Page 15: VISUAL - Grafický dotazovací  jazyk

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)

Page 16: VISUAL - Grafický dotazovací  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ů

Page 17: VISUAL - Grafický dotazovací  jazyk

Příklad dotazu

Page 18: VISUAL - Grafický dotazovací  jazyk

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)

Page 19: VISUAL - Grafický dotazovací  jazyk

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ů

Page 20: VISUAL - Grafický dotazovací  jazyk

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ý

Page 21: VISUAL - Grafický dotazovací  jazyk

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)

Page 22: VISUAL - Grafický dotazovací  jazyk

Příklad prostorových vztahů

F …rámeček (frame)

P …částice (particle)

W …okno (window)

A …anotace (neprostorový objekt)

Page 23: VISUAL - Grafický dotazovací  jazyk

Kompoziční vztah

E …experiment

A’ …anotace

Page 24: VISUAL - Grafický dotazovací  jazyk

Vztah třída-podtřída

Page 25: VISUAL - Grafický dotazovací  jazyk

Příklad prostorový a kompozičních vztahů

Page 26: VISUAL - Grafický dotazovací  jazyk

Neúplná cesta V případě, kdy neexistuje nejednoznačnost

v cestě k objektu, je možno nezadávat celou cestu, např.:

Page 27: VISUAL - Grafický dotazovací  jazyk

Operátor odhnízdění V minulém příkladě pouze neklastrované

částice Zavedení operátoru odhnízdění, který

“zploští” hierarchii:

Page 28: VISUAL - Grafický dotazovací  jazyk

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

Page 29: VISUAL - Grafický dotazovací  jazyk

Interní dotazy

Má pouze výstupní parametry Vstupní parametry jsou implicitně děděné z

dotazu, ve kterém je interní dotaz definován

Page 30: VISUAL - Grafický dotazovací  jazyk

Příklad interního dotazu

Page 31: VISUAL - Grafický dotazovací  jazyk

Metody

Uživatelské metody vyjádřeny ikonami a čárami, které je spojují

Ikona metody je spojena s jejími parametry tlustou čarou

Page 32: VISUAL - Grafický dotazovací  jazyk

Metody – příklad

Page 33: VISUAL - Grafický dotazovací  jazyk

Množinové operátory (1)

Page 34: VISUAL - Grafický dotazovací  jazyk

Množinové operátory (2)

Page 35: VISUAL - Grafický dotazovací  jazyk

VISUAL do OQL

Lze provést mapování VISUALu do OQL VISUAL jako front-end k OQL

Page 36: VISUAL - Grafický dotazovací  jazyk

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ů

Page 37: VISUAL - Grafický dotazovací  jazyk

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ů

Page 38: VISUAL - Grafický dotazovací  jazyk

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

Page 39: VISUAL - Grafický dotazovací  jazyk

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á

Page 40: VISUAL - Grafický dotazovací  jazyk

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í

Page 41: VISUAL - Grafický dotazovací  jazyk

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

Page 42: VISUAL - Grafický dotazovací  jazyk

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

Page 43: VISUAL - Grafický dotazovací  jazyk

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

Page 44: VISUAL - Grafický dotazovací  jazyk

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ů

Page 45: VISUAL - Grafický dotazovací  jazyk

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)

Page 46: VISUAL - Grafický dotazovací  jazyk

Příklad převodu do OQL

Page 47: VISUAL - Grafický dotazovací  jazyk

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ů

Page 48: VISUAL - Grafický dotazovací  jazyk

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í

Page 49: VISUAL - Grafický dotazovací  jazyk

KA - Kompoziční hierarchie (1)

Pro převod kompozičních hierarchií je vytvořen graf z grafické reprezentace

Page 50: VISUAL - Grafický dotazovací  jazyk

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

Page 51: VISUAL - Grafický dotazovací  jazyk

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

Page 52: VISUAL - Grafický dotazovací  jazyk

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ě

Page 53: VISUAL - Grafický dotazovací  jazyk

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

Page 54: VISUAL - Grafický dotazovací  jazyk

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

Page 55: VISUAL - Grafický dotazovací  jazyk

KA – Aplikátor metod pro metody

Page 56: VISUAL - Grafický dotazovací  jazyk

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

Page 57: VISUAL - Grafický dotazovací  jazyk

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

Page 58: VISUAL - Grafický dotazovací  jazyk

KA – Aplikátor metod pro agregační funkce (2)

Page 59: VISUAL - Grafický dotazovací  jazyk

KA – Aplikátor metod pro agregační funkce - příklad

Page 60: VISUAL - Grafický dotazovací  jazyk

KA – Aplikátor metod pro množinové operace

Page 61: VISUAL - Grafický dotazovací  jazyk

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

Page 62: VISUAL - Grafický dotazovací  jazyk

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)

Page 63: VISUAL - Grafický dotazovací  jazyk

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

Page 64: VISUAL - Grafický dotazovací  jazyk

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

Page 65: VISUAL - Grafický dotazovací  jazyk

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í ,

Page 66: VISUAL - Grafický dotazovací  jazyk

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ů

Page 67: VISUAL - Grafický dotazovací  jazyk

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)

Page 68: VISUAL - Grafický dotazovací  jazyk

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

Page 69: VISUAL - Grafický dotazovací  jazyk

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’,,)