FUZZY SQL
Radomir Tarabič,
Egor Ivkin
Co je fuzzy logika ?
Fuzzy logika operuje s tzv. mlhavými pojmy
fuzziness = mlhavost
Fuzzy logika představuje rozšíření klasické booleovské logiky, díky němuž lze lépe pracovat s nepřesnými nebo vágními daty
Tam, kde klasické logické uvažování vyžaduje pouze hodnoty ano a ne, může fuzzy logika pracovat s pojmy jako možná, skoro či velmi
Kdo jí vymyslel ?
Vícehodnotová logika byla "objevena" Mr. J. Lukadiewiczem v roce 1920
Fuzzy logika a teorie množin jako taková byla představena Mr. Lotfi Zadehem v roce 1965.
První kdo prakticky použil fuzzy logiku byl Abraham Mandani v roce 1970 (kontrolní systém pro turbíny)
Proč je fuzzy logika důležitá?
Striktní popis vede k popisu skutečnosti pouze pomocí dvouprvkové množiny {0,1}.
Pokud problém nelze jednoznačně určit, rozkládá se na menší podproblémy, ale za cenu místa a opět lze použít jen dvouprvkovou množinu.
V případech, kdy je již nemožné nebo neúnosné takto problém rozdělit, dopouštíme se jisté chyby a tím je dán odklon od reality
Proč je fuzzy logika důležitá? -2
Význam fuzzy logiky lze vnímat ve dvou rovinách.
První rovinou je potřeba uchopit a pracovat s nepřesnými či mlhavými daty.
Druhou rovinou je celkový přístup k popisu reálného světa.
Při používání přesných popisů totiž dochází k idealizování skutečnosti a tedy odklonu od reality.
Kde se fuzzy logika používá ?
Aplikace:
Řízení (robotika, spotřební elektronika)
Informační systémy (DBMS, získávání informací)
Rozpoznávání obrazců (strojové vidění, zpracování obrázků)
DSS
Běžné otázky
V nemocnici: “Dej mi seznam mladých pacientů kteří trpí hepatidou a byli přijati přibližně před více jak 5 týdny”
Ve škole: “Dej mi seznam studentu kteří prošli matematikou s dobrými známkami a fyzikou s průměrnými“.
V supermarketu: “Seznam výrobků, které se prodaly velmi dobře a u kterých jsme neutratili mnoho za jejích reklamu”
Příklad
Tabulka “Projects”
Project Budget(1000$) Duration Staff
p01 55 108 29
p02 48 115 33
p03 73 102 10
p04 81 87 40
p05 78 97 16
p06 57 90 25
p07 91 125 41
p08 90 88 27
p09 65 117 37
p10 93 93 45
Příklad - 2 Chceme najít projekty s vysokým rozpočtem které netrvali
doluho
Můžeme to zjistit, například, následujícím dotazem:
select Project, Budget, Duration from Projects where Budget>80 and Duration<90
Project Budget(1000$) Duration
p04 81 87
p08 90 88
Výsledek• Výsledek splnuje požadavky, ale existuji projekty které jsou
velice blízko požadavkům a nejsou ve výsledku.• Zkusíme podmínku rozšířit:
select Project, Budget, Duration from Projects where Budget>75 and Duration<100
Project Budget(1000$) Duration
p04 81 87
p05 78 97
p08 90 88
p10 93 93
Výsledek - 2
Dostali jsme větší množství dat, ale stale existují data která jsou na okraji, ale do výsledku nejsou zahrnuta.
Například, projekt p03 má rozpočet 73 000 a délku trvání 102 a mohl by taky odpovídat naším potřebám.
Další rozšiřování nemá smysl – jak budeme vědět kde zastavit.
Musíme to zkusit jinak
Výsledek s Fuzzy SQL
Definujme fuzzy množinu “vysoký” pro sloupec Budget
Definujme fuzzy množinu “krátký” pro sloupec Duration
Výsledek s Fuzzy SQL - 2
V každém grafu je zřejmě kolik která hodnota náleží do fuzzy množiny
Zkusíme vytvořit obrazec který nám výpočte kolik náleží dvojice (Budget, Duration) do požadavku
Uděláme to tak, že vypočítáme aritmetický průměr
Výsledek s Fuzzy SQL - 3
S použitím avg :
Project Budget(1000$) Duration CIX
p08 90 88 0,964
p10 93 93 0,755
p04 81 87 0,606
p07 91 125 0,486
p06 57 90 0,439
p05 48 115 0,073
p01 55 108 0,000
p02 48 115 0,000
p09 65 117 0,000
p03 73 102 0,000
Běžné problémy
Zadání 1: Zákazník si vybírá barvu obkladového materiálu. Chce barvu “podobnou” jiné barvě, kterou zná.
Řešení: “Podobná” barva je taková barva, jejíž složky RGB se liší maximálně o 10 od složek RGB barvy definované zákazníkem.
Problém: Pokud se barva liší od barvy zadané uživatelem pouze v 1 složce o 11, zákazník ji neuvidí
Běžné problémy - 2
Zadání2: Realitní kancelář páruje nabídku s “odpovídající” poptávkou. Nabídka i poptávka jsou charakterizované lokalitou, cenou a dalšími atributy.
Řešení: Pro každý atribut zvolit jistou toleranci.
Problém: Které dvojice nabídka/poptávka si ještě odpovídají a které už ne?
Elektronický katalog
Problém prohledávání elektronických katalogů zboží: Tradiční relační databáze podporují vyhledávání na
základě přesných podmínek• Jsou vráceny právě výrobky přesně odpovídající zadané
podmínce• Zákazník se většinou zeptá „špatně“
• Příliš nepřesná podmínka vracející obrovský počet záznamů• Příliš detailní specifikace, která nic nevrátí
Představa zákazníka• Neví, jak přesně popsat, co chce• Má o tom jen nejasnou představu
Nedostatky SQL
Jazyk SQL používá Booleovu algebru, což přináší jeden velký problém:
V dotazu typu A and B and C and … and Zje nesprávnost z našeho pohledu v tom, že dotazu nevyhovují údaje, které nesplňují jednu z podmínek A až Z, stejně tak jak nevyhovují údaje, které nesplňují dvě a více podmínek
Není tedy rozdílu mezi údaji, které splňují různý počet podmínek dotazu
Zavedení fuzzy množin Každému prvku je přiřazen stupeň příslušnosti, který
vyjadřuje míru členství prvku ve fuzzy množině.
Stupeň příslušnosti nabývá hodnot z intervalu <0,1>.
Čím vyšší (nižší) je stupeň příslušnosti, tím více
(méně) platí, že prvek náleží do fuzzy množiny.
Jinými slovy vyjadřuje míru relevantnosti prvku v dané množině.
Hodnota 0 vyjadřuje stav, kdy prvek do množiny vůbec nepatří a hodnota 1 stav, kdy prvek do množiny zcela patří
Fuzzy množiny
Př. (Plat): Pokud považujeme příjem zhruba nad 35 000 Kč za vysoký, potom z tohoto pohledu je méně důležitý rozdíl mezi příjmem 34 000 Kč a 35 000 Kč než mezi platem 32 000 Kč a 33 000 Kč. Samozřejmě, s rostoucím platem roste i stupeň příslušnosti do fuzzy množiny vysoký příjem.
Příjem (Kč) Hodnota Příjem (Kč) Hodnota
24 000 0,000 35 000 0,500
26 000 0,021 36 000 0,519
29 000 0,122 37 000 0,572
32 000 0,352 38 000 0,648
33000 0,428 40 000 0,812
34 000 0,481 46 000 1,000
Fuzzy množiny - 2
Př (věk): Podívejme se na vágní pojem střední věk. Můžeme si jej představit jakožto člověka s věkem okolo 35 let.
Věk Hodnota Věk Hodnota
24 0,000 35 1,000
26 0,024 36 0,955
29 0,191 37 0,832
32 0,661 38 0,661
33 0,835 40 0,316
34 0,955 46 0,000
Principy
Fuzzy relace Rf je podmnožina kartézského
součinu domén D1,…,Dn, kde jedno Di je DU — interval <0,1>
Hodnota libovolné n-tice říká, jak hodně tato n-tice náleží do fuzzy relace Rf
Obvyklou relaci je možné považovat za fuzzy relaci, kde ve sloupci DU je stupeň roven vždy jedné pro každou n-tici.
Fuzzy modelování
Fuzzy relace se získá pomocí fuzzy podmínky
aplikované na obvyklou relaci.
Fuzzy podmínka se reprezentuje čtyřmi typy termů: Logické (Booleans) Transformace (Transformations) Přesívání, změny (Alterations) Interakce (Interactions)
Transformace
Transformace definuje fuzzy množinu, jejíž interpretace si můžeme představit jako převod z kartézského součinu množin E1, …, En do intervalu <0,1>.
Příklad transformace:• vysoký: VÝŠKA → <0,1>, h → µvysoký(h) • štíhlý: VÝŠKA x VÁHA → <0,1>, (h, w) → µštíhlý (h, w)
Porovnání může být i přímo mezi objekty: • větší než: VÝŠKA x VÝŠKA → <0,1>, (h1, h2) → µvětší_než
(h1, h2)
Transformace - 2
Je navrženo několik základních funkci na vyjádření hodnoty transformace.
Trapezoid :
α, β, γ, δ = pevné; α< β < γ < δ ;
S (x, α, β, γ, δ) = 0 , x ≤ α nebo x ≥ δ S (x, α, β, γ, δ) = (x-α)/(β-α) , α ≤ x ≤ β S (x, α, β, γ, δ) = 1 , β ≤ x ≤ γ S (x, α, β, γ, δ) = (x-δ)/(γ-δ) , γ ≤ x ≤ δ
Transformace - 3
Pravděpodobnostní rozdělení
f(x) = 1 – prvek určitě patří do množiny
f(x) = 0 – prvek určitě nepatří do množiny
f(x) Î (0, 1) – prvek patří do množiny s pravděpodobností f(x)
Přesívání, změny
Přesívání, změny má za úkol nějakým způsobem zpracovat slova typu mnoho, okolo, velmi mnoho, málo, víceméně a negace.
Často se slovo velmi representuje následujícím způsobem:
velmi fuzzycon (x) = (µfuzzycon(x)) 2
A negace: negace fuzzycon (x) = 1-µfuzzycon(x)
Interakce
Interakce má za úkol spolupráci mezi fuzzy množinami.
Konjunkce • Minimum z obou ohodnocení• μA۸B(x)=min(μA(x), μB(x))
Disjunkce• Maximum z obou ohodnocení• μA٧B(x)=max(μA(x), μB(x))
Fuzzy modelování - závěr
Př.: Vyberme si člověka velmi vysokého a současně s
věkem kolem 40 let.
select JMENO from LIDI where (VEK=okolo-40) and (VYSKA=velmi vysoký)
Fuzzy podmínka bude vypadat následovně:
min ((µvysoký(výška))2, µokolo-40(věk))
příkaz SELECT Obvykle příkaz SQL zapisujeme: select <attributes> from <relations> where
<condition>
• S fuzzy, SELECT příkaz zůstává v podstatě stejný, kromě:
• složený fuzzy podmínky se můžu objevit na místo Boolean
• musíme specifikovat regulacioni parametr nová formulace: select n|t <attributes> from <relations>
where <fuzzy_condition>
příkaz SELECT - 2
Př: Vyber zaměstnance ve středním věku mající vysoký příjem.
Klasické SQL: select NAME, AGE, INCOME
from EMPLOYEE where (AGE >= 25 and AGE <= 45) and (INCOME >= 35, 000)
Fuzzy SQL: select 0.75 NAME, AGE, INCOME
from EMPLOYEE where (AGE = middle) and (INCOME >= high)
Míra splnění
Pro každou podmínku je možné určit hodnotu při které
požadujeme podmínku za splněnou. <podmínka> THOLD g
Př: Vrat mi všechny osoby s čistými vlasy (in minimum degree 0.5) které jsou možná vyšší než proměnna $Tall (in minimum degree 0.8):
select * from Person
where Hair FEQ $Fair thold 0.5 and Height FGT $Tall thold 0.8
Fuzzy komparátory
Kromě typických komparátory (=, >...), FSQL zahrnuje fuzzy komparátory v následující tabulce:
Komparátor pro Možnost Komparátor pro Nutnost Význam
FEQ nebo F = NFEQ nebo NF = Fuzzy Rovnaky
FDIF, F! nebo F = <> NFDIF, NF! NF = nebo <> Fuzzy Různé
FGT nebo F> NFGT NF> Fuzzy Větší než
FGEQ nebo F> = NFGEQ nebo NF> = Fuzzy Větší nebo se rovná
FLT nebo F < NFLT nebo NF < Fuzzy Menší než
FLEQ nebo F <= NFLEQ nebo NF <= Fuzzy Menší nebo roven
MGT nebo F>> NMGT nebo NF>> Mnohem větší než
MLT nebo F << NMLT nebo NF << Mnohem menší než
Lingvistické proměnné
Jestli je možno provést fuzzy úpravy na atributu, potom mu můžeme přiradit lingvistickou proměnu
Existují dvě možnosti:I. Proměnné pro atributy na uspořadatelných množin:
každém atributu je přirazeni pravděpodobnostní trapezoidní rozdělení - $Short, $Tall, $Very_Tall, $Very_Intelligent
II. Proměnné pro atributy na neuspořadatelných množin: pro každou dvojici atributů je definovaná relace podobnosti, která náleži do intervalu <0,1>
Množinové operace
Interpretace základních množinových operaci nad fuzzy množinami:
Sjednocení: µAuB (x) = max (µA (x), µB (x)) Průnik: µA∩B (x) = min (µA (x), µB (x)) Rozdíl: µA-B (x) = µA∩B‘ (x) = min (µA (x),(1-µB(x)))
Základní Fuzzy Konstanty
FSQL definuje syntaxi pro některé fuzzy konstanty. Nekteré jsou podrobně uvedeny v následující tabulce:
Fuzzy Konstanty Význam
UNKNOWN Neznámá hodnota atributu, ale je použitelný
UNDEFINED Atribut není použitelný ani nemá smysl
NULL Naprostá neznalost: Nevíme nic o tom
$ [a, b, c, d] Fuzzy lichoběžník (<= b <= c <= d)
$ label Jazyková Nálepka
[n, m] Interval "Mezi n a m" (= b = n a c = d = m)
# n Fuzzy hodnota: "Přibližně n"
Podmínka IS
<Fuzzy_Atribut> IS [NOT] (UNKNOWN | UNDEFINED | NULL )
Tahle podmínka (bez NOT) bude splněná, jestli se hodnota levého fuzzy atributu (Fuzzy_Atribut) rovná fuzzy konstanty která je na pravé straně.
Jestli atribut není fuzzy a konstanta je rovná NULL, podmínka bude pochopena dle definice v DBMS.
Jestli je použito FEQ namísto IS, stupeň kompatibility mezi atributem a konstantou je porovnaný i když se atribut nerovná konstanty.
Funkce CDEG()
Zobrazuje sloupec s plněním stupeň stavu dotazu na konkrétní atribut, který je vyjádřen v závorkách jako argument
Pr: Ukázka použití CDEG() funkce: používá trapezoidní konstantu a vyhýba se UNKNOWN hodnotami
select City, CDEG(Inhabitants) from Population where Country=‘Czech Republic’ and Inhabitants FGEQ $[200,350,650,800] .75 and Inhabitants is not unknown
Having
Uvažujme následující relaci: employee(epnum, name, age, depnum, job, salary,
commission)
group by podmínka na štěpení relace do podmnožin.having podmínka se používá na výběr některých z
předchozích podmnožin .
Mějme dotaz:“ Oddělení u kterých součet platů zaměstnanců nadvyšuje 10000$.“
select depnum from employee group by depnum having sum (salary) > 10000$
Having - 2
Tyhle možnosti jsou rozšířený tak, že supen náležení je přiděleny každé podmnožiny z daného rozdělení.
select n|t <atributes 1’> from <relations> where <bool-cond> group by <atributes 1> having <fuzzy-cond-aggreg>
Nový dotaz: Dej mi 10 nejlepších oddělení s ohledem na podmínku: průměrná hodnota platů úředníku je kolem 1000$.
select 10 depnum from employee where job = ‘clerk’ group by depnum having around(avg(salary+comission), 1000)
Implementace FSQL databáze
Architektura a implementace
3 možnosti přístupu:• Klassicka data (crisp data) + fuzzy dotazy (obsahují
fuzzy operátory)• Fuzzy data + klassicke dotazy .• Fuzzy data + Fuzzy dotazy
Prototyp FRBD
Tady popíšeme jeden z prototypu Fuzzy Relační DB. Tento FSQL server byl implementován pomoci existující DBMS. Toto řešení má 3 důsledky :
• Pomalejší než nativní implementace • Snadná implementace • Dostáváme všechny výhody stávající
DBMS(bezpečnost, a td)
Prototyp FRBD
Jako DBMS byla vybrána ORACLE, Kvůli flexibilitě, snadné šiřitelnosti. Procedurální jazyk PL/SQL umožňuje vytvoření , programových balíčku s funkce a procedury. Jistě může být vybrána jiná DBMS. Existuje implementace i na PostgreSQL.
Architektura FRBD
V základě obsahuje 3 části.
• Datová model: Tradiční data (standartni databáze) a FMB (Fuzzy meta-knowledge base)
• FSQL server. • FSQL client.
Data
Může být rozdělena do dvou kategorie. • Tradiční databáze - informace o relaci + speciální
formát Pro uložení fuzzy atributy.
Fuzzy atributy mají 3 různé typy. TYP 1• Normální hodnoty (crisp values) , ale mají ještě
definované lingvistické lichoběžné proměně nad nimi, které umožňuji dělat dotazy víc flexibilní.
Při vytvoření dotazů můžeme použít fuzzy konstanty(viz tabulka.)
Tabulka konstant při dotazech
Fuzzy atributy typ 2
TYP 2 obecně hodnoty , plus moznostni rozdělení
(posibility distribution), nad setříděnou doménu (ordered underlying domain). Při dotazovaní můžeme ukládat a použít kterékoli fuzzy konstantu(viz tabulka)
Fuzzy atributy typ 3
TYP 3Lingvisticke promene. Nad nimi mužeme definovat podobnost ( pomoci FEQ),
ale samozřejme nemužeme použit žadnou konstantu s tabulky.
Priklad: Vaha . Marek ma vetsi vahu než Karel o koeficient
0.9=>Muzeme pouzit operator FEQ.
FMB
Fuzzy meta-knowledge base. Obsahuje data o FRDB v relačním formátu, A meta-data o jednotlyvych fuzzy atributech( typy 1,2,3).
Typy funkce
Oracle verze FSQL Server obsahuje 3 typy funkce • Překladové funkce (FSQL2SQL), po analýze dotazů,
převádí ho do SQL dotazů nebo vypíše chybu
• Zobrazovací funkce - převádí fuzzy atributy s interního formátu do přehledně formy.
• Fuzzy poravnovaci funkce -poravnava fuzzy hodnoty, a počítá stupeň kompatibility (CDEG())
FSQL client
Slouží jako interface mezi uživatelem a FSQL serverem. Uživatel žádá dotaz, pak program postará o tom aby uživatel dostal výsledek.
Architektura, Schéma
Architektura, Schéma
1) FSQL client posílá FSQL dotaz do serverů. 2) FSQL server provede analýzu dotazů, a pokud on
je korektní, vytvoří příslušný SQL dotaz, pomoci Fuzzy Meta-knowledge base.
3) Klient přečte převedeny SQL dotaz. 4) Klient posílá dotaz do příslušné databáze. Při
vykonání dotazů se používají funkce FSQL serverů (comparatory a td.)
5) Klient dostává výsledek a zobrazí ho.
Důsledky
Tato model není ideální pro konečný produkt Krok 3 a 4 je možné pro zvýšení efektivity vynechat . Ale je dobře že tady je oddělena funkce FSQL serverů (překládací funkce a td) a Database. Hlavní výhodou ale je to že můžeme použít velkou sadu fuzzy data.
Jiné SQL-based fuzzy languages
SQlf
Format : SELECT [N|T|N,T] <select list> FROM <table list> WHERE <fuzzy condition>
Tato konstrukce vrátí jenom N řádku které splňuje podmínku víc než stupeň T.
Rozdíl FSQL a SQLf
Jaké je vidět SQLf je mnohem víc omezena než
FSQL. 1) FSQL dovoluje použití thresholds(T hodnota) v libovolně jednoduché podmínce. 2) SQLf dovoluje porovnání jenom tradičných hodnot(crisp values) spolu s Lingustickymi proměny , nebo ”přibližně ekvivalence” mezi tradiční hodnoty. (Příklad: Jestli “well-paid”; je definovány fuzzy predikáte pak můžeme napsat “WHERE saláry = well-paid”).
dmFSQL
DmFSQL je rozšíření FSQL, zaměřena na dobývání znalosti (data mining).
1) Clustering.2) Klasifikace.
3) hledání Globální fuzzy závislosti (Fuzzy Globál Dependencies FGD).
Byznys aplikace fuzzy database
Jednou z výhod Fuzzy Database je to že zachováme všechny výhody Relační Database,
ale rozšiřujeme ji na novou funkcionalitu, jako možnost hledat nepřesná data pomoci lingustickych promenych, fuzzy poravnani a td.
Jiné příklady
Možnost použití FSQL není omezena jenom na nějaké rozšíření byznes aplikace. Existuji oblasti kde Fuzzy database jsou taky velmi užitečné. Například jak jsme viděli Data Mining (Dobývání znalosti).
Obecně při dobývání znalosti používáme hodně různých metod (uměla intelligence, statistika a td). Tak že přidáním FSQL přidáme další metodu klassifikace a klasterizace dát.
Clusterizace
Dotaz: SELECT table.*, CDEG(*) FROM table WHERE A1 FEQ #C1 THOLD τ AND A2 FEQ #C2 THOLD τ AND … AND An FEQ #Cn THOLD τ;
V tomto dotazů začínáme centrem (C1..i) pro každý atribut(A1..i) Pro specifický cluster C. (centry - jsou atributy které popisujou cluster) Pak dostaneme objekty patřící C s minimálním stupněm prinadleznosti t.
Konkrétní příklad s převodem do SQL
Internet Obchod Počítačů :
POCITAC(model_pocitacu, jmeno_vyrobce, model_processoru, model_videokarty, model_monitoru, operacni_pamet, hard_disk, nazev_OS, cena )
VYROBCE(jmeno_vyrobce,zeme) OS(nazev_os,licence) PROCESSOR (model_processoru,vyrobce,frekvence) VIDEOKARTA (model_videokarty,vyrobce,pamet,chip) MONITOR (model_monitoru,vyrobce, diagonala)
Pokračování, Cizí klíče pocitac: foreign key (jmeno_vyrobce) references
VYROBCE(jmeno_vyrobce) pocitac: foreign key (model_processoru) references
PROCESSOR(model_processoru) pocitac: foreign key (model_videokarty) references
VIDEOKARTA(model_videokarty) pocitac: foreign key (model_monitoru) references
MONITOR(model_monitoru) pocitac: foreign key (nazev_os) references OS(nazev_os) processor: foreign key (vyrobce) references
VYROBCE(jmeno_vyrobce) videokrata: foreign key (vyrobce) references
VYROBCE(jmeno_vyrobce) monitor: foreign key (vyrobce) references
VYROBCE(jmeno_vyrobce)
Definice
Definice: 1) definujeme operátor podobnosti nad
Výrobce.jméno_výrobce a Počítač.model_počítačů který reprezentují to že některé počítače jsou podobný jako počítače od jiného výrobce.
2) taky potřebujeme definovat pár fuzzy predikátu Položka tabulky, Fuzzy hodnota Výrobce.jméno_výrobce : norm_důležitý,vysoké_důležitý Monitor.diagonála: malá,střední, velká počítač.cena : levný, střední, dráhy Processor.frekvence : pomalý,střední,rychlý
Pokračování, Vytvoření pohledu
CREATE VIEW MODEL(model_pocitacu, jmeno_vyrobce, model_processoru, frekvence, model_monitoru, diagonala,cena) ASSELECT P.model_pocitacu, P.model_vyrobce,
Pr.model_processoru, Pr.frekvence, M.model_monitoru, M.diagonala, P.cena
FROM pocitac P, monitor M, Processor PrWHERE M.model_monitoru = P.model_monitoru AND
P.model_processoru = Pr.model_processoru
Dotaz uživatele
dotaz : chci počítač od známého výrobce za střední cenu, s rychlým procesorem Intel,velkým monitorem, s charakteristiky podobnými jako u počítačů Apple.
Pomoci formulářů , nastaví hodnotu delta na 0.8 .
Fuzzy SQL dotaz
Fuzzy sql dotaz:
SELECT (0.8) *FROM MODEL, VYROBCEWHERE
(MODEL.jmeno_vyrobce=VYROBCE.jmeno_vyrobce) AND(MODEL.jmeno_vyrobce |sim| `Apple`) AND(MODEL.cena=[stredni]) AND(MODEL.frekvence=[rychly]) AND(MODEL.model_processoru=`Intel`) AND(MODEL.diagonala=[velka])
Po převodu do SQL
SELECT *FROM MODEL,VYROBCEWHERE
(MODEL.jmeno_vyrobce=VYROBCE.jmeno_vyrobce) AND(MODEL.jmeno_vyrobce IN(`Apple`,`Sony`,`Dell`)) AND(MODEL.cena BETWEEN 25300 AND 32000 ) AND(MODEL.model_processoru = `INTEL`) AND(MODEL.diagonala > 22)
Pozn:(Apple, Sony, Dell, jsou vyrobci jejichz podoba Apple je vetsi nez 0.8)
Užitečné funkce pro fuzzy atributy FTYPE(fuzzy_atribute) – vrátí typ hodnoty fuzzy atributů,
například můžeme dozvědět kolik je hodnot je v fuzzy atributů Typu 2 (Galindo,1999) HEIGHT : SELECT COUNT(*) FROM PLAYERS WHERE FTYPE(HEIGHT)=6;
TO_CHAR(fuzzy_atribute) – funkce vrátí text který reprezentují kazdu hodnotu ve fuzzy atributů.
FDEGREE (atribute_list)- funkce vrátí fuzzy stupeň (fuzzy degree) příslušného atributů(z argumentů) SELECT * FROM PLAYERS
WHERE QUALITY FEQ $Good AND FDEGREE(QUALITY) > .5
Pokračování
FDEGROW (table)– tato funkce vrátí fuzzy stupeň pro celý řádek tabulky. Argument je jméno tabulky.
MARGIN(fuzzy_atribute) -vrátí hraniční(margin) hodnotu pro fuzzy atribute.
Tato funkce může být používaná v výrazech s dot notace:
Fuzzy_atribute.MARGIN a td.
Užitečné funkce pro fuzzy hodnoty
Card(fuzzy_value) - funkce vrátí “mohutnost” fuzzy hodnoty. Například , jestli potřebujeme vědět řádky s menší nepřesnosti v atributů než fuzzy konstanta, můžeme do SELECTu dodat takovou podmínku: CARD(QUALITY) < CARD(3+-2) , CARD(3+-2)=2 v tomto pripade.
NORM(fuzzy-value) – normalizuje fuzzy hodnotu.
CONC_DILAT(fuzzy_value,p) – tato funkce vrátí “koncentrovanou verze “ fuzzy hodnoty
Pokračování
MORE_CONTRAST(fuzzy_value,p) – zesiluje kontrast fuzzy hodnoty. Definice:
FUZZIFICATION(fuzzy_value,p) – doplňková funkce k MORE_CONTRAST. Definice:
Pokračování
UNION(fuzzy_values,s_norm) – funkce vrátí sjednocení fuzzy hodnot, spolu s s-normou definovanou ve druhém argumentů.
INTERSECTION(fuzzy_values,s_norm) – funkce vrátí průnik fuzzy hodnot s t-normou definovanou ve druhém argumentů.
Poznamky: Funkce CONC_DILAT,MORE_CONTRAST a FUZZIFICATION
jsou užitečné při implementace linqustickych pojmu Specially, Věry, Slightly, Moře ,Less.
Reference
Galindo, J.; Urrutia, A.; Piattini, M. - ”Fuzzy Databases: Modeling, Design and Implementation” , Idea Group Publishing Hershey, USA, 2006.
Angelica Urrutia and Leopoldo Pavesi -“Extending the capabilities of database queries using fuzzy logic”, Catholic University of Maule (CHILE)
Galindo, J., Medina, J. M., Pons, O., and Cubero, J. C. 1998. -“A Server for Fuzzy SQL Queries ”.
Jay Nathan - “Fuzzy Lookups and Groupings Provide Powerful Data Cleansing Capabilities”