Chtěl bych poděkovat vedoucímu Prof. RNDr. Peterov Vojtášov, DrSc. za vstřícné vedení a kontrolu průběhu vznku dplomové práce. Dále děkuj rodčům, že m

Rozměr: px
Začít zobrazení ze stránky:

Download "Chtěl bych poděkovat vedoucímu Prof. RNDr. Peterov Vojtášov, DrSc. za vstřícné vedení a kontrolu průběhu vznku dplomové práce. Dále děkuj rodčům, že m"

Transkript

1 Unverzta Karlova v Praze Matematcko-fyzkální fakulta DIPLOMOVÁ PRÁCE Alan Eckhardt Metody pro nalezení nejlepší odpověd s různým užvatelským preferencem Katedra softwarového nženýrství Vedoucí dplomové práce: Prof. RNDr. Peter Vojtáš, DrSc. Studjní program: Informatka, I2 - Softwarové systémy

2 Chtěl bych poděkovat vedoucímu Prof. RNDr. Peterov Vojtášov, DrSc. za vstřícné vedení a kontrolu průběhu vznku dplomové práce. Dále děkuj rodčům, že mne podporoval po celou dobu studa, a všem přátelům, se kterým jsem tuto prác konzultoval. Prohlašuj, že jsem svou dplomovou prác napsal samostatně a výhradně s použtím ctovaných pramenů. Souhlasím se zapůjčováním práce. V Praze dne 7.srpna 2006 Alan Eckhardt

3 Název práce: Metody pro nalezení nejlepší odpověd s různým užvatelským preferencem Autor: Alan Eckhardt Katedra (ústav): Katedra softwarového nženýrství Vedoucí dplomové práce: Prof. RNDr. Peter Vojtáš, DrSc. e-mal vedoucího: Peter.Vojtas@mff.cun.cz Abstrakt: Užvatelské preference jsou jedním z nově zkoumaných aspektů v nformatce, např. v doméně sémantckého webu. Tato práce má za cíl pokrýt problematku preferencí, jejch modelování, různé aspekty jejch generování a vyhodnocování. Jedna z částí se zabývá oblastí skupnového rozhodování a nalezení výsledku vyhovující celé skupně užvatelů. Další část navazuje na článek Ronalda Fagna, Amnona Lotema, Mon Naora o top-k algortmu. Je zde prezentován nezávslý systém pro top-k algortmus, testuje různé mplementace tohoto algortmu a probírá mnoho dalších aspektů, které ovlvňují jeho rychlost tak počet prozkoumaných záznamů. Klíčová slova: sémantcký web, užvatelské preference, skupnové rozhodování,top-k algortmus Ttle: Methods for fndng best answer wth varous user preferences Author: Alan Eckhardt Department: Department of software engneerng Supervsor: Prof. RNDr. Peter Vojtáš, DrSc. Supervsor's e-mal address: Peter.Vojtas@mff.cun.cz Abstract: User preferences are one of new aspects n nformatcs, e.g. n doman of semantc web. Ths work tres to cover the whole problematc of user preferences, ther modelng, varous aspects of generatng user preferences and ther evaluaton. It also studes the area of group decson and fndng answer that suts all members of group. Next part follows the paper of Ronald Fagn, Amnon Lotem, Mon Naor about the top-k algorthm. The new ndependent system for the top-k algorthm s presented, some mplementatons of ths algorthm are tested and the nfluence of modules of algorthm on the speed and the number of rows are studed. Keywords: semantc web, user preferences, group decson, top-k algorthm - 2 -

4 . Úvod Vícehodnotová logka Defnce jazyka a značení Výrokové spojky Modus ponens Rozšíření vícehodnotové logky na predkátovou logku Závěr kaptoly Logcké programování Struktura logckého programu ve výrokové logce Agregační operátory Logcké programování v predkátové logce Struktura logckého programu v predkátové logce Závěr kaptoly Prostředí pro pops zdrojů (RDF) Základy RDF Jazyk RDF Jazyk RDFS Databáze pro RDF Dotazovací jazyky pro RDF Závěr kaptoly OWL Základy OWL Vytváření ontologí Závěr kaptoly Zavedení vícehodnotové predkátové logky do RDF, RDFS a OWL Přímé modelování pravdel Využtí sémantky RDF/RDFS Srovnání obou přístupů Mapování na RuleML Závěr kaptoly Užvatelské preference Defnce užvatelských preferencí Generování užvatelských preferencí Změny užvatelských preferencí v čase Více užvatelských hodnocení Návaznost na Arrowovu teor Závěr kaptoly Problém top k Úvod do problému Přehled algortmů Obecný nástroj pro top-k algortmus Xoda Průběh vývoje nástroje Xoda Přehled komunkace datových typů nástroje TopKElement Normalzer Rater DataSearcher BestColumnFnder Algorthm Pomocné třídy

5 9.0. Závěr kaptoly Testování top-k algortmu Struktura dat Testované velčny Způsob měření Testování různých rozložení dat Testování různých algortmů Testování RDF databází Testování různých agregačních funkcí Testování různých heurstk Testování heurstky MssngValuesFnder Problémy testování Závěr kaptoly Aplkace pro výběr výletních lokalt Potlatch Motvace Ontologe Užvatelské rozhraní Implementace Závěr kaptoly Ukázková aplkace obecného nástroje pro Cocoon Webovské rozhraní Výstup SesameGeneratoru Závěr Bblografe Přílohy Ontologe výletních míst Konfgurace SesameGeneratoru pro Apache Cocoon Konfgurace Apache Tomcat a Sesamu RDFS popsující vícehodnotový logcký program

6 . Úvod Sémantcký web je nový směr výzkumu v oblast nformatky. Jeho cílem je rozšířt funkčnost nternetu, který je omezený http protokolem a normou HTML. Jednou z hlavních motvací je rozšíření vyhledávačů o smysl vyhledávaných slov, tedy jejch sémantku. Tím by se významně zvýšla přesnost nalezených výsledků. Uvažme nyní krátký přklad - chceme jít dnes na oběd do restaurace a chtěl bychom s dát kuře. Zadejme tedy do vyhledávače Google slova "restaurace oběd kuře". Třetí odkaz ukazuje na deník ze zahrančního výletu Folklórního souboru Hořeňák v roce 2005 do Bulharska, což doopravdy neodpovídá představě dnešního oběda v restaurac. Jeden z pojmů sémantckého webu jsou ontologe. Ontologe zachycuje pojmy a vztahy mez pojmy v nějaké konkrétní, omezené oblast. Díky těmto ontologím lze vdět pojem v kontextu dané problematky. Důležtou vlastností ontologí je, že jsou srozumtelné pro stroje. Ontologe jsou nejčastěj zapsovány pomocí formátu RDF (Resource Descrpton Framework) nebo některým z jeho rozšíření. Tato práce se bude zabývat vnesením pojmu užvatel do světa nternetu. Každý užvatel má jné potřeby, zajímá se o jné oblast, líbí se mu různé věc. Budeme se snažt pokrýt celou problematku užvatelských preferencí. Jedním z cílů bude zaznamenat tyto preference v RDF. Zakomponováním preferencí užvatelů do ontologí budeme moc provádět vyhledávání, které bude používat smysl (sémantku) slov a navíc bude užvatelsky zohledněné, tedy využjeme znalost typu - užvatel má rád kuřata a talské restaurace. Užvatelské preference obvykle kombnují více krtérí, proto se budeme také zabývat vícekrterálním rozhodováním. Vícekrterální rozhodování je součást našeho každodenního přemýšlení, ale hraje rol př klíčových rozhodnutích. Cílem bude namplementovat různé algortmy pro vícekrterální rozhodování v jazyce Java, čímž se umožní využtí těchto algortmů v šrokém spektru aplkací sémantckého webu, který ve valné většně případů využívá právě jazyk Java. Rozebereme také několk případů, jak zjstt užvatelovy preference na objektech, které explctně nehodnotl. Navrhneme způsob, jak toto hodnocení zjstt na základě hodnocení ostatních objektů

7 2. Vícehodnotová logka V této část se budeme zabývat vícehodnotovou logkou. Popíšeme základní fakta o vícehodnotové logce a dokážeme některé věty. Nejdříve s přblížíme výrokovou vícehodnotovou logku, kterou v kaptole 2.4 rozšíříme na predkátovou vícehodnotovou logku. Tato část byla převzata z [LP], až na rozšíření důkazu tvrzení a o body 5) a 6), které je naším vlastním příspěvkem. 2.. Defnce jazyka a značení Ve značení budeme vycházet ze značení klascké dvouhodnotové logky. Výrokové proměnné budeme označovat písmeny p,q,r,... Množnu všech výrokových proměnných označíme VP. Výrokové proměnné budou označovány také jako fakty. Množnu pravdvostních hodnot budeme označovat T. Tato množna v klascké dvouhodnotové logce je množna {0,}. Ve vícehodnotové logce může T být lbovolná uspořádaná množna. V dalším textu budeme uvažovat pro přehlednost T=[0,]. Prvky množny T budeme značt x,y,.. Specálně hodnotu těla mplkace budeme značt b jako "body", hodnotu hlavy h jako "head" a hodnotu vlastní mplkace r jako "rule". Předpokládáme, že množna T je lneárně uspořádaná. Výrokové spojky konjunkce, dsjunkce, ekvvalence, mplkace a negace budeme označovat symboly &,,,,. Pravdvostní funkce T 2 T daných spojek budeme značt &,,,,. Množnu výrokových formulí označíme jako F. Ohodnocenou proměnnou p hodnotou x značíme ( p : x). Ohodnocující funkc VP T budeme značt v, její rozšíření na výrokové formule T v p =. Symbol = přebereme z klascké logky, ale jeho obsah musíme nově defnovat. F potom v. Hodnotu proměnné p označíme ( ) x 2... Defnce Pokud platí, že v( p) x, pak řekneme, že v ( p : x) ( v( B), v( H )) r, pak řekneme, že v = ( H B : r). =. Dále pokud Dokazování v Hlbertově stylu je ve vícehodnotové logce složtější. Pro různé spojky potřebujeme různé axomatzace. V našem případě se omezíme na zobecnění datalogových dedukčních mechansmů Výrokové spojky Nyní budeme chtít rozšířt význam výrokových spojek na vícehodnotovou logku. Budeme vycházet z defnce spojek pro dvouhodnotovou logku. Tím zajstíme, že pro T={0,} bude vícehodnotová logka ekvvalentní dvouhodnotové logce. p q p & q p v q p=q p->q non p Tabulka Tato tabulka nám dává fxní hodnoty pro spojky v mnmu a maxmu T. Průběhem funkcí jednotlvých spojek mez těmto hodnotam se budeme zabývat dále

8 Příklad Zmíníme zde několk standardních vícehodnotových spojek - & x, y = max 0, x + y, Łukasewczova konjunkce ( ) ( ) ( x, y) x y ( x, y) mn( x y) L p * & =, produktová konjunkce. & G =,, Gödelova konjunkce. Takto defnované konjunkce splňují okrajové podmínky defnované tabulkou.. Použtím de Morganových pravdel dostaneme z defnc konjunkcí defnce dsjunkcí x, y = mn, x y ( ) ( ) ( x, y) = & p ( x, y) = ( x)( y) = x + y xy ( x, y) = & ( x, y) = mn( x, y) = max( x y) L + p + Tyto dsjunkce opět splňují okrajové podmínky Defnce G G, Funkce C : T 2 T se nazývá konjunktor, pokud splňuje následující podmínky ) C (,) = 2) C ( 0,) = 0 3) C (,0) = 0 4) C ( 0,0) = 0 5) r > 0 : C(, r) > 0 6) C je spojtá zleva v druhé proměnné Proměnné konjunktoru budeme mnemoncky značt C ( b,r) Defnce Funkce I : T 2 T se nazývá mplkátor, pokud splňuje následující podmínky ) I (,) = 2) I ( 0,) = 3) I (,0) = 0 4) I ( 0,0) = 5) h < : I(, h) < 6) I je spojtá zprava v druhé proměnné I b, h. Proměnné mplkátoru budeme mnemoncky značt ( ) 2.3. Modus ponens Z výrokové logky zbývá převzít odvozovací pravdlo Modus Ponens (MP). p, p q q Pravdlo modus ponens Pro vícehodnotovou logku bude mít tento tvar ( p : b), ( p q : r) q : h ( ) Pravdlo modus ponens pro vícehodnotovou logku - 7 -

9 =. Jnak řečeno, pravdlo modus ponens říká, že pro každou ohodnocující funkc v takovou, že pro n platí v( p) b a v( p q) r, platí také v( q) h. Omezení, která klademe na f ( b, r) se shodují s omezením na konjunktor. Tento konjunktor bude závslý na použtém mplkátoru. a dále budeme požadovat, aby h f ( b, r) Defnce Dvojce (C,I) je resduovaná, pokud C( b, r) h právě tehdy, když I ( b h) r, Značení Resudální konjunktor k mplkátoru I budeme značt C I ( b, r) = nf{ h : I( b, h) r}. Resudální mplkátor ke konjunktoru C budeme značt ( b h) = sup{ r : C( b, r) h} Dále budeme používat zkratky H ( b, r) = { h : I( b, h) r} R( b, h) = { r : C( b, r) h} Tyto zkratky použjeme, pokud bude I nebo C fxované, jnak značíme I C,. H I a R C. mplkátoru Tvrzení Nechť I je mplkátor. Pak ( b r) Důkaz Ukážeme, že ( b r) C I, je konjunktor. C I, splňuje všechny podmínky z defnce konjunktoru. ) C I (,) = Chceme, aby platlo C I (,) =. Nahradíme ( b r) nf H (, ) = Rovnost platí, pokud h < : I(, h) < 2) C ( 0,) = 0 I Opět přepíšeme na C I, jeho defncí To je přesně podmínka 5) v defnc nf H ( 0,) = 0 Z podmínky 2) v defnc mplkátoru platí, že pouze I ( 0,) =. Pak 0 H ( 0,) nfmum množny H ( 0,) bude 0. 3) C (,0) = 0 I nf H (,0) = 0 Z podmínky 3) v defnc mplkátoru platí, že (,0) = 0 množny H ( 0,) bude 0. I. Pak 0 H (,0) a a nfmum - 8 -

10 4) C ( 0,0) = 0 I nf H ( 0,0) = 0 Z podmínky 4) v defnc mplkátoru platí, že ( 0,0) = množny H ( 0,0) bude 0. 5) > 0 : C (, r) > 0 r I r r > 0 : nf H, r = nf h : I, h r =. I. Pak 0 H ( 0,0) (, r) 0 > 0 : nf H > Důkaz sporem. Nechť ( ) 0 množny H a dostaneme { ( ) } 0 r I (,h) a nfmum. Přepíšeme s rovnost pomocí defnce 0 h Schéma Uvažme podmínky 3) a 6) v defnc mplkátoru. Podle podmínky 3) platí, že I (,0) = 0 a podle podmínky 6) je I spojtý v druhé proměnné zprava. Tedy ε > 0 δ : I (, ( 0 + δ )) ε. Dále h > 0 platí, že I (, h) r > 0. Tím jsme dostal spor se spojtostí I. 6) Spojtost v druhé proměnné zleva b r ε > 0 δ : C b, r C b, r δ. Chceme dokázat, že ( ( )) ( ) ε Opět podmínku přepíšeme pomocí defnce resdovaného konjunkturu. nf H b, r nf H b, r δ nf ( ) ( ) ε { : I( b, h ) r} nf{ h : I ( b h ) r δ} ε h 2, 2 Víme, že I je spojtý v druhé proměnné zprava, tedy že b h δ > 0 φ : I b, h I b, h φ. ( ( )) ( ) δ r I ( b,h ) r δ δ I ( b,h 2 ) 0 h 2 h h φ Schéma - 9 -

11 Pro dostatečně malé δ tedy bude platt, že h h 2 ε = φ ε Tvrzení Nechť C je konjunktor. Pak ( b h) Důkaz Ukážeme, že ( b h) I C, je mplkátor. I C, splňuje všechny podmínky z defnce mplkátoru.. ) I C (,) = sup R (, ) = Z podmínky ) v defnc konjunktoru platí, že C (,) =. Pak R(, ) množny R (, ) bude. 2) I C ( 0,) = sup R ( 0,) = Z podmínky ) v defnc konjunktoru platí, že C ( 0,) = 0. Pak R( 0,) množny R ( 0,) bude. 3) I (,0) = 0 C konjunktoru. Rovnost platí, pokud ( ) 0 (,0 ) 0 a supremum a supremum sup R = r > 0 : C, r >. To je přesně podmínka 5) v defnc 4) I C ( 0,0) = sup R ( 0,0) = Z podmínky ) v defnc konjunktoru platí, že C ( 0,) = 0. Pak R( 0,0) množny R ( 0,0) bude. 5) < : I (, h) < h C h h < : sup R, h = sup r : C, r h =. Důkaz sporem. Nechť ( ) množny R a dostaneme { ( ) } h (, h) < : sup R < C (,r) a supremum. Přepíšeme s rovnost pomocí defnce 0 r Schéma - 0 -

12 Uvažme podmínky 3) a 6). Podle podmínky 3) platí, že (,) = je C spojtý v druhé proměnné zleva. Tedy ε > δ : (, ( δ )) ε že C (, r) h <. Tím jsme dostal spor se spojtostí C. 6) Spojtost v druhé proměnné zprava Chceme dokázat, že b r ε > 0 δ : I( b, h) I( b, h + δ ) ε. C a podle podmínky 6) 0 C. Dále r < platí, Opět podmínku přepíšeme pomocí defnce resdovaného konjunkturu. sup R b, h sup R b, h + δ sup ( ) ( ) ε { : C( b, r ) h} sup{ h : C( b r ) h + δ } ε r 2, 2 Víme, že C je spojtý v druhé proměnné zleva, tedy že b h δ > 0 φ : C b, r C b, r + φ. ( ) ( ) δ h + δ C ( b,r 2 ) h δ C ( b,r ) 0 r r 2 r φ Pro dostatečně malé δ tedy bude platt, že Schéma h h 2 ε = φ ε. resduované Věta Nechť I je mplkátor a C je konjunktor. Pak dvojce ( I C, C) a ( I ) Důkaz Nejdříve dokážeme větu pro ( I ) C I,. Ekvvalenc rozdělíme na dvě mplkace. Jako první dokážeme I( b, h) r CI ( b, r) h. Nahradíme C I ( b, r) jeho defncí. nf H b, r ( ( )) h C I, jsou Z předpokladu I ( b, h) r víme, že h H ( b, r). Pak v množně ( b r) jeden prvek. Pak nfmum ( b r) mplkac. Druhá mplkace je H, máme alespoň H, je nejvýše ten prvek h. Tím jsme dokázal a celou - -

13 C I ( b, r) h I( b, h) r Upravíme předpoklad stejným způsobem jako v první mplkac pomocí defnce nf ( H ( b, r) ) h I b, h. Nyní předpokládáme Z něj chceme odvodt, že ( ) r Protože nf ( H ( b, r) ) h, pak je množna ( b r) ( b r) Stuace, kdy platí, že ( H ( b, r) ) < h h H,. H, neprázdná. Chceme dokázat, že nf, je znázorněna na schématu nf ( H ( b, r )) h Ze schématu je zřejmé, že h H ( b, r) ( H ( b, r) ) < h Pokud ( H ( b, r) ) = h nf Schéma. Tím je mplkace dokázána pro případ,...,. I ( b, h) nf, pak exstuje klesající posloupnost h n h, h h = h je spojtá zprava v h-proměnné, takže platí, že I( b h) r Tím jsme větu dokázal pro ( C I, I ).,. 2, 0 Nyní větu dokážeme pro ( I C, C). Ekvvalenc rozdělíme na dvě mplkace. Jako první dokážeme C( b, r) h I C ( b, h) r. V našem případě I ( b, h) r je ( b, h) r. Nahradíme ( b h) I C I ( b h) r I C ( b, h) r,. I C, jeho defncí. Z předpokladu C( b, r) h víme, že r R( b, h). Pak v množně ( b h) jeden prvek. Pak supremum ( b h) mplkac. R, máme alespoň R, je nejméně ten prvek r. Tím jsme dokázal a celou Druhá mplkace je I C ( b, h) r C( b, r) h Upravíme předpoklad stejným způsobem jako v první mplkac sup r : C b r h ( ( ) ) r 0, Nyní předpokládáme Z něj chceme odvodt, že I ( b h) r 0,

14 Protože sup ( R( b, h) ) r, pak je množna ( b h) ( b h) Stuace, kdy platí, že ( R ( b, h) ) > r r R,. R, neprázdná. Chceme dokázat, že sup, je znázorněna na schématu r sup ( R ( b, h) ) Ze schématu je zřejmé, že r R( b, h) ( R ( b, h) ) > r Pokud ( R ( b, h) ) = r Schéma. Tím je mplkace dokázána pro případ sup. sup, pak exstuje klesající posloupnost r n r, r r = r C b, r je spojtá zleva v r-proměnné, takže platí, že C( b r) h Tím jsme větu dokázal pro ( I C, C). tvaru,.,...,. ( ) 2, Nakonec dokážeme korektnost pravdla Modus Ponens ve vícehodnotové logce ve ( B : b),( I( B, H ): r) H : CI ( b, r) platí alespoň na b a I(B,H) alespoň na r, pak H platí nejméně na ( b r). Volně nterpretováno nám toto pravdlo říká, že pokud víme, že B C I, Důkaz Dokážeme korektnost sporem. Předpokládejme, že exstuje lepší výsledek h 0 než je C I ( b, r). Nechť tedy exstuje h 0 takové, že platí h > 0 CI ( b, r) a zároveň H: h 0. Víme, že C I ( b, r) = nf ( h : I( b, h) r). Tedy exstuje h : h0 > h CI ( b, r) & I( b, h ) r a tedy H: h. Což je spor s tím, že chceme, aby hodnocení H bylo mnmální. Tímto jsme dokázal platnost pravdla Modus Ponens ve vícehodnotové logce. Toto pravdlo budeme dále využívat v logckých programech Rozšíření vícehodnotové logky na predkátovou logku Ukázal jsme s, jak rozšířt dvouhodnotovou výrokovou logku na vícehodnotovou výrokovou logku. Nyní rozšíříme vícehodnotovou výrokovou logku na vícehodnotovou predkátovou logku, které bude rozšířením klascké dvouhodnotové predkátové logky na vícehodnotovou

15 2.4.. Defnce jazyka a značení Proměnné budeme nyní označovat pomocí písmen x,y,z,.. Množnu všech proměnných označíme PP. Predkátové symboly budeme psát velkým písmeny P,Q,R,... Pokud budeme chtít k explctně uvést artu predkátu, budeme psát P. Funkční symboly budu značeny písmeny f,g, Specálně nula-ární funkce budeme značt a,b,c,... a chápat je jako ndvduové konstanty. Množnu všech ndvduových konstant označíme C. V této prác s vystačíme pouze s ndvduovým konstantam. Množnu atomckých formulí budeme značt AF, množnu formulí potom F. Pojmem term budeme rozumět všechny ndvduové konstanty a proměnné. Realzac jazyka predkátové logky budeme značt R. R obsahuje množnu ndvduí, kterou budeme značt U, prvky této množny budou α, β, γ,... a budeme je nazývat ndvdua. Pro každý funkční symbol f arty k obsahuje R funkc f k R : U K U. Specálně ndvduové konstanty budou funkce f : 0 R U. Pro defnc splňování potřebujeme uvažovat také ohodnocení proměnných t e,r. které budeme značt e, ohodnocení termu budeme psát [ ] budeme značt Nakonec R realzuje každý predkátový symbol P k R : U K k P R. Realzac tohoto predkátu T. Pouze v tomto případě se uplatní "vícehodnotovost". PP U, Interpretace Interpretace I je funkce I : F T. Interpretace je závslá na realzac jazyka R, proto j budeme značt I R. Interpretace výrokových spojek zůstává stejná, zbývá tedy defnovat nterpretac kvantfkátorů,, predkátových symbolů, termů a atomckých formulí. Uvažujme tedy nterpretac formule A. ) A je term. x = e x a) A je proměnná x, pak ( ) ( ) I R b) A je ndvduová konstanta a, pak IR ( ) = R, pak ( xb) e formule A I R\ e e' ( B)., pak ( xb) e formule A I ( B). 2) A je ve tvaru xb ohodnocující funkcí ' 3) A je ve tvaru xb ohodnocující funkcí ' 4) A je predkátový symbol a a I R bude nfmum výstupů všech nterpretací s I R bude supremum výstupů všech nterpretací s R\ e e' k k k P, pak R ( P ) = PR I. k k 5) A je atomcká formule P ( x,..., xk ), pak R P ( x xk ) k ( ) =I ( P ) I ( x ) I ( x ),..., R R ( ) I,..., Proměnné predkátový symbol jsme nterpretoval pomocí nterpretace Ve dvouhodnotové logce atomcká formule P ( x) určovala, zda proměnná x má vlastnost P. Nyní P ( x) vyjadřuje, v jakém stupn má proměnná x vlastnost P. Sémantcká funkce přřazuje tedy jednotlvým ndvduím α stupeň vlastnost P ( α ). I. R R k - 4 -

16 2.5. Závěr kaptoly V této kaptole jsme položl základy vícehodnotové logky do takové míry, jakou budeme dále potřebovat. Prmární motvace bylo využtí vícehodnotové logky jako prostředku k vyjádření užvatelských preferencí. Spojky ve dvouhodnotové logce defnované tabulkou jsou ve vícehodnotové logce funkce, které musí splňovat určté požadavky. Vícehodnotová logka nám bude sloužt jako základ pro další kaptolu - logcké programování

17 3. Logcké programování Nyní použjeme teor vícehodnotové logky a vnoříme j do logckého programování. Dostaneme tím vícehodnotový (fuzzy) logcký program. Tato část je opět převzata z [LP]. 3.. Struktura logckého programu ve výrokové logce Logcký program je konečná množna ohodnocených proměnných a ohodnocených pravdel. Fakty vyjadřují přímo ohodnocení výrokových proměnných. Pravdla jsou použta pro odvození dalších znalostí, jež nejsou přímo uvedeny ve faktech. Konjunktory budeme značt &,& 2,..., mplkátory pak, 2,.... Ve vícehodnotovém programování se tradčně používá špka mplkace v obráceném směru. H B, r, kde H AF, r T Ohodnocené pravdlo bude mplkace ve tvaru ( ) Tělo pravdla B bude ve tvaru ( q) &... pravdla v podobě agregační funkce. Dotaz?-Q je výroková proměnná. & 2 r p Pozděj zavedeme alternatvu těla Zobecněný dotaz GQ je výraz tvořený z výrokových proměnných, konjunktorů a pravdvostních hodnot. t T je správná odpověď na dotaz?-q vzhledem k programu P, pokud pro každý v Q t a neexstuje žádné t' T takové, že t ' > t a v( Q) t'. model v programu P platí, že ( ) 3... Defnce Odvozovací krok je funkce GQ GQ. Je defnován čtyřm kroky V) Vybereme (nedetermnstcky) nějakou výrokovou proměnnou p z GQ. GQ má tedy tvar LpR. Pak provedeme krok V2) nebo V3), pokud už nejsou v GQ žádné proměnné, provedeme krok V4). V2) Pokud exstuje ohodnocený fakt ( p : x), nahradíme x za p. Výstup funkce bude LxR. V3) Pokud exstuje ohodnocené pravdlo ( p B : r), nahradíme p výrazem C ( B, r). Výstup funkce bude LC ( B, r)r. V4) Pokud GQ neobsahuje žádnou výrokovou proměnnou, výsledkem je vyhodnocení výrazu GQ. Bez výrokových proměnných jde o artmetckou úpravu Defnce t T je vypočítaná odpověď na dotaz Q vzhledem k programu P, pokud exstuje posloupnost zobecněných dotazů Q = Q,..., Q = 0 n t. Mez Q a Q + je použt odvozovací krok pro všechna < n

18 3.2. Agregační operátory Agregační operátory jsou možnost, jak rozšířt vícehodnotovou logku tam, kde nám nedostačují konjunktory je k-ární spojka, k. Její pravdvostní funkce T k T a 0,..,0 = ) ( ) je agregační operátor (,..,) = 3) x x, y,..., y ( x y &...& x y ( x,.., x ( y,.., y ),..., k k Agregační operátory budeme umsťovat na místo těla B pravdla ( H B, r) potom mít tvar ( ( p,..., pk ), r) k k k k. To bude Tyto agregační operátory mohou jž mít lbovolný tvar. Typckým příkladem agregačního operátoru je vážený průměr. Motvace pro zavedení agregačních operátorů je přesnější a jasnější vyjádření užvatelských preferencí. V případě váženého průměru je zřetelně vdět, jaký atrbut užvatel preferuje Příklad agregačních funkcí 3x + x2 + ( x, x2, x3 ) = 9 x, x, x = max( x, x, ( 2 3 ) 2 ) ( x, x, x ) = mn( x, x, x Příklad programu Mějme následující logcký program x x,,0.8 a) ( ( ) ) 2 x3 2 p x 3 p x b) ( x & 4,0.6) c) ( x,0.9 3 ) d) ( x,0.5 4 ) x + y ( x, y) =. 2 Budeme hledat vypočítanou odpověď na dotaz? x Krok ) Máme k dspozc pouze jednu výrokovou proměnnou a to x. Jelkož neexstuje ohodnocený fakt s proměnnou x, musíme použít pravdlo a). Dotaz se tedy x,,0.8. (Použl jsme pravdlo V3.) změní na ( ( ) ) C 2 x3 Krok 2) Nyní vybereme proměnnou x 3. K ní máme ohodnocený fakt, nahradíme tedy tuto proměnnou její hodnotou. Dostaneme C G (@ ( x 2,0.9),0.8). (Použl jsme pravdlo V2.) - 7 -

19 Krok 3) Dále máme proměnnou x 2, ke které nemáme ohodnocený fakt. Použjeme tedy pravdlo b) a proměnnou nahradíme resdovaným konjunktorem k mplkac. C C x &,0.6,0.9,0.8. (Použl jsme pravdlo V3.) ( ( ( ) ) ) p 3 p x4 Kroky 4,5) Nakonec nahradíme proměnné x 3 a x 4 jejch hodnotou v ohodnocených C 0.9 & 0.5,0.6,0.9,0.8. (Použl jsme faktech c) a d). Nakonec dostáváme ( ( ( ) ) ) pravdlo V2.) C p p C C Krok 6) Poslední krok algortmu je artmetcká úprava výsledku, což odpovídá pravdlu V4. ( ( C ( 0.9 & 0.5,0.6 ),0.9 ),0.8 ) C (@ ( C ( 0.45,0.6),0.9),0.8 ) = ( 0.27,0.9) p p G p G G (@ ( 0.27,0.9),0.8) = C G ( 0,585,0.8) = Odpověď na dotaz? x je tedy (,0. ) = = Logcké programování v predkátové logce Hlavní rozdíl oprot logckému programu ve výrokové logce je zavedení unversa U a ndvduí. Ve logckém programu výrokové logky byl výsledek dotazu na výrokovou proměnnou x její pravdvostní hodnota. Dotaz na logcký program tedy bude mít tvar formule?-f, obvykle atomcké formule nebo ve ( B,.., B k ). Pokud formule neobsahuje žádné volné proměnné, výsledek bude pravdvostní hodnota formule. Pokud ovšem F obsahuje volné proměnné, výsledkem budou možná nahrazení volných proměnných ndvdu spolu s pravdvostní hodnotou F po nahrazení Struktura logckého programu v predkátové logce Ohodnocené pravdlo bude mplkace ve tvaru ( H B, r), kde H AF, r T Tělo pravdla B bude formule ve tvaru ( A & B) & 2 C..., A, B, C AF. Ohodnocený fakt bude P( a,..., ak ): r. Vyjadřuje stupeň vlastnost P pro k-tc a,...,a k. Dotaz?- F je atomární formule. Substtuce je funkce Θ : PP C. Nechť F má n volných proměnných x,..., xn Θ = x / a,..., x n / a n a t T je správná odpověď na dotaz?-f vzhledem k programu P, pokud po nahrazení volných I R F x / a e pro každé e. proměnných v F je ( ( )[ ]) t. Pak { } - 8 -

20 3.4.. Poznámka Zřejmě může být správných odpovědí více. Ve výrokovém počtu byly správné všechny odpověd menší než lbovolná správná odpověď. Zde navíc každá hodnota t je závslá na n-tc A Příklad Mějme logcký program P: P( x, y) P Q( x, y),0.5 Q ( a,.b) : 0. 2 Q ( a,c) : 0. 8? P a, x ( ) a dotaz ( ) Potom vypočítané odpověd jsou ( Θ = ( x /b),0.) ( Θ = ( x / c),0.4) můžeme také zapsat ohodnoceným fakty P ( a,.b) : 0. a P ( a,.c) : Získanou odpověď Odpověď jsme získal analogckým postupem jako ve výrokovém programu. Nahradl jsme pravdlo resduovaným konjunktorem a poté použl ohodnocené fakty. Důležté zde je, že ndvduové proměnné v použtém faktu a ve zobecněném dotazu se musí shodovat, jnak fakt nemůžeme použít Defnce Odvozovací krok je funkce GF GF. Je defnován čtyřm kroky k P) Vybereme nějakou atomární formul P z GF. GF má tvar LP( a,..., al, xl+,..., xk )R. V atomární formul je použto l ndvduových konstant a,...,a l a k-l proměnných x l+,..., xk. P2) Pokud exstuje ohodnocený fakt ( P( a,..., al, al+,..., ak ): x), výstup funkce bude ( LxR )Θ. P3) Pokud exstuje ohodnocené pravdlo ( P( x,..., xk ) B : r), nahradíme za A C ( B, r). Výstup funkce bude ( LC ( B, r) R)Θ. P4) Pokud GF neobsahuje žádnou atomární formul, výsledek bude ( Θ...,t Θ n ), kde t je výsledná pravdvostní hodnota Poznámka Pokud v krocích 2) a 3) část dotazu L nebo R obsahují některé z volných proměnných těla pravdla B, musíme tyto volné proměnné přejmenovat. Použjeme jména proměnných, která se v částech L a R nevyskytují. To nám zajšťuje substtuce Θ Defnce { x / a,..., / } Θ = x n a n, t T je vypočítaná odpověď na dotaz F vzhledem k programu P, pokud exstuje posloupnost zobecněných dotazů Q = Q0,..., Qn a Θ... Θn = Θ. Mez Q a Q + je použt odvozovací krok pro všechna < n Příklad Ukážeme s příklad př hledání výletu, kde svítlo sluníčko. Tento příklad nás bude provázet celou prací. V praktcké část budeme pracovat s ontologí (pojem ontologe bude - 9 -

21 vysvětlen dále), která se zabývá výletním lokaltam. Proto jsme zvoll příklad, který se týká této oblast. SunnyTrp x hasweather x, y, SunnyWeather y : 0. ) ( ) ( ( ) ( )) 9 2) SunnyWeather( x) hasatmospherccondtons( x, Sunny) : 0. 9 G 3) hasweather ( Brdy05050, OvercastsMldTemperature) : 4) hasatmosph erccondtons( OvercastsMldTemperature,Overcasts) : ) hasatmosph erccondtons( OvercastsMldTemperature, Sunny) : 0. 6) hasweather ( Polsko03080, SunnyHghTemperature) : 7) hasatmosph erccondtons( SunnyHghTemperature, Sunny) : 0. 9 Agregační bude funkce ( x, y) = ( x + 2 * y) 3 Dotaz bude mít tvar?-sunnytrp(x). Jelkož neexstuje žádný ohodnocený fakt s predkátem SunnyTrp, použjeme pravdlo ). Tím vykonáme krok P3) logckého programu. C hasweather x, y, SunnyWeather Dostaneme dotaz ve tvaru ( ( ( ) ( )) Nyní použjeme fakt 3). C (@ ( hasweather( Brdy05050, OvercastsMldTemperature), SunnyWeath er p ( OvercastsMldTemperature) ),0.9) Dále nahradíme atomckou formul hasweather ( Brdy05050, OvercastsMldTemperature) za její pravdvostní hodnotu. C, SunnyWeather OvercastsMldTemperature,0.9 p ( ( ( )) Vykonal jsme krok P2) logckého programu. Pro názornost jsme krok rozděll do dvou částí. Nahradíme predkát SunnyWeather podle pravdla 2). C, C hasatmospherccondtons OvercastsMldTemperature, Sunny,0.9 p ( ( ( ( ) )),0.9 G a použjeme fakt 5) C, C 0.,0.9 p ( ( ( )),0.9 G Nakonec vypočítáme výsledek C, C 0.,0.9,0.9 p ( ( ( )) ) C (@ (,0. ),0.9) = C ( 0.4,0.9) 0. G = p p = Vypočítaná odpověď na dotaz?-sunnytrp(x). tedy je (x=brdy05050, 0.36). Další vypočítaná odpověď je (x=polsko03080, 0.84) Závěr kaptoly Přblížl jsme logcké programování ve výrokové predkátové logce, zavedl jsme pojem faktu a pravdla. Dále jsme ukázal dva možné tvary těla pravdla. Tyto struktury budeme v dalších kaptolách dále využívat. Jedním z cílů této práce je vytvořt možný záps vícehodnotového logckého programu v RDF. V této zjednodušené formě se jej pokusíme vyzkoušet v expermentální mplementac v jazyku RDF. Vztah mez vypočítanou a správnou odpovědí v logckém programování a další hlubší aspekty této problematky jsou mmo rámec této práce. Podrobnost můžete nalézt např. v [LP]

22 4. Prostředí pro pops zdrojů (RDF) V této kaptole se budeme zabývat jazykem Resource Descrpton Framework (RDF). V české lteratuře se zatím nevžl žádný český výraz, proto budeme používat dobře známou zkratku RDF. RDF je jazyk určený pro reprezentování nformací v prostředí nternetu. Je navržen na jednoduchém prncpu grafového modelu dat. Rozšíření RDF, RDF Schema (dále RDFS), má jasně defnovanou sémantku, která umožňuje získávat nová fakta z jž exstujících pomocí logckého důsledku. Přehled RDF čerpal hlavně ze zdrojů skupny W3C, tyto dokumenty lze nalézt na [W3C]. 4.. Základy RDF Základní stavební kámen RDF jsou trojce. Podmět Vlastnost Předmět 4... Schéma Trojce se skládá z podmětu, vlastnost a předmětu. Budeme používat tento lngvstcký překlad anglckých slov "subject", "predcate" a "object". RDF dokument se skládá z trojc, jež poté tvoří orentovaný graf. Uzly grafu jsou tvořeny podměty a předměty, vlastnost pak tvoří orentované hrany grafu. Podměty v grafu musejí být platné URI dentfkátory. Požadovaný tvar URI je defnován v [URI]. Objekt, který je dentfkovaný URI, budeme označovat jako zdroj. URI dentfkátory budeme psát mez úhlové závorky Příklad URI < URI je možné zkracovat použtím jmenného prostoru URI. Pro náš případ defnujme předponu trp: jako jmenný prostor < Nyní můžeme psát jasněj <trp:trplocaton>. Dále budeme používat standardní předpony rdf:, rdfs:, owl:, xml: a xsd:. Pokud v příkladu nebude záležet na daném URI, použjeme předponu foo:, která se typcky v dokumentech W3C jnde používá pro nedůležté předpony. <trp:hasterran> <trp:hardwood> <trp:vyletnabrdy> <trp:hasctes> <trp:prbram> <trp:hastransport> <trp:hasshops> <trp:csad> <trp:delvta> Příklad RDF grafu - 2 -

23 Pokud nějaký zdroj je zapsaný ve tvaru <_:Nazev>, jde o tzv. blank node nebol prázdný uzel. Tyto uzly nemají přřazený jmenný prostor a používají se pro případy, kdy nechceme defnovat plné jméno zdroje. Kromě URI dentfkátorů lze v RDF použít také datové typy. Datový typ je dentfkován URI dentfkátorem, typcky ve jmenném prostoru xsd:. Hodnota předmětu je uchována v textovém řetězc. Uzlu, který je datového typu, se říká lterál. <trp:numberofdays> <trp:brdy05050> "3"^^xsd: nt Příklad datového typu 4.2. Jazyk RDF RDF má pevně defnované některé vlastnost a podměty. Budeme používat jmenný prostor rdf:, což je zkratka za Obecný jazyk RDF <rdf:type> je vlastnost. Trojce <trp:brdy05050> <rdf:type> <trp:trp> říká, že zdroj <trp:brdy05050> je typu <trp:trp>. Tato vlastnost defnuje přímé náležení do nějaké třídy. <rdf:property> je třída. Všechny zdroje náležející do této třídy jsou vlastnost. <trp:numberofdays> <rdf:type> <rdf:property> <rdf:xmllteral> je třída lterálů, jejchž obsah je nějaký XML dokument. <rdf:value> je vlastnost, která označuje hodnotu podmětu. Očekávané využtí je tam, kde je předmět trojce nějaký složený typ, např. cena. Potom se předmět rozdělí na dvě trojce, kde první bude označovat vlastní cenu pomocí <rdf:value> a druhá měnu. <foo:x> <foo:prce> <foo:prce> <foo:prce> <rdf:value> "27"^^xsd:nt <foo:prce> <foo:currency> "CZK" Jazyk refkace Pomocí tzv. refkace lze vytvářet trojce, jejchž podmět je trojce. Tím je umožněno vyjádřt, že např. Ondra v úterý v 7:20 řekl, že na výletu na Brdy pršelo. První trojce má podmět fakt, že na výletu na Brdy pršelo, vlastnost je řekl a předmět je Ondra. Další trojce má stejný podmět, vlastnost včase a předmět v 7:20. <rdf:statement> je třída, která obsahuje trojce. Každý zdroj v této třídě má defnované tř vlastnost defnované níže. Instance této třídy mohou být předměty dalších trojc. <rdf:subject> určuje podmět trojce. <rdf:predcate> určuje vlastnost trojce. <rdf:object> určuje předmět trojce Příklad Nejdříve vytvoříme trojc tvrdící, že na výletu na Brdy pršelo. <_:RefedTrple> <rdf:type> <rdf:statement> <_:RefedTrple> <rdf:subject> <trp:brdy05050> <_:RefedTrple> <rdf:predcate> <trp:hasweather> <_:RefedTrple> <rdf:object> <trp:ranyweather>

24 Nyní řekneme, že výše uvedený fakt řekl Ondra. <_:RefedTrple> <trp:sadby> <trp:ondra> A nakonec přdáme datum, kdy jej řekl. <_:RefedTrple> <trp:atdate> " T7:20:00"^^xsd:dateTme Celý výrok je znázorněn na schématu <trp:brdy05050> <trp:hasweather <trp:ranyweather> <trp:sadby> <trp:atdate> <trp:ondra> " T7:20:00"^^xsd:dateTme Schéma Jazyk seznamů Seznamy umožňují vytvářet seznamy zdrojů a datových typů. V RDF jsou defnované tř typy seznamů. <rdf:seq> je posloupnost zdrojů. Tento typ je uspořádaný. <rdf:bag> je neuspořádaný seznam, který povoluje duplctní záznamy. <rdf:alt> vyjadřuje seznam alternatv. Může být uspořádaný podle preferovaného pořadí. <rdf:_> <rdf:_2>... jsou vlastnost, které jsou použty pro vyjmenování obsahu seznamů Jazyk kolekcí <rdf:lst> reprezentuje třídu kolekcí. Kolekce se skládá z prvního prvku (hlavy) a zbytku kolekce. <rdf:frst> reprezentuje hlavu kolekce. <rdf:rest> reprezentuje zbytek kolekce, typcky další kolekc. <rdf:nl> označuje konec kolekce nebo prázdnou hodnotu (tak, jak j známe z funkconálních programovacích jazyků) Axomy Axomy RDF defnují význam jednotlvých defnovaných zdrojů. Tyto axomy mohou být použty pro odvození dalších trojc. Refkační vlastnost <rdf:subject> <rdf:type> <rdf:property> <rdf:predcate> <rdf:type> <rdf:property> <rdf:object> <rdf:type> <rdf:property> Vlastnost pro seznamy <rdf:frst> <rdf:type> <rdf:property> <rdf:rest> <rdf:type> <rdf:property> <rdf:_> <rdf:type> <rdf:property> <rdf:_2> <rdf:type> <rdf:property>

25 ... <rdf:nl> <rdf:type> <rdf:lst> Další vlastnost <rdf:value> <rdf:type> <rdf:property> <rdf:type> <rdf:type> <rdf:property> Ve [VANEKOVA] je podrobně dokázáno, že tyto axomy stačí, aby RDF získalo výrazovou sílu RDFS. K tomu účelu je třeba defnovat struktury a nterpretace jazyka RDF, v naší prác se vydáme jným směrem Jazyk RDFS Budeme používat jmenný prostor rdfs:, což je zkratka za Jazyk tříd <rdfs:resource> je nadtřída všech ostatních tříd. <rdfs:class> označuje třídu. Tento termín je v RDF používán neurčtě. Každý zdroj, který je předmětem trojce s vlastností <rdf:type>, považováno za třídu. Např. z trojce <trp:brdy05050> <rdf:type> <trp:trp> vyplývá, že zdroj <trp:trp> je třída. <rdfs:lteral> je nstance třídy <rdfs:class>. Jde o třídu lterálů. <rdfs:datatype> je podtřídou <rdfs:class>. Je to třída datových typů Jazyk vlastností <rdfs:range> je vlastnost, která určuje obor hodnot vlastnost, jež je předmětem trojce. <rdfs:doman> je vlastnost, která určuje defnční obor vlastnost, jež je předmětem trojce. <rdfs:subclassof> říká, že podmět je podtřídou předmětu. Ze dvou trojc <foo:b> <rdf:subclassof> <foo:a> a <foo:c> <rdf:type> <foo:b> plyne trojce <foo:c> <rdf:type> <foo:a>. <rdfs:subpropertyof> říká, že podmět je podvlastnost předmětu. Ze dvou trojc <foo:p> <rdf:subpropertyof> <foo:q> a <foo:c> <foo:p> <foo:d> plyne trojce <foo:c> <foo:q> <foo:d>. Tedy všechny trojce s vlastností <foo:p> platí se všem nadvlastnostm dané vlastnost <foo:p>. <rdfs:label> pojmenovává daný zdroj. Jde o název, který je určený pro ldského čtenáře. <rdfs:comment> popsuje zdroj. Tento pops je také určený pro ldského čtenáře, ovšem je rozsáhlejší než <rdfs:label>. Tento seznam jazyku RDF a RDFS byl úvodem pro jazyk OWL, který umožňuje přesnější a bohatší defnc herarche tříd a vlastností než RDFS

26 4.4. Databáze pro RDF Pro formát RDF exstuje několk databází. Tyto databáze uskladňují RDF trojce v nějakém úložšt, ke kterému se poté dá přstupovat pomocí dotazovacích jazyků. Tyto jazyky jsou přblíženy v následující kaptole Inference Další funkce těchto databází oprot tradčním relačním je v tzv. nferenc. Inference se také označuje jako odvozování, jde o proces vytváření nových trojc na základě vztahů mez třídam. Tato nference může být různě slná - základní úroveň poskytuje RDFS, kde je defnován vztah podtřída. Potom z trojc <trp:hardwoods> <rdfs:subclassof> <trp:woods> <trp:hardwood> <rdf:type> <trp:hardwoods> lze odvodt novou trojc <trp:hardwood> <trp:type> <trp:woods>. Totéž platí pro vlastnost a podvlastnost. Jmenný prostor foaf: odkazuje na < Foaf je jedna z nejznámějších ontologí, modeluje vztahy mez ldm a nformace o zálbách, publkacích apod. Používá pouze syntax RDFS. Z následujících trojc <foaf:homepage> <rdfs:subpropertyof> <foaf:page> <trp:alaneckhardt> <foaf:homepage> <foaf:mojestranka> lze odvodt novou trojc <trp:alaneckhardt> <foaf:page> <foaf:mojestranka>. OWL nabízí mnohem bohatší slovník, který defnuje další odvozovací pravdla. Pomocí OWL lze zapsat podstatně přesnější vztahy. Odvozování těchto nových trojc je ponecháno na databáz. Exstují také programy, které umožňují provádět odvozování na RDF souborech. Těmto programům se říká reasonery nebol odvozovací stroje. Ty mohou ověřt konzstenc RDF souboru a vygenerovat nové odvozené trojce. Nekonzstence se dá docílt až v OWL, kde lze zadat omezení na ndvdua třídy. Pokud je nějaký zdroj ndvduum této třídy a zároveň nesplňuje zadaná omezení, nejsou data konzstentní Sesame Jednou z nejznámějších RDF databází je Sesame. Sesame je rozdělen do několka logckých vrstev, čímž umožňuje velm dobrou flexbltu. Vrstvy mez sebou komunkují pomocí pevně daných rozhraní, každou z vrstev lze tedy doprogramovat

27 Obrázek ]SESAME] Schéma Sesamu je na obrázku K Sesamu se dá přstupovat z lbovolného Java programu, pak se využívá Sesame Access APIs. Přes toto rozhraní lze zadávat dotazy do RDF dat, případně provádět další operace jako je mazání trojc nebo jejch přdávání. Zajímavou částí obrázku je SAIL API. SAIL je zkratka za Storage And Inference Layer. Tato vrstva provádí odvozování a samotné získávání dat. SAIL využívají moduly pro dotazovací jazyky a také admnstrátorský modul, který zabezpečuje přdávání a mazání trojc. Tuto vrstvu budeme označovat obecně jako úložště. Výhoda této vrstvy je ta, že je nezávslá na použtém úložšt RDF dat. To umožňuje lehkou přenostelnost programu mez databázovým platformam nebo např. testování programu na datech uložených v pamět a poté přechod na plně databázový přístup. Zajímavé je, že odvozování provádí tato vrstva. Pokud náš program potřebuje odvozování, musíme tedy vybrat takové úložště, které ho podporuje. Sesame dále umožňuje spravovat jednotlvá úložště přes rozhraní nternetového prohlížeče pomocí Apache Tomcat. Správa přes toto rozhraní je jednoduchá a užvatelsky příjemná, lze zde mmo jné vyprázdnt úložště, nahrát do něj data z nějakého souboru, pokládat do něj dotazy apod. Mez další funkce patří export dat do RDF souboru. K úložštím se přstupuje přes Apache Tomcat, čímž je programátor plně odstíněn od nutnost konfgurace přpojení k databáz apod Jena Jena je oprot Sesamu jž dlouhodobější projekt, verze 2.0 byla vydána Jena poskytuje programátorov více funkcí než Sesame, chybí jí ovšem nternetové rozhraní pro správu úložšť. Programátor musí sám přímo v programu uvést, odkud chce získávat data. Jena umožňuje získávat data z úložště pomocí funkcí tohoto úložště. Např. funkce lstsubjectswthproperty vrátí všechny podměty s danou vlastností. Takto lze získávat další data bez nutnost používat dotazovací jazyk

28 4.5. Dotazovací jazyky pro RDF V této kaptole s přblížíme dva dotazovací jazyky pro RDF, SeRQL a SPARQL. SeRQL je vyvnut přímo pro Sesame, je to propretární jazyk. SPARQL je standard konsorca W3C, čímž je zajštěna jeho použtelnost na více RDF databázích. Oba dva jazyky podporují dva přístupy - dotazovací a vytvářející. Dotazovací část se podobá tradčnímu SQL z relačních databází, vytvářející potom vytváří RDF graf z dat získaných v dotazu. V přblížení jazyků se budeme věnovat pouze jejch dotazovací část SeRQL SeRQL vychází z notace SQL, ze které s bere klauzule "SELECT", "FROM" a "WHERE". Dále zavádí klauzul "USING NAMEPSPACE", která umožňuje využtí jmenných prostorů. Typcký SeRQL dotaz může vypadat takto select dstnct Y from {X} rdf:type {trp:trp}, {X} p {Y} where p lke "*Cty*" usng namespace rdf =< rdfs =< trp =< Tento příklad vrací takové zdroje, jež jsou předmětem vlastnost, která obsahuje řetězec "Cty" a podmětem této vlastnost je nějaký zdroj typu <trp:trp>. Z příkladu je vdět použtí příkazu dstnct, který elmnuje duplctní záznamy. Dále je zde použt výraz lke, který umožňuje omezt hodnotu nějaké proměnné pomocí regulárního řetězce. Dále v klauzul from je výraz pro jednotlvé trojce. Tyto trojce jsou odděleny čárkou. Sesame umožňuje zkracování zápsu v případě shodného podmětu takto from {X} rdf:type {trp:trp}; p {Y} SeRQL dovoluje použít tzv. voltelné trojce. Je to obdoba left jon z relačních databází. Pokud zadaná voltelná trojce neexstuje, místo ní jsou použty hodnoty NULL. select X, Y from {X} rdf:type {trp:trp}, [{X} trp:ondrasratng {Y}] usng namespace rdf =< rdfs =< trp =< Tento dotaz vrátí seznam výletů a případné Ondrovo hodnocení, pokud exstuje. Pokud ne, bude na místě proměnné Y hodnota NULL

29 SPARQL SPARQL používá klauzule "SELECT", "FROM" a "WHERE". Dále zavádí klauzul "PREFIX", která umožňuje využtí jmenných prostorů. Klauzule "FROM" ovšem není použta v tradčním smyslu, ale označuje zdroj dat. V našem případě j nebudeme uvažovat. Typcký SPARQL dotaz může vypadat takto PREFIX trp: PREFIX rdf: PREFIX rdfs: Příklad je stejný, jako u jazyku SeRQL. Místo výrazu lke používá SPARQL obecný výraz FILTER, který značí podmínku a dále REGEX, který porovnává proměnnou?p převedenou na řetězec prot regulárnímu výrazu. Také SPARQL umožňuje voltelné trojce. PREFIX trp: PREFIX rdf: PREFIX rdfs: < < < SELECT DISTINCT?y WHERE {?x rdf:type trp:trp.?x?p?y. FILTER (REGEX(str(?p),".*Cty.*")). } < < < SELECT DISTINCT?x?y WHERE {?x rdf:type trp:trp. OPTIONAL {?x trp:ondrasratng?y} } Oprot SeRQL nabízí SPARQL možnost setřídt výsledky podle hodnot nějaké proměnné PREFIX trp: PREFIX rdf: PREFIX rdfs: < < < SELECT DISTINCT?x?y WHERE {?x rdf:type trp:trp. OPTIONAL {?x trp:ondrasratng?y} } ORDER BY DESC(?y) Řádky, kde proměnná?y má hodnotu NULL, jsou umístěny na konc výsledků Shrnutí Ve stručnost jsme s přblížl dva dotazovací jazyky pro RDF. Oba jazyky používají známe klauzule SELECT, FROM, WHERE, byť SPARQL dává klauzul FROM jný význam

30 Také je zde možnost omezovat hodnoty např. pomocí regulárních výrazů nebo artmetckých porovnání. Chybí zde agregace výsledků, např. součet hodnot, průměr apod. Největší rozdíl oprot SQL je zavedení pojmu proměnné. Z důvodu reprezentace dat jako grafu je dotazování prováděno na nejmenších částech grafu - na trojcích. Jednotlvé složky trojc jsou proměnné. Na tyto proměnné můžeme klást podmínky podobně, jako na buňky tabulek v relačním modelu. Pro naše účely bude stačt takto stručný úvod, protože budeme využívat pouze elementární dotazy Závěr kaptoly Formát dat RDF je častý způsob uložení dat v doméně sémantckého webu. Proto se jím budeme dále zabývat. Zde jsme s ukázal základy syntaxe a některé nástroje, které umožňují RDF data ukládat a poté k nm přstupovat pomocí dotazovacího jazyka

31 5. OWL 5.. Základy OWL OWL nabízí bohatší slovník a sémantku pro pops vztahů v nějaké oblast než RDFS. Vychází z RDFS a využívá jeho vlastnost, dále však přdává nové možnost pro přesnější defnc tříd a vlastností. Navíc OWL rozšřuje koncept defnovaných tříd oprot RDFS o možnost přdání podmínek. Tyto podmínky jsou přřazeny ke třídě C. Pokud je podmínka p nutná, každé ndvduum třídy j musí splňovat. Nutné podmínky jsou určeny vlastností <rdfs:subclassof>. Pokud je to podmínka p nutná a postačující, všechny zdroje, které podmínku p splňují, jsou označeny jako ndvdua této třídy C. Nutné a postačující podmínky jsou určeny vlastností <owl:equvalentclass>. OWL je rozděleno do třech úrovní ) OWL Lte 2) OWL DL 3) OWL Full OWL Lte má nejmenší výrazovou schopnost, OWL Full největší. Budeme používat jmenný prostor owl:, což je zkratka za # Jazyk OWL Lte Jazyk tříd Třídy jsou v OWL převzaty z RDFS, čímž je zachována zpětná kompatblta. Platí, že všechny korektní OWL soubory jsou korektní RDFS soubory. <rdfs:class> <rdfs:subclassof> se používá také pro označení nutných podmínek. <rdf:property> <rdfs:doman> <rdfs:range> <owl:indvdual> je třída ndvduí Jazyk rovnocennost <owl:equvalentclass> vyjadřuje rovnocennost dvou tříd. Množna ndvduí obou tříd je stejná. Tato vlastnost je použta pro označení postačující podmínky. <trp:human> <owl:equvalentclass> <foaf:person>. <owl:equvalentproperty> vyjadřuje rovnocennost dvou vlastností. <owl:sameas> označuje dvě shodná ndvdua. Tato vlastnost může být použta př odkazu do jných ontologí. Tímto způsobem lze vytvářet dstrbuované ontologe, které pak mohou být mez sebou provázány právě vlastnostm <owl:sameas>. Pokud jž máme ontolog vytvořenou a zjstíme, že některá jž použtá ndvdua se vyskytují v jných ontologích, můžeme je pomocí vlastností <owl:sameas>, <owl:equvalentproperty> a <owl:equvalentclass> propojt. <owl:dfferentfrom> označuje, že podmět je rozdílný od předmětu

32 <owl:alldfferent> je seznam množn ndvduí, která jsou po dvou rozdílná. Je to zkratka za více vlastností <owl:dfferentfrom>. <owl:dstnctmembers> je množna ndvduí, která jsou po dvou rozdílná. Tato množna je prvkem seznamu <owl:alldfferent> Jazyk typů vlastností <owl:objectproperty> je třída vlastností, které mají jako předmět ndvdua. <trp:hasterran> <rdf:type> <owl:objectproperty> <owl:datatypeproperty> je třída vlastností, které mají jako předmět lterál. <trp:numberofdays> <rdf:type> <owl:equvalentclass> <owl:nverseof> označuje dvě nverzní vlastnost. <trp:sendngctyof> <owl:nverseof> <trp:hasendngcty> <owl:transtveproperty> označuje transtvní vlastnost. <owl:symmetrcproperty> označuje symetrckou vlastnost. <owl:functonalproperty> označuje vlastnost, která je funkcí. Jeden podmět může být touto vlastností spojen s nejvýše jedním předmětem. <trp:hasstartngcty> <rdf:type> <owl:functonalproperty> <owl:inversefunctonalproperty> označuje vlastnost, jejíž nverzní vlastnost je funkce. <trp:sstartngctyof> <rdf:type> <owl:inversefunctonalproperty> Jazyk průnku tříd <owl:ntersectonof> defnuje novou třídu jako průnk stávajících tříd Jazyk omezení vlastností <owl:restrcton> je základní třída všech omezení. Všechna omezení jsou ndvdu této třídy. <_:A8> <owl:type> <owl:restrcton> <owl:onproperty> označuje vlastnost, která má být omezena. <_:A8> <owl:onproperty> <trp:hasfoods> <owl:allvaluesfrom> vyžaduje, aby všechny předměty omezované vlastnost náležely do množny defnované předmětem. <_:A8> <owl:allvaluesfrom> <trp:foodwthoutpreparaton> <owl:somevaluesfrom> vyžaduje, aby alespoň jeden předmět omezované vlastnost náležel do množny defnované předmětem Jazyk četností <owl:mncardnalty> stanovuje nejmenší počet ndvduí přpojených touto vlastností. V OWL Lte toto omezení může být pouze 0 nebo

33 <owl:maxcardnalty> stanovuje největší počet ndvduí přpojených touto vlastností. V OWL Lte toto omezení může být pouze 0 nebo. <owl:cardnalty> stanovuje přesnou četnost této vlastnost. Opět v OWL Lte toto omezení může být pouze 0 nebo Jazyk nformací o ontolog <owl:ontology> je třída, která defnuje ontologe. Jedna nstance této třídy by měla být na začátku každé ontologe. <owl:imports> umožňuje načíst jnou ontolog. Načítaná ontologe je specfkována jejím URI, předpokládá se, že je to typ <owl:ontology>. <owl:imports> je transtvní vlastnost, tedy všechny ontologe, načtené načítanou ontologí, budou také načtené. Ontologe jsou mportovány jako celek. Není možné převzít pouze část ontologe. Použtelnost vlastnost <owl:imports> je zpochybněna v [ECONNECTIONS]. Autoř zde navrhují nové vlastnost a třídy, které umožňují načtení pouze část ontologe. Navíc je zde popsán algortmus pro rozdělení exstujících ontologí na vzájemně provázané část. Tyto část jsou mez sebou provázány právě novým vlastnostm. Edtor ontologí SWOOP jž má v sobě ntegrované tyto vlastnost a dokonce algortmus pro rozčlenění exstujících ontologí. Na [ECONNECTIONS] lze také nalézt odkaz na velké známé ontologe, např. [GALEN], rozdělené pomocí SWOOP na více částí. Další výrazy jsou dostupné jž pouze v OWL DL a Full Defnce tříd <owl:oneof>, <owl:datarange> umožňují defnovat třídy výčtem prvků. <owl:dsjontwth> označuje dvě třídy jako různé. <trp:menuforoneday> <owl:dsjontwth> <trp:menoforoneweek> Defnce tříd množnovým operacem <owl:unonof> umožňuje defnovat novou třídu jako sjednocení dvou stávajících tříd. <owl:complementof> umožňuje defnovat novou třídu jako doplněk stávající třídy. <owl:ntersectonof> umožňuje defnovat novou třídu jako průnk dvou stávajících tříd Omezení předmětů vlastnost <owl:hasvalue> omezuje možné hodnoty vlastnost na jedno ndvduum Příklad Ukážeme s část ontologe, která defnuje podmínku a tuto podmínku poté aplkuje na třídu. Podmínka nám říká, že v jídelníčku na jednodenní výlet mohou být pouze jídla, která nevyžadují přípravu. Podmínka je defnovaná tímto RDF grafem

34 <_:A8> <owl:type> <owl:restrcton> <_:A8> <owl:onproperty> <trp:hasfoods> <_:A8> <owl:allvaluesfrom> <trp:foodwthoutpreparaton> Nyní podmínku aplkujeme na třídu pomocí vlastnost <rdfs:subclassof> <trp:menuforoneday> <rdfs:comment> "Jídelníček na jeden den. Nepředpokládá se, že by se vařlo, proto jsou povolena pouze jídla bez přípravy."^^xsd:strng <trp:menuforoneday> <rdfs:subclassof> <_:A8> <trp:menuforoneday> <rdf:type> <owl:class> <trp:menuforoneday> <rdf:subclassof> <trp:foodmenu> <trp:menuforoneday> <owl:dsjontwth> <trp:menoforoneweek> <trp:menuforoneday> <owl:dsjontwth> <trp:menuforweekend> 5.2. Vytváření ontologí Nyní jž jsme přpraven vytvořt novou ontolog. Tato ontologe bude pokrývat obor aktvt turstckého oddílu. Její hlavní motvací je vytvořt prostor pro defnování výletních lokalt a jejch atrbutů. Tato ontologe bude následně použta jako základ pro hledání optmální výletní lokalty pro tento oddíl. Pokud budeme chtít najít podobnou ontolog na nternetu, např. [TRAVEL], zjstíme, že takové exstují. Bohužel ovšem popsují problematku výletů z pohledu tursty, který se chce někde ubytovat a očekává, že mu dané místo nabídne nějaký program. Specfk uvažovaných turstckých oddílů je několk. První z nch je, že se neubytovává v hotelech, ale spí ve volné přírodě, převážně pod celtou, zřídka v kempu. Další je, že turstcké oddíly nevyhledávají rozptýlení v daném místě, ale zajímá je v jakém terénu dané místo nachází. Všechna tato specfka se musí promítnout do výsledné ontologe. Pokud chceme vytvořt komplexní ontolog, prác nám velm ušetří použtí některého z nástrojů pro tvorbu ontologí. Mez nejznámější patří Protégé [PROTEGE] a SWOOP [SWOOP]. Protégé má velm mnoho zásuvných modulů a je velm hezky grafcky navržen. SWOOP má přímo zabudovaný OWL reasoner a podporuje zmňované dělení ontologí. Jelkož má OWL pevnou syntax, není problém ontolog vytvořenou v jednom nástroj otevřít v jném. Tím je zajštěna velká přenostelnost a modularta ontologí. Níže uvedený postup není rozepsán do detalů. Výslednou ontolog lze nalézt na přloženém CD. Př tvorbě ontologe jsme použl edtor Protégé, SWOOP pak pouze pro kontrolu konzstence. Př vytváření ontologe je vhodné začít defncí tříd. Základní třídy vyplynou poměrně jasně z prvního prozkoumání problému. V našem případě to budou třídy výletních lokací, terénu, kde se lokace nachází, měst, které se poblíž nacházejí, a o možnostech získání ptné vody ze studánek a potoků. Dále budeme chtít uchovávat nformace o jednotlvých uskutečněných výletech, o počasí a ldech, kteří na výletu byl. Bude užtečné mít nformace o obchodech ve městech (o jejch otevírací době) a o tom, jakým dopravním prostředkem se půjde do daného města dostat. Nakonec ještě přdáme strukturu jídelníčku na výletech. Zanesením těchto tříd do Protégé získáme toto úvodní schéma

35 5.2.. Schéma Nyní vytvoříme podtřídy k některým třídám. První z nch bude terén, který rozdělíme na hory, louky, lesy, města a vodní plochy. Dále rozdělíme třídy jídla, jídelních menu, přepravy a podnebních podmínek. Vhodnost rozdělení na podtřídy může vyplynout až v průběhu vytváření ontologe, případně až př jejím používání. Např. v našem případě se rozdělení počasí ukázalo jako vhodné až př samotném vytváření ndvduí. V původním schématu bylo nutno psát dohromady teplotu oblačnost, což neúměrně zvyšovalo počet nutných ndvduí, z nchž většna by zůstala nevyužta. Po návrhu tříd zjstíme, jaké jsou mez třídam vztahy. Tyto vztahy zapíšeme pomocí vlastností. Vytváření vlastností většnou probíhá současně s tvorbou tříd, deální postup je však oba procesy oddělt. Vyhneme se tím dvojtým změnám, kdy změna v defnc třídy s vynutí změny ve vlastnostech. V závěrečné fáz potom vytvoříme omezení na třídy, případně vytvoříme nové defnované třídy. Tyto budou hrát rol užvatelských pohledů. Náležení do těchto tříd bude zjšťovat odvozovací stroj Závěr kaptoly Jazyk OWL jsme studoval hlavně proto, že umožňuje přesnější zachycení vztahů v určté oblast. Proto je vhodnější pro vytváření ontologí než čsté RDFS, ze kterého OWL vychází. Dále jsme s ukázal příklad vytvoření ontologe výletních míst, která bude určena turstckému oddílu. Aplkac, která tuto ontolog využívá, ukážeme v kaptole v praktcké část práce

36 6. Zavedení vícehodnotové predkátové logky do RDF, RDFS a OWL Chceme použít RDF a RDFS pro vyjádření ohodnocených faktů a pravdel z logckého programování. Navrhneme dva možné přístupy a zvážíme možné přínosy, které by RDFS a OWL mohlo do logckého programování přnést. Logcké programování s vícehodnotovou logkou je jeden z možných modelů užvatelských preferencí. Zavedení tohoto modelu do RDF nám umožní provádět dotazy s užvatelským preferencem. Tyto preference budou modelované pravdvostním hodnotam. Navíc bychom chtěl, aby se níže vytvořený model logckého programu dal vnořt do jž exstujících RDF dat. Tím se umožní využtí logckého přístupu k exstujícím datům. Konkrétní způsob zanoření může být využtí vlastnost <owl:imports> nebo pomocí E- Connectons. V příloze 4 uvedeme RDFS soubor popsující logcký program, čímž tuto vlastnost zajstíme. 6.. Přímé modelování pravdel První přístup pro zavedení logckého programování do RDF je vytvoření nových vlastností a tříd, které odpovídají ohodnoceným faktům a pravdlům. Jde v podstatě o doslovné přepsání pravdel a faktů do RDF, budeme ho označovat jako doslovný. Tyto nové vlastnost a třídy umístíme do vrtuálního jmenného prostoru mvlp:. Indvdua budou prvky nové třídy <mvlp:u>, pravdvostní hodnoty pak <mvlp:truthvalue> a proměnné <mvlp:varable>. Druhý přístup bude využívat stejné třídy a vlastnost jako doslovný přístup. Ovšem bude umožňovat využtí jž exstujících RDF dat. Označíme ho uchovávající. Rozhodl jsme se nové vlastnost a třídy pojmenovat anglcky, jelkož všechny standardy jsou psané v anglčtně. Tím se zajstí určtá meznárodní přenostelnost Modelování predkátů α do RDF. Chceme zapsat fakt P(,..., k ): r α Zavedeme novou třídu <mvlp:predcate> pro predkáty. Jednotlvé predkáty budou podtřídy třídy <mvlp:predcate>, ohodnocené fakty potom ndvdua těchto podtříd. Tato třída bude splňovat následující požadavky <mvlp:predcate> <rdf:type> <rdfs:class> <mvlp:predcate> <rdf:_> <mvlp:u> <mvlp:predcate> <rdf:_> <mvlp:varable> <mvlp:predcate> <rdf:_2> <mvlp:u> <mvlp:predcate> <rdf:_2> <mvlp:varable> <mvlp:predcate> <rdf:_3> <mvlp:u> <mvlp:predcate> <rdf:_3> <mvlp:varable> Modelování hodnocení Dále zavedeme novou vlastnost <mvlp:ratng>, která bude realzovat vlastní ohodnocení faktu trojcí <mvlp:predcate> <mvlp:ratng> <mvlp:t> Vlastnost <mvlp:ratng> defnujeme těmto trojcem <mvlp:ratng> <rdf:type> <rdf:property> <mvlp:ratng> <rdfs:doman> <mvlp:predcate>

37 Dále pokud je T konečná, přdáme <mvlp:ratng> <rdfs:range> <mvlp:truthvalue> Pokud je T nekonečná množna, obor hodnot vlastnost <mvlp:ratng> bude lterál vhodného typu, např. xsd:decmal <mvlp:ratng> <rdfs:range> <xsd:decmal> Tento přístup nám umožní lehce modelovat více užvatelských hodnocení. Všechny vlastnost, jejchž nadtřída je <mvlp:ratng>, budou také považovány za hodnocení. Např. trojcí <mvlp:ondrasratng> <rdfs:subpropertyof> <mvlp:ratng> jsme nadefnoval hodnocení Ondřeje. Všechny trojce, které vyjadřují Ondřejovo hodnocení budou brány jako trojce vyjadřující hodnocení Modelování pravdel, kde H AF, r T a B je formule ve tvaru A & B & 2 C..., A, B, C AF. Tuto mplkac budeme modelovat pomocí nové třídy <mvlp:rule>. Konjunkc A & B & 2 C... zapíšeme pomocí nové třídy <mvlp:conjunctor>. Pro tyto třídy bude platt Chceme zapsat v RDF pravdlo ( H B, r) <mvlp:rule> <mvlp:head> <mvlp:predcate> <mvlp:rule> <mvlp:body> <mvlp:conjunctor> <mvlp:conjunctor> <rdf:_> <mvlp:predcate> nebo <mvlp:conjunctor> <rdf:_> <mvlp:conjunctor> <mvlp:conjunctor> <rdf:_2> <mvlp:predcate> nebo <mvlp:conjunctor> <rdf:_2> <mvlp:conjunctor> Použtím této defnce se zpřehlední uzávorkování těla konjunktoru. Dále budeme muset rozšířt defnční obor <mvlp:ratng> o <mvlp:ratng> <rdfs:doman> <mvlp:rule> Podtřídy třídy <mvlp:rule> budou konkrétní mplkátory, např. produktový mplkátor. To samé platí pro třídu <mvlp:conjunctor>. Jednotlvá ohodnocená pravdla potom budou nstance těchto podtříd. Nakonec vytvoříme třídu <mvlp:aggregatngoperator> pro agregační operátory. Agregační operátory jsou velm volně defnované. Jejch herarche zřejmě bude složtější než u mplkátorů a konjunktorů. Lze např. defnovat podtřídu <mvlp:weghtaverageoperator>, jejíž další podtřídy budou vážené průměry s různým váham. Dále by bylo možné defnovat další podtřídy podle arty agregátoru. Tuto problematku necháváme otevřenou pro další zkoumání. Jednotlvé parametry agregačního operátoru budou defnované opět pomocí vlastností <rdf:_>,<rdf:_2>,... takto <mvlp:aggregatngoperator> <rdf:_> <mvlp:predcate>

38 <mvlp:aggregatngoperator> <rdf:_2> <mvlp:predcate> <mvlp:aggregatngoperator> <rdf:_3> <mvlp:predcate>... Tím jsme namodeloval ohodnocené fakty pravdla vícehodnotového logckého programu do RDF a RDFS Využtí sémantky RDF/RDFS Pokud bychom nechtěl zavádět nové vlastnost do RDF, musíme využít pouze ty výrazové prostředky, které jsme zmínl v kaptole o RDF, RDFS a OWL. Ncméně přdání některých vlastností se zřejmě nevyhneme. Množna ndvduí nyní bude třída <rdfs:resource>, od které jsou všechny další třídy zděděné. Pro konečnou množnu pravdvostních hodnot T můžeme opět zavést třídu <mvlp:truthvalue> nebo používat lterál pro nekonečnou množnu Modelování ohodnocení Ohodnocené fakty budeme modelovat stejně jako v doslovném přístupu. Zde nemůžeme využít žádnou z vlastností RDF, musíme vytvořt novou vlastnost <mvlp:ratng>. Změníme ovšem defnc defnčního oboru <mvlp:ratng> <rdfs:doman> <rdfs:resource>. Oprot defnc faktu v predkátové logce P ( x,..., z) : r jsme rozšířl defnc hodnocení na jednotlvá ndvdua. Toto rozšíření může být relevantní, jelkož vyjadřuje oblíbenost konkrétního objektu x pro užvatele. Ohodnocení výletu <trp:brdy05050> <mvlp:ondrasratng> "0.9" vyjadřuje přímou oblíbenost výletu pro Ondru. To, jak se zdál Ondrov výlet dlouhý, může, ale také nemusí, souvset s hodnocením výletu. Takto rozšířená defnce ohodnocení umožňuje zaznamenání obecnějších užvatelských preferencí. Užvatel může mít názor na lbovolnou věc, tedy třeba na predkát P. Hodnocení predkátu potom vyjadřuje, jak je pro užvatele důležtý. Jný způsob nazírání na hodnocení je považovat hodnocení jako vícehodnotový unární predkát. Přesné rozebrání smyslu a různých použtí této defnce bude podrobeno dalšímu detalnímu zkoumání, zde se spokojíme s tím, že tato defnce poskytuje dostatečnou flexbltu, které obecně preference mohou nabývat Modelování predkátů Pokud bychom se omezl na bnární predkáty ve tvaru ( x y) P,, potom bychom vystačl s modelování faktů pomocí refkací. Opět s uvědomíme, že nyní je unverzum U pro nás množna všech zdrojů. Bnární predkáty P ( x, y) budeme chápat jako ndvdua třídy <rdf:property>. RDF trojce tedy pro nás jsou neohodnocené fakty <foo:x> <foo:p> <foo:y> Refkací této trojce pomocí vlastnost <mvlp:ratng> bychom dodal hodnocení r a tím celý ohodnocený fakt. ( ) r Unární predkáty P x : můžeme modelovat přímo trojcí <mvlp:x> <mvlp:p> <T:r> V závěru s ukážeme modelování více-árních predkátů pomocí třídy <mvlp:predcate>

39 Modelování pravdel Ohodnocené pravdlo se skládá ze tří částí - těla, hlavy a ohodnocení. Smysl pravdel je v tom, že nám dovolují spočítat ohodnocení hlavy pravdla na základě ohodnocení jednotlvých částí těla pravdla. Toto můžeme převést do RDF - zde jsou jednotlvé objekty provázány vlastnostm. Vezměme s např. třídu <trp:sunnytrp> z příkladu v kaptole o OWL. Tato třída je spojena se třídam <trp:weather>, <trp:human>,<trp:trplocaton>,<trp:cty> a dalším. Pro vypočítání míru náležení ndvdua o do třídy <trp:sunnytrp> je možné použít hodnocení ndvduí, která jsou s ndvduem o spojená. Ovšem neznáme typ konjunktorů an mplkátorů, tyto nformace budeme muset do RDF dodat. Navíc nemusíme chtít používat všechny vlastnost, které mají defnční obor <trp:sunnytrp>. Chtěl bychom zapsat pravdlo Type( x, SunnyTrp) hasweather( x, y) & Type( y, SunnyWeather) : 0. 7 Chtěl bychom se nejlépe zbavt nutnost používat proměnné. Problém nastává př unfkac proměnných v pravdle a jeho hlavě. Pravdla nepůjde zapsat pouze jako trojce <trp:rulesunnytrp> <mvlp:head> <trp:sunnytrp> <trp:rulesunnytrp> <mvlp:body> <mvlp:conjunctor> <mvlp:conjunctor> <rdf:_> <trp:hasweather> <mvlp:conjunctor> <rdf:_2> <trp:sunnyweather>. Zde nám chybí nformace o tom, jaká proměnná má mít vlastnost SunnyWeather. Z tohoto důvodu musíme využít proměnné. Zde s uvědomíme vztah s deskrpční logkou, která proměnné nepoužívá, a tvoří teoretcký základ pro pops omezení v jazyce OWL. Náš záps logckého programu proměnné využívat musí. Oprot deskrpční logce v logckém programování chybí kvantfkátory. Deskrpční logku logcké programování lze použít pro odvozování nových znalostí, mají tedy v jstém smyslu stejný cíl. Více o deskrpční logce lze nalézt na [DL]. Abychom se vyhnul dlouhým zápsům pravdel, budeme využívat refkace. Nejprve zapíšeme hlavu pravdla takto <_:Trple> <rdf:type> <rdf:statement> <_:Trple> <rdf:subject> <mvlp:x> <_:Trple> <rdf:predcate> <rdf:type> <_:Trple> <rdf:object> <trp:sunnytrp> <trp:rulesunnytrp> <mvlp:head> <_:Trple> Výše uvedeným trojcem jsme řekl, že v hlavě pravdla bude tvrzení, že proměnná X je typu SunnyTrp. <_:Trple2> <rdf:type> <rdf:statement> <_:Trple2> <rdf:subject> <mvlp:x> <_:Trple2> <rdf:predcate> <trp:hasweather> <_:Trple2> <rdf:object> <mvlp:y> <mvlp:conjunctor> <rdf:_> <_:Trple2> <_:Trple3> <rdf:type> <rdf:statement> <_:Trple3> <rdf:subject> <mvlp:y> <_:Trple3> <rdf:predcate> <rdf:type> <_:Trple3> <rdf:object> <trp:sunnyweather> <mvlp:conjunctor> <rdf:_2> <_:Trple3> Tímto jsme defnoval tělo pravdla. Jde o konjunkc tvrzení, že X má počasí Y a Y je typu SunnyWeather

40 Nakonec přřadíme mplkátoru tělo pravdla a hodnocení pravdla. <trp:rulesunnytrp> <mvlp:body> <mvlp:conjunctor> <trp:rulesunnytrp> <mvlp:ratng> "0.7" Celá struktura výsledného pravdla je na obrázku <trp:sunnytrp> <rdf:type> <mvlp:x> <mvlp:x> <trp:hasweather> <mvlp:y> <mvlp:head> <rdf:_> <mvlp:rulesunnytrp> <mvlp:ratng> <mvlp:body> <mvpl:conjunctor> <rdf:_2> <T:r> <rdf:type> <mvlp:y> <trp:sunnyyweather> Obrázek Refkované trojce samozřejmě mohou být lbovolného tvaru, nemusí být použty pouze proměnné. Místo proměnné lze použít lbovolné ndvduum. Obecná defnce ohodnocených pravdel tedy bude <mvlp:rule> <mvlp:head> <rdfs:statement> <mvlp:rule> <mvlp:body> <mvlp:conjunctor> <mvlp:rule> <mvlp:body> <mvlp:aggregatngoperator> Pro bnární predkáty použjeme <mvlp:conjunctor> <rdf:_> <rdf:statement> <mvlp:conjunctor> <rdf:_2> <rdf:statement> Nakonec pro složené konjunktory přdáme <mvlp:conjunctor> <rdf:_> <mvlp:conjunctor> <mvlp:conjunctor> <rdf:_2> <mvlp:conjunctor> Pro mplementac agregačních operátorů pouze rozšíříme jejch defnc na <mvlp:aggregatngoperator> <rdf:_> <rdfs:statement> <mvlp:aggregatngoperator> <rdf:_2> <rdfs:statement> <mvlp:aggregatngoperator> <rdf:_3> <rdfs:statement>... Dále je možné agregátory rozšířt o parametry datových typů. Např. <mvlp:aggregatngoperator> <rdf:_> <xsd:decmal> Shrnutí Pokud se v programu omezíme na bnární predkáty, lze tento program modelovat přímo v exstujících RDF datech. Vytvoříme konjunktory a mplkátory, které budou modelovat pravdla

41 Ohodnocené fakty budou vlastní trojce v RDF datech, refkované vlastností <mvlp:ratng>. Pokud refkace není přítomná, můžeme předpokládat, že trojce platí na. Tím umožníme využtí exstujících dat pro výpočty logckého programu Příklad Přepíšeme příklad z kaptoly do RDF. Program měl následující strukturu: SunnyTrp x hasweather x, y, SunnyWeather a) ( ) ( ( ) ( y) ): 0. 9 b) SunnyWeather( x) hasatmospherccondtons( x, Sunny) : 0. 9 G c) hasweather ( Brdy05050, OvercastsMldTemperature) : d) hasatmosph erccondtons( OvercastsMldTemperature,Overcasts) : 0. 9 e) hasatmosph erccondtons( OvercastsMldTemperature, Sunny) : 0. f) hasweather ( Polsko03080, SunnyHghTemperature) : g) hasatmosph erccondtons( SunnyHghTemperature, Sunny) : 0. 9 Nejdříve převedeme fakty c)-g). Pro stručnost převedeme pouze první dva fakty. <_:Trple> <rdf:type> <rdf:statement> <_:Trple> <rdf:subject> <trp:brdy05050> <_:Trple> <rdf:predcate> <trp:hasweather> <_:Trple> <rdf:object> <trp:overcastsmldtemperature> <_:Trple> <mvlp:ratng> "" <_:Trple2> <rdf:type> <rdf:statement> <_:Trple2> <rdf:subject> <trp:overcastsmldtemperature> <_:Trple2> <rdf:predcate> <trp:hasatmospherccondtons> <_:Trple2> <rdf:object> <trp:overcasts> <_:Trple2> <mvlp:ratng> "0.9" Pravdlo a) odpovídá pravdlu použtém v příkladě v textu výše. Převedeme tedy pouze pravdlo b) <trp:rulesunnyweather> <rdf:type> <mvlp:rule> <_:Trple8> <rdf:type> <rdf:statement> <_:Trple8> <rdf:subject> <mvlp:x> <_:Trple8> <rdf:predcate> <rdf:type> <_:Trple8> <rdf:object> <trp:sunnyweather> Trple8 odpovídá hlavě pravdla - proměnná X je typu SunnyWeather. <trp:rulesunnyweather> <mvlp:head> <_:Trple8> <_:Trple9> <rdf:type> <rdf:statement> <_:Trple9> <rdf:subject> <mvlp:x> <_:Trple9> <rdf:predcate> <trp:hasatmospherccondtons> <_:Trple9> <rdf:object> <trp:sunny> Trple9 odpovídá tělu pravdla - proměnná X má povětrnostní podmínky slunečno. <trp:rulesunnyweather> <mvlp:body> <_:Trple9> Nakonec přdáme hodnocení celé mplkace <trp:rulesunnyweather> <mvlp:ratng> "0.9"

42 Poznámka Ternární a více-ární predkáty budeme modelovat pomocí třídy <mvlp:predcate>. Toto řešení je ekvvalentní rozdělení těchto predkátů na více bnárních predkátů. Ukážeme s to na příkladu ternárního predkátu P ( x, y, z). Chceme jej vyjádřt pomocí bnárních predkátů P, P 2 a P 3. Vytvoříme nové vrtuální ndvduum a P( x, y, z ). Potom predkát P ( x, y, z) zapíšeme pomocí třech predkátů P ( ap ( x, y, z ), x), P2 ( ap ( x, y, z ), y) a P3 ( ap ( x, y, z ), z). Porovnejme tří výše uvedené predkáty s trojcem <mvlp:p_x_y_z> <rdf:type> <mvlp:predcate> <mvlp:p_x_y_z> <rdf:_> <mvlp:x> <mvlp:p_x_y_z> <rdf:_2> <mvlp:y> <mvlp:p_x_y_z> <rdf:_3> <mvlp:z> Tvrzení Rozložení ternárního predkátu P ( x y, z) třídy <mvlp:predcate>., na tř bnární je ekvvalentní zápsu pomocí Důkaz Vytvoříme mapování mez třem bnárním predkáty a RDF grafem. Mapování je zapsáno v tabulce P P P 2 3 a P, <rdf:_> <rdf:_2> <rdf:_3> <mvlp:p_x_y_z> ( x, y z ) Tabulka Tvrzení důkaz lze přímo zobecnt na více-ární predkáty. Z uvedené ekvvalence plyne, že je zbytečné zavádět nové konstrukce pro rozložení více-árních predkátů. Budeme tedy využívat jž zavedenou třídu <mvlp:predcate>. Změníme ovšem její defnc na <mvlp:predcate> <rdf:type> <rdfs:class> <mvlp:predcate> <rdf:_> <rdf:resource> <mvlp:predcate> <rdf:_2> <rdf:resource> <mvlp:predcate> <rdf:_3> <rdf:resource>... Pro více-ární predkáty přdáme do axomů tato pravdla <mvlp:rule> <mvlp:head> <rdfs:predcate> <mvlp:conjunctor> <rdf:_> <mvlp:predcate> <mvlp:conjunctor> <rdf:_2> <mvlp:predcate> <mvlp:aggregatngoperator> <rdf:_> <mvlp:predcate>

43 6.3. Srovnání obou přístupů Doslovný přístup mechancky přepsuje fakty a pravdla vícehodnotového logckého programu do RDF. Tím ovšem přcházíme o všechny možnost, jež nám RDF nabízí. Jná práce než výpočet logckého programu s takto uloženým daty by byla nesnadná. Dále se plně ztrácí sémantka dat a požadavek na použtelnost modelu pro jž exstující data zde není splněn. Pro jeho splnění bychom musel pro všechna ndvdua vytvořt nové fakty. Uchovávající přístup vychází z možností RDF. Umožňuje přímé využtí všech mechansmů RDF a RDFS. Požadavek na vnoření do jž exstujících RDF dat je zde splněn. Stačí mportovat níže popsanou ontolog a vytvořt pravdla. Ohodnocené fakty jsou trojce v exstujícím RDF refkované vlastností <mvlp:ratng>. Pokud refkace chybí, předpokládá se plná platnost. Hlavní výhoda uchovávajícího přístupu spočívá v zachování sémantky RDF. Pokud navíc vytváříme program nad ontologí OWL, všechny bohaté prostředky OWL nám jsou přímo přístupné v programu. Mez nejpodstatnější patří tzv. nference. Jde o proces, kdy se náležení nstance do nějaké třídy určuje dynamcky za běhu programu, přčemž toto náležení nemusí být explctně zaneseno v datech. Tuto nferenc většnou provádí úložště dat a tím se vlastně automatcky generují nové fakty. Na závěr musíme zdůraznt, že RDF a RDFS slouží pouze k uchování vlastního programu. Výpočet dotazu se provádí ve vyšší vrstvě, která tato data bude využívat. Ovšem logcký program nemusí být jedný, kdo daná data využívá. Druhý přístup ponechává data v sémantčtější formě Mapování na RuleML RuleML je způsob zápsu pravdel logckého (dvouhodnotového) programu do XML, blžší nformace lze nalézt na [RULEML]. Převod RuleML do RDF je vytvořen v [RDFRULEML], ncméně není dokumentován a je značně nepřehledný. Syntax RuleML je podobná doslovnému přístupu zápsu pravdel do RDF, defnovaném v kaptole 6., ncméně použté značení je stručnější. V této kaptole s ukážeme vztah mez dvouhodnotovým RuleML a zápsem vícehodnotových pravdel s využtím sémantky RDF. Př převodu z RDF do RuleML se omezíme na bnární predkáty. Použjeme opět příklad pravdel z kaptoly Převedeme ho do RuleML a poté s ukážeme mapování jednotlvých XML značek na RDF vlastnost. SunnyTrp x hasweather x, y, SunnyWeather y : 0. a) ( ) ( ( ) ( )) 9 b) SunnyWeather( x) hasatmospherccondtons( x, Sunny) : 0. 9 G c) hasweather ( Brdy05050, OvercastsMldTemperature) : d) hasatmosph erccondtons( OvercastsMldTemperature,Overcasts) : 0. 9 e) hasatmosph erccondtons( OvercastsMldTemperature, Sunny) : 0. f) hasweather ( Polsko03080, SunnyHghTemperature) : g) hasatmosph erccondtons( SunnyHghTemperature, Sunny) : Mapování faktů Fakty se v RuleML zapsují pomocí značky Atom. Jeho podelementy jsou Rel, který označuje predkát a Ind a Var. Ind označuje ndvduum, Var potom proměnnou. Ukážeme s, jak vypadá v RuleML fakt c)

44 <Atom> <Rel>hasWeather</Rel> <Ind>Brdy05050</Ind> <Ind>OvercastsMldTemperature</Ind> </Atom> RuleML pracuje s dvouhodnotovou logkou, proto není nkde zanesena pravdvostní hodnota. Pro fakty tedy použjeme tuto tabulku - RuleML RDF Atom lbovolná trojce Rel název vlastnost v trojc Ind podmět nebo předmět trojce, pokud nejsou typu <mvlp:varable> Var zdroj typu <mvlp:varable> Tabulka Mapování pravdel Nejprve s ukážeme, jak vypadají pravdle a) a b) v RuleML. SunnyTrp x hasweather x, y, SunnyWeather y a) ( ) ( ( ) ( )) : 0. 9 b) SunnyWeather( x) hasatmospherccondtons( x, Sunny) : 0. 9 Začneme pravdlem b) <Imples> <head> </head> <body> </body> </Imples> A nyní pravdlo a) <Imples> <head> </head> <body> <And> </body> </Imples> G <Atom> </Atom> <Atom> </Atom> <Atom> </Atom> <Rel>SunnyWeather</Rel> <Var>x</Var> <Rel>hasAtmosphercCondtons</Rel> <Var>x</Var> <Ind>Sunny</Ind> <Rel>SunnyTrp</Rel> <Var>x</Var> <Atom> <Rel>hasWeather</Rel> <Var>x</Var> <Var>y</Var> </Atom> <Atom> <Rel>SunnyWeather</Rel> <Var>y</Var> </Atom> </And>

45 Zde vdíme, že RuleML nemá podporu pro více druhů mplkace, konjunkce an agregační funkce. Proto musíme pravdla redukovat na prostou mplkac a konjunkce. Pro bnární predkáty tedy použjeme tuto tabulku - RuleML Imples Rel Ind Var RDF zdroj typu <mvlp:rule> název vlastnost v trojc podmět nebo předmět trojce, pokud nejsou typu <mvlp:varable> zdroj typu <mvlp:varable> Tabulka Rozšíření RuleML do vícehodnotové logky není předmětem této práce, jelkož formát RDF je řádově více využívaný pro různé aplkace. Tím je umožněno zavedení vícehodnotových logckých programů do aplkací, které s RDF pracují. RuleML je určeno výhradně k zápsu logckých programů a nemá přílš jné využtí Závěr kaptoly Navrhl jsme dva způsoby zápsu vícehodnotového logckého programu do RDF a RDFS. Srovnal jsme tyto způsoby a vybral jsme způsob, který ponechává exstující RDF dokumenty a nterpretuje je jako fakty. Pravdla programu je třeba zapsat pomocí navržených vlastností a zdrojů. Dále jsme probral vztah navržené notace a RuleML. Ujasnl jsme s analogcké zdroje, ovšem největší nekompatblta těchto dvou zápsů je dvouhodnotovost RuleML, které není navržené ve vícehodnotové logce. Z tohoto důvodu je také možné brát nám navrženou notac jako rozšíření RuleML o vícehodnotovou logku. Na přloženém CD je RDF soubor, kde jsou zaneseny vztahy, které jsme výše popsal. Je zde příklad zapsaného vícehodnotového logckého programu

46 7. Užvatelské preference 7.. Defnce užvatelských preferencí 7... Užvatelské preference ve vícehodnotové logce V kaptole jsme s přblížl vícehodnotovou logku a vícehodnotové logcké programování, s jejch pomocí budeme modelovat užvatelské preference. Preference jsou komplexní pojem, v různých oblastech má různý význam. Obecně můžeme preference chápat jako zobrazení z lbovolné entty na množnu pravdvostních hodnot. My se zde omezíme na dvě část, které můžeme ve vícehodnotové logce nalézt. První jsou ohodnocené fakty. Ve výrokové logce nám ohodnocený fakt říká, nakolk je daná výroková proměnná užvatel sympatcká. V predkátovém počtu potom určuje míru vlastnost nějakého ndvdua, ovšem tuto míru mu přsuzuje užvatel. Příklad vlastnost může být KrátkýVýlet, DobrýTerén apod. Druhá část je zaznamenání procesu složtějšího rozhodování. Pokud máme nějaký komplexní objekt, který se skládá z více atrbutů, celkové hodnocení objektu bude závslé na každém z těchto atrbutů. Váha atrbutů se může různt. Proces počítání celkového hodnocení lze zaznamenat pomocí ohodnocených pravdel. Tato pravdla jsou ovšem pro každého užvatele jná. V ohodnocených pravdlech máme velkou volnost pro zaznamenání rozhodovacího procesu. V ohodnoceném pravdle můžeme použít lbovolnou mplkac, která určuje způsob agregace hodnoty pravdla r a hodnoty těla pravdla b. Dále v samotném těle pravdla pomocí agregační funkce můžeme v podstatě použít lbovolnou funkc, která splňuje mírné požadavky na agregační operátor. Tím je zajštěna velká flexblta nastavení ohodnocených pravdel Užvatelské preference na datových typech Pokud je jeden z atrbutů komplexního objektu číselného typu, lze na něm zavést tzv. fuzzy funkc. Fuzzy funkce je zobrazení f : R T. Dále budeme uvažovat pro přehlednost T=[0,]. Blžší rozebrání fuzzy funkcí lze nalézt např. ve [VANEKOVA]. Logcké programování an záps logckého programu do RDF nemají prostředky pro zaznamenání užvatelských fuzzy funkcí. Tyto funkce budou muset být defnované ve vyšším programovacím jazyce, jejch defnce ovšem lze zapsat jako predkáty a uložt do RDF. Funkc na schématu bychom pojmenoval např. Schod 4_Vzestupne. Tento řetězec lze jednoduše rozkódovat a nterpretovat ve funkconálním programu. Fuzzy funkce nám vlastně modeluje náležení do predkátu P. Vezměme s predkát DlouhýVýlet. Tento predkát je závslý pouze na atrbutu délka výletu. Ukážeme s dva příklady fuzzy funkce predkátu DlouhýVýlet [den] Schéma

47 Toto může být fuzzy množna průměrného člověka. Do jednoho dne to není dlouhý výlet, pak během druhého a třetího dne se subjektvní poct délky zvětšuje, až od čtyřech dnů dál je každý výlet dlouhý [den] Schéma Schéma je fuzzy funkce dlouhého výletu pro dítě. Hned od začátku se poct délky výletu zvětšuje a jakmle délka přeroste jeden den, je to dlouhý výlet a rozdíl prot pětdennímu už je zanedbatelný Interpretace fuzzy funkce Rozlšíme dva případy nterpretace fuzzy funkce. První případ je hodnotový tedy záleží nám na hodnotě, kterou užvatel danému bodu domény přřazuje. Např. pokud modelujeme fyzkální nebo technologcký proces a fuzzy regulátor má řídt konkrétní nastavení ovládacích prvků. Druhý případ je uspořádávací fuzzy funkc chápeme jako nové uspořádán domény atrbutu. Na konkrétních hodnotách jž nezáleží, využíváme pouze porovnání hodnot fuzzy funkce. Takto se modeluje relevance, kvalta, užvatelské preference, hodnota je "nejlepší" a 0 je "nejhorší". Uvažme fuzzy funkc a prosté uspořádání domény atrbutu [den] Schéma Omezíme se na nterval [2,4]. Na tomto ntervalu se v uspořádávacím přístupu fuzzy funkce od prostého uspořádání nelší obě funkce uspořádávají nterval vzestupně. Naprot tomu v hodnotovém modelu se lší každá funkce přřazuje stejnému číslu jnou hodnotu Převod fuzzy funkcí na prosté uspořádání Pokusíme se převést pravdla využívající fuzzy funkce na pravdla, kde je použto pouze prosté uspořádání. Použjeme změnu agregačního operátoru. Toto převedení jsme v žádné lteratuře nenašl, jde o vlastní náznak možného směru dalšího výzkumu. Budeme převádět fuzzy funkc ve tvaru, který je znázorněn na schématu

48 F A ( b) F A ( a) a b D A Schéma Q U je užvatelská fuzzy funkce a F A je prosté uspořádání domény atrbutu D A, které je nezávslé na užvatel. F A chápeme jako unverzální fuzzy funkc pro atrbut A. U U U P x, Q x, Q y r, kde predkát Q A a Q B jsou fuzzy ( ( ) ) ( r) Pravdlo ve tvaru ( ) A ( ) B ( ), U funkce D [ 0,] a D [ 0,], převedeme na pravdlo P( x, ( F ( x), F ( y) ) A B A B,. Chceme tedy posunout vlv užvatele až do agregační funkce a jako fuzzy funkc použít obecnou funkc, která je na užvatel Q x, Q y pro dvě proměnné. V tabulce je znázorněna stuace ( ( ) ( )) F B ( b) F B ( a) 0 F 0,) ( F B ( y) 0, ( F A ( ), F A ( x) ( F ( x), F ( y) ) ) (, F B ( y) ) 0 ( a) ( b) F A F A F A Hodnoty ( x, y) analogcká. Přímý F ( x), F ( y),...) odpovídají údajům v tabulce. Pro více proměnných je stuace A B se omezí pouze na jeden případ, v ostatních alespoň v jedné proměnné je použta krajní hodnota. Tímto způsobem jsme nahradl užvatelskou funkc Q obecnou funkcí F. Tento způsob lze použít, pokud používáme uspořádávací přístup k fuzzy funkcím. Pokud nás zajímá přímo hodnota fuzzy funkce, nelze tento přístup použít Generování užvatelských preferencí V této kaptole se budeme zabývat zmenšením počtu ohodnocení, která musí užvatel provést. Chceme generovat nová hodnocení daného užvatele na základě jím jž provedených hodnocení. Nová hodnocení budou strojově vypočtena a je vhodné je odlšt od skutečných hodnocení přímo provedených užvatelem. Proto jsme zavedl novou vlastnost <mvlp:computedratng>, která bude označovat vygenerovaná hodnocení. Opět podvlastnost této vlastnost budou vypočtená hodnocení pro konkrétního užvatele. Tato část je naším příspěvkem do této problematky. Myslíme s, že může ulehčt užvatelům prác se zadáváním hodnocení, navíc může sloužt pro odhalování nesrovnalostí v hodnoceních. Přkládáme tomuto tématu velkou důležtost

49 7.2.. Motvační příklad Nejprve s přblížíme problematku na následujícím příkladu. Uvažujme tento fragment OWL ontologe. <trp:trplocaton> <trp:hasctes> <trp:comfortofsleepng> <trp:cty> <xsd:float> <trp:levelofdanger> <xsd:float> Ontologe Toto schéma vyjadřuje vztahy týkající se výletních lokalt. Jsou zde zachycené atrbuty výletní lokalty a vlastnost, které výletní lokaltu s těmto atrbuty spojují. Nyní podle defnce z kaptoly 6. přdáme užvatelské hodnocení. Toto hodnocení se bude týkat ndvduí výše uvedených tříd a vlastností. Implementace fuzzy funkcí zůstane na vyšším programovacím jazyku, my j zde budeme zapsovat pomocí hodnocení ndvduí. To se shoduje s myšlenkou, že preference jsou zobrazení z entty do množny pravdvostních hodnot. Dále budeme uvažovat užvatelskou agregační U, která bude agregovat hodnocení jednotlvých atrbutů výletní lokalty do jedného hodnocení samotné výletní lokalty. Předpokládáme, že agregační funkce bere v úvahu hodnocení jednotlvých atrbutů a navíc hodnocení vlastností, které spojují atrbuty s výletní lokaltou. Míra hodnocení vlastnost říká, jak je daný atrbut pro užvatele důležtý př hodnocení výletní lokalty. Budeme předpokládat, že každý objekt může mít nejvýše jeden atrbut pro každou vlastnost. <trp:trplocaton> <trp:turbosratng> <xsd:float> <trp:cty> <trp:turbosratng> <xsd:float> <xsd:float> <trp:hasctes> <trp:levelofdanger> <trp:turbosratng> <trp:turbosratng> <trp:turbosratng> <xsd:float> <xsd:float> <xsd:float> <trp:comfortofsleepng> <trp:turbosratng> <xsd:float> Schéma hodnocení Tato hodnocení rozdělíme do tří skupn

50 ) hodnocení ndvduí třídy <trp:trplocaton> - tuto skupnu budeme nazývat hodnocení objektů (budeme také používat "komplexní objekt"). 2) hodnocení ndvduí třídy <trp:cty> a fuzzy funkce pro vlastnost <trp:levelofdanger> a <trp:comfortofsleepng> - tuto skupnu budeme nazývat hodnocení atrbutů 3) hodnocení vlastností <trp:hasctes>, <trp:levelofdanger> a <trp:comfortofsleepng> - tuto skupnu budeme nazývat hodnocení vlastností. Tato skupna je úzce svázána s agregační funkcí. Zjšťování vlastní agregační funkce je mmo rámec této práce a bude na ně zaměřena pozornost v dalším studu. Zde se omezíme na zjštění váhy daného atrbutu pro hodnocení komplexního objektu Poznámka Pro přehlednost jž nebudeme ve schématech používat predkát <trp:turbosratng>. Špku odpovídající vlastnost <trp:turbosratng> budeme kreslt tečkovanou tlustou čárou. Přblížíme s tř případy, v každém z nch nám jedna skupna hodnocení bude chybět. Chybějící hodnocení komplexních objektů Uvažujme případ, že Turbo ohodnotl vlastnost a atrbuty. Hodnott výletní lokalty se mu už nechtělo. Náš úkol bude na základě znalostí hodnocení vlastností a atrbutů vypočítat hodnocení objektů, v tomto případě výletních lokalt. Uvažujme nyní výlet na Brdy. <trp:hasctes> <trp:comfortofsleepng> <trp:dobrs> "0." <trp:levelofdanger> "0.7" "0.4" ".0" "0.8" Schéma agregace atrbutů Chceme nyní ze tří atrbutů spočítat hodnocení výletní lokalty. Tento případ dále opustíme, budeme se mu věnovat v kaptole 8. Př znalost agregační funkce a hodnocení atrbutů budeme počítat hodnocení výletní lokalty přímo jako agregac všech tří atrbutů. Zde není žádný prncpální problém, budeme se spíše zabývat rychlostí nalezení k (k>0) nejlepších objektů. Tento model je převzat z [FLN]. Všmněme s použtí fuzzy funkcí pro míru nebezpečí a komfort spaní. Pro míru nebezpečí jsou lepší menší hodnoty, 0. je převedeno na.0. Navíc je možné usoudt, že Turbo má velké požadavky na dobré spaní, protože hodnota 0.7 pro něj znamená hodnocení pouze 0.4. Hodnota 0.7 je objektvní stuace spaní v místě a reprezentuje např. četnost kamenů, míru hrbolatost terénu apod

51 Chybějící hodnocení atrbutů Dále uvažujme případ, kdy nám chybí hodnocení atrbutů. Známe tedy hodnocení jednotlvých lokalt a agregační funkc, ale neznáme hodnocení měst, komfortu ke spaní a nebezpečí dané lokalty. <trp:vyletnabrdy> "0.5" <trp:hasctes> "0." <trp:comfortofsleepng> "0.8" <trp:levelofdanger> "0." <trp:dobrs> "0." "0.7" Schéma V tomto případě budeme chtít použít hodnocení výletní lokalty a znalost o váze atrbutu na výpočet hodnocení jednotlvých atrbutů. Jelkož atrbut <trp:comfortofsleepng> má největší váhu, jeho hodnota by měla nejvíce odpovídat hodnocení lokalty, tedy měla by být blízká 0.5. Zde je potřeba s uvědomt, že např. atrbut "0." vlastnost <trp:levelofdanger> může být spojený s více lokaltam než pouze s Brdy. Bude proto nutné hodnoty všech lokalt, se kterým je daný atrbut spojen, nějakým způsobem agregovat. Navíc může být spojen se zdroj z jných tříd než je <trp:trplocaton>. Tento případ bude rozebrán níže. <trp:vyletnabrdy> "0.5" <trp:levelofdanger> "0." <trp:taborvchysce> <trp:levelofdanger> "0.6" "0." <trp:levelofdanger> <trp:vyletnaorlk> "0.8" Schéma Chybějící hodnocení vlastností Poslední případ je chybějící hodnocení vlastností. Máme k dspozc hodnocení komplexního objektu, např. lokalty, a jeho atrbutů. Z těchto údajů chceme zjstt, jak je který atrbut důležtý pro celkové hodnocení lokalty

52 <trp:vyletnabrdy> "0.5" <trp:hasctes> <trp:comfortofsleepng> <trp:levelofdanger> <trp:dobrs> "0." "0.7" "0.8" ".0" "0.4" Schéma V tomto případě porovnáváme hodnocení atrbutu a hodnocení lokalty. Hodnocení komfortu spaní zde odpovídá nejvíce hodnocení lokalty Brdy, tudíž vlastnost <trp:comfortofsleepng> zřejmě dostane nejvyšší váhu ze všech zmíněných vlastností. Stejně jako v předchozím případě je potřeba vzít do úvahy všechny možné lokalty a jejch komforty spaní. <trp:vyletnabrdy> <trp:comfortofsleepng> "0.5" "0.4" "0.7" <trp:vyletnasumavu> <trp:comfortofsleepng> "0.7" <trp:comfortofsleepng> <trp:taborvhostce> "0.6" Schéma Výsledné hodnocení vlastnost <trp:comfortofsleepng> bude vygenerováno na základě dílčích výsledků všech předmětů vlastnost <trp:comfortofsleepng> Značení pro obecný případ Pro běh algortmu výběru nejlepších k objektů potřebujeme atrbuty seřazené sestupně podle užvatelského hodnocení r a užvatelskou agregační Budeme používat stejné značení jako v kaptole 8. Objekt, jehož hodnocení chceme najít, značíme o, jeho atrbuty pak a. Rozšíříme chápání této defnce o OWL. Objekt o bude nyní ndvduum třídy O, atrbut a bude ndvduum třídy A. Pro přehlednost a stručnost budeme psát třídy a ndvdua v abstraktní notac místo standardní notace <trp:o> apod. Třídy A jsou spojené s třídou O vlastnostm, které budeme značt V O. V. Výraz ( o a ) O V, bude reprezentovat trojc <foo:o> <foo: V O> <foo: a >, tedy že objekt o je spojen s atrbutem O a vlastností - 5 -

53 Ostatní třídy budeme značt velkým písmeny P, Q, R,... o n V O 2 V O V O a 2 a n a r( o) r ( a ) 2 r ( a )... n r ( a ) T T T T 2 n (, a,...,a a Schéma Na schématu je znázorněna stuace pro objekt o. Nyní s nadefnujeme tř úkoly, které jsme nastínl v příkladu výše Způsob výpočtu hodnocení vlastností Ohodnocení vlastnost V O vyjadřuje, jak je důležtý parametr A v celkovém hodnocení ndvduí ze třídy O. Předpokládáme, že jž máme ohodnocená nějaká ndvdua ze tříd A ze třídy O. Zafxujme s ndvduum A I a = o : V o, a. Je to množna objektů, jejchž -tý atrbut je Počet objektů 00 V O a. Dále uvažujme množnu ( ) { ( )} a. O 0 0 r( a ) Hodnocení objektu Schéma pro jeden atrbut Schéma vyjadřuje rozložení hodnocení r na množně I ( a ). Svslá čára označuje hodnocení r ( a ). Hodnoty jsou rozložené rovnoměrně po celém ntervalu, což ukazuje na fakt, že hodnota atrbutu a významně neovlvňuje hodnocení objektů I( a ) U ostatních ndvduí třídy A může stuace vypadat odlšně. a o

54 Počet objektů r( a ) Hodnocení objektu Schéma pro konkrétní atrbut a V případě naopak jsou hodnoty z větší část u hodnoty 0. To znamená, že většna objektů s atrbutem a má nízké hodnocení. Navíc má atrbut a také nízké hodnocení, je zde tedy vztah mez hodnocením atrbutu a a celkovým hodnocením objektů o I a. ( ) Počet objektů 00 r ( o), o A A Schéma pro celou třídu A Schéma vyjadřuje rozložení hodnocení r na celé množně Pro každý prvek A a vypočteme míru shody mez hodnocením atrbutu r ( a ) a hodnocením objektů o I( a ). Tuto shodu budeme označovat jako korelac a značt ( a ) Navrhujeme tuto korelac počítat podle vzorce r( o) r( a ) o I ( a ) cor( a ) =, I a ( ) A. kde korelace cor ( a ) je průměrná odchylka hodnocení objektů I( a ) o od cor. hodnocení atrbutu a. Tento vzorec lze dále pozměnt např. použtím jné metrky než absolutní hodnoty. Případně lze využít robustnější funkc než je průměr pro elmnování extrémních hodnot. Konkrétní defnovaní korelace je mmo rámec této práce. r bude závslá na korelacích všech ndvduí Celková důležtost spojující vlastnost ( V O ) a. Výsledné hodnocení ( ) r tedy budeme počítat průměrem V O

55 r ( V ) O cor ( a ) a A =. Tato metoda je mplementována ve třídě InducedRatngs metodou getinducedratngonpredcate. A Příklad Pro přblížení s ukážeme jednoduchý příklad. <trp:turbosratng> <trp:vyletnabrdy> "0.5"^^xsd:decmal <trp:hasctes> <trp:hasctes> <trp:dobrs> <trp:turbosratng> "0.8"^^xsd:decmal <trp:vyletnakocabu> <trp:turbosratng> "0.7"^^xsd:decmal Schéma Schéma znázorňuje stuac na příkladu vlastnost <trp:hasctes>. Tato vlastnost určuje, jaký dopravní prostředek byl použt na daném výletě. Máme dva objekty, <trp:vyletnabrdy> a <trp:vyletnakocabu>, které jsou spojené s atrbutem <trp:dobrs>. Korelace mez hodnocením objektů a atrbutem spočítáme pomocí vzorce r( o) r( a ) o A cor( a ) =. A V našem případě tedy r cor( < trp : Dobrs > ) = ( < trp : VyletNaBrdy > ) r( < trp : Dobrs > ) + r( < trp : VyletNaKocabu > ) r( < trp : Dobrs > ) = = = = Pokud bychom tedy měl pouze tyto údaje, vypočítáme hodnocení vlastnost <trp:hasctes> takto cor ( ) ( < trp : Dobrs > ) r < trp : hasctes > = = 0.2 = 0.8 Zde je také vdět, že čím nžší je korelace atrbutů, tím vyšší bude potom hodnocení vlastnost. Nakonec poznamenáme, že uvedené hodnocení je platné pouze pro užvatele Turbo, pro ostatní se bude lšt Způsob výpočtu hodnocení ndvduí Nyní se budeme zabývat případem 2) Chybějící hodnocení ndvduí. Chceme získat ohodnocení ndvduí a

56 Vezmeme do úvahy zbytek ontologe, tedy třídy P, Q, R,... Některé z těchto tříd mohou být spojeny s třídam atrbutů A vlastnostm V P, Schéma vyjadřuje vztahy mez třídam. <trp:transportused> <trp:trp> <trp:hasstartngcty> V Q. <trp:transport> <trp:hastransport> <trp:trplocaton> <trp:hasctes> <trp:cty> Schéma Pokud užvatel ohodnotí ndvduum <trp:brdy05050> ze třídy <trp:trp>, budeme chtít hodnocení r ( < trp : Brdy05050 > ) použít a vypočítat z něj hodnocení atrbutů <trp:dobrs> a <trp:csad>. Myšlenka je taková, že mohou exstovat jné třídy, které jsou vhodnější pro hodnocení než třída O. Pokud třída O vyhovuje krtérím na objektvní hodnocení, můžeme následující postup použít pro tuto třídu. Př počítání ohodnocení ndvdua a se budeme snažt použít všechny ohodnocené objekty x z lbovolné třídy X, které jsou spojené s atrbutem a. Ohodnocení vlastnost V X bude určovat, s jakou vahou budeme hodnocení objektu x brát. Nechť pro ndvduum a třídy takových, že platí j =,.., l : V ( x, a ) j ( r( x ) r( )) f,..., r x A l. Funkce ( VO ), r( V P ),.. A X j A exstuje l ndvduí x X x,..., l ze tříd X,..., l. Potom vypočítané hodnocení ndvdua a bude f je monotónní v každé proměnné. Navíc by měla brát v potaz váhy. Čím větší přřazuje užvatel váhu vlastnost V X, tím větší má váhu hodnocení ndvduí ze třídy X. V této funkc navrhujeme mplementovat statstcké metody pro odstranění nekonzstence v užvatelských hodnocení. Výše uvedeným způsobem můžeme vypočítat hodnocení lbovolného atrbutu a. Podmínka je, že máme jž užvatelská hodnocení ndvduí jných tříd. Tento mechansmus je možné použít v případě, že exstují třídy vhodné k přímému hodnocení, tedy objekty, se kterým má užvatel přímou zkušenost. Navíc lze postup použít pro atrbuty atrbutů. Tato metoda je mplementovaná ve třídě InducedRatngs metodou getiducedratngonentty. Jako funkce f ( r( x ) r( x )) A,..., l je zde použt vážený průměr. Jeho výpočet odpovídá vzorc f ( r( x ),..., r( x )) = r( x ) r( V ) r( V ) A l j=,..., l Příklad Ukážeme s příklad z ontologe výletních míst. j X j j=,..., l X j

57 <trp:brdy05050> <trp:ondrasratng> "0.5"^^xsd:decmal <trp:hasstartngcty> <trp:hasstartngcty> <trp:dobříš> <trp:ondrasratng> <trp:ondrasratng> "0.3"^^xsd:decmal "0.3"^^xsd:decmal <trp:brdy04090> <trp:ondrasratng> "0.6"^^xsd:decmal Schéma V tomto případě známe hodnocení vlastnost <trp:hasstartngcty> a výletů na Brdy <trp:brdy04090> a <trp:brdy05050>. Chceme vypočítat hodnocení zdroje <trp:dobříš>. Můžeme zde použít např. vážený průměr. r( < trp : Dobříš > ) = r( < trp : Brdy04090 > ) r( < trp : hasstartngcty > ) + r( < trp : Brdy05050> ) r( < trp : hasstartngcty > ) r( < trp : hasstartngcty > ) + r( < trp : hasstartngcty > ) 0.6 * * = = = Tím jsme vypočítal hodnocení pro <trp:dobříš> a toto hodnocení můžeme použít pro hledání výletních míst. = <trp:cty> <trp:hasstartngcty> <trp:hasctes> <trp:trp> <trp:trplocaton> Schéma Ve schématu vdíme tř třídy výletní místa, města a výlety. Chceme počítat hodnocení výletních míst, k tomu potřebujeme hodnocení měst, která se v místě nacházejí. Toto hodnocení můžeme nechat užvatele zadat ručně. Je tu ovšem rzko, že užvatel bude město hodnott z jných hledsek než z pohledu problematky výletů. Některá města mohou být krásná, ale cesta k nm trvá neúnosně dlouho, což jejch hodnotu snžuje. To s ale užvatel nemusí v dané chvíl uvědomt. Nechme užvatele ohodnott výlety, kterých se zúčastnl. Poté, co se vrátí domů z výletu, je plný zážtků a dojmů. Tím jeho hodnocení výletu bude žvé a přesné, bude vysthovat přesně to, co od něj požadujeme - jak se mu výlet líbl. Bude zde zahrnuta např. únava z dlouhé cesty vlakem. Z ohodnocení výletů potom výše uvedeným způsobem vypočteme hodnocení měst. Zde je vhodné, aby byl ohodnocen vztah mez výletem a městem

58 měst. Nakonec př hledání místa pro další výlet jž můžeme použít vypočítané hodnocení Z výše uvedeného příkladu je zřejmé, že některé třídy jsou vhodnější pro hodnocení než jné. Můžeme tvrdt, že hodnocení komplexnějších objektů je užtečnější než hodnocení prmtvních jevů. Ohodnocení komplexnějšího objektu může vyjadřovat přímou oblbu objektu, zatímco hodnocení abstraktního atrbutu může být pro užvatele obtížně představtelné Změny užvatelských preferencí v čase V příkladu o fuzzy funkcích jsme zmínl dvě funkce pro průměrného dospělého a pro dítě. Zřejmě tyto dvě funkce byly dametrálně odlšné, stejně jako by byly např. pro predkát VysokýPlat. Užvatelské preference se tedy mohou měnt, a to jak v dlouhodobém, tak v krátkodobém horzontu. Změna preference se může týkat dvou základních věcí. Buď se mění preference jednoho objektu nebo způsob agregace atrbutů do hodnocení komplexního objektu. S přbývajícím věkem např. můžeme více preferovat dopravu vlakem a méně dopravu na kole. Ovšem dobrý výlet pro nás stále znamená, že tam bylo hezké počasí a trasa procházela zajímavým územím, byť na to, aby počasí bylo pro užvatele hezké, bude potřeba více než zamlada. Změna se bude častěj týkat preferencí ndvduí. Změny jsou způsobeny přrozeným vývojem jednce, ale také vnějším okolnostm. Uvažme vlv ročního období - výlet do Vysokých Tater v létě je jstě příjemnější než v změ. Navíc v změ je přístup do Vysokých Tater zakázán. Jný příklad je výlet do zahrančí. Jakkolv hodně se nám výlet do Bulharských hor líbl, v podstatě není možné ho podnknout během školního roku. Toto je také příklad relatvty preferencí - sce se nám pohoří Rla v Bulharsku líbí opravdu nejvíce, zároveň víme, že tam nemůžeme. V celkovém pohledu tedy bude mít hodnocení velm blízké nule. Druhý způsob změn preferencí je v agregac atrbutů. Tento druh změny bude méně častý, protože vyžaduje poměrně velkou změnu v přístupu jednce. Většnou se bude jednat o menší změny např. ve vahách jednotlvých atrbutů. Ovšem např. výhra v loter může naprosto obrátt směr fuzzy funkcí. Typcký případ je změna preferencí př nástupu do zaměstnání, kdy užvatel zjstí, že nemusí tak úpěnlvě hledat nejlevnější varanty. Z výše uvedených důvodů vyplývá, že zaznamenávání užvatelských preferencí je dynamcký proces. V našem případě, kdy evdujeme preference výletů, tato problematka není tak důležtá. Projekt [FILMTRUST] evduje užvatelské hodnocení flmů. Pokud srovnáme flmy ze současnost a např. z roku 995, zjstíme, že staré flmy jsou dametrálně horší např. v kvaltě specálních efektů. V této problematce bude nutno uvažovat stáří hodnocení. Čím je hodnocení starší, tím méně je důvěryhodné Více užvatelských hodnocení Úvod do více užvatelských hodnocení Vícehodnotová logka počítá pouze s jedním ohodnocením faktů a pravdel. Pro naše potřeby je nezbytné uchovávat těchto hodnocení více, ať už hodnocení každého užvatele nebo vytvořených proflů užvatelů. Více užvatelských hodnocení můžeme do predkátové vícehodnotové logky zavést k rozšířením defnce realzace R a realzací predkátů P R, kdy každý užvatel bude mít jnou

59 realzac predkátů. Jednodušší je pro každého užvatele zavést novou realzac, ovšem všechny realzace by se měly shodovat na množně ndvduí U. Stejným přístupem můžeme modfkovat logcký program. Ohodnocený fakt bude nést nformac o užvatel, pro nějž platí, stejně j ponesou pravdla. V zadání dotazu bude dentfkace užvatele u, čímž se omezí množna faktů a pravdel pouze na ta, jež jsou platná pro užvatele u. V predkátové logce se rozlšení užvatelů děje pouze na realzac predkátů, u logckého programu se lší v hodnocení faktů a pravdel, samotné fakty a pravdla zůstávají nezměněny. Z toho, že každý užvatel má různé hodnocení pravdel a faktů, plyne, že pro různého užvatele na stejný dotaz můžeme dostat různé odpověd. Zde musíme zdůraznt, že užvatel může pravdlo nebo fakt ohodnott také hodnotou nula, čímž naznačí, že pro něj nemá žádnou relevanc Agregace hodnocení více užvatelů Zanesení možnost zaznamenat více užvatelských hodnocení do jednoho logckého programu nám poté umožňuje s těmto hodnocením dále pracovat. Mez nejdůležtější možnost patří podpora skupnového rozhodování. To je motvace, s kterou jsme vytvářel ontolog výletních lokalt. Máme skupnu turstů, každého s jným preferencem a chceme vybrat místo, které je optmální skupnový komproms. Př skupnovém výběru výletní lokalty budeme brát v úvahu atrbuty lokalty, např. terén, města, která se v lokaltě nacházejí, četnost vodních zdrojů, nebezpečnost apod. Každý atrbut, např. město Praha, je hodnocen různě dvěma různým užvatel. Atrbutu jako celku je přřazována různá důležtost někomu záleží spíše na terénu a jný zase chce dostatek vody. Jným slovy, užvatelé se lší jak v ohodnocení dat, tak v agregačních funkcích, kterým užvatelé agregují jednotlvé atrbuty do hodnocení celku. Uvažujme pro jednoduchost pouze dva atrbuty výletních míst - míru nebezpečnost a města. Na následujících dvou schématech jsou dva různé postupy, jak agregovat preference více užvatelů. G (@ O A O (Cty,Terran) <trp:trplocaton> A (Cty,Terran) <trp:ondrasratng> <trp:ondrasratng> <trp:alasratng> <trp:alasratng> <trp:cty> <trp:levelofdanger> <trp:cty> <trp: levelofdanger> Schéma Na schématu je znázorněna typcká stuace, kterou známe např. ve volbách. Užvatelé s vyberou ty volební strany, které jm vyhovují, a přřadí jm své preference. Užvatelské preference na těchto objektech se poté agregují globální agregační G, např. průměrem. V tomto konkrétním případě se tedy Ondra a Ála nejprve sam rozhodnou, jak se jm která lokalta líbí. Poté se tato hodnocení zprůměrují do globálního hodnocení a vyberou se

60 výletní lokalty s nejlepším globálním hodnocením. Z obrázku je také patrné, že oba dva užvatelé používají jnou agregační funkc (@ O A (Ondra, Ala) G (@ (Ondra, 2 ( Ondra, Ala)) 2 ( Ondra, Ala) <trp:cty> <trp:ondrasratng> <trp:alasratng> <trp:alasratng> <trp:ondrasratng> <trp: levelofdanger> <trp: levelofdanger> <trp:cty> <trp:cty> Schéma Na schématu je znázorněn druhý způsob agregace více užvatelských preferencí. Vybíráme rovnou z užvatelsky ohodnocených atrbutů. Hodnocení atrbutů agregujeme globálním agregačním 2. Takto dostaneme atrbuty ohodnocené globálním hodnocením. Z nch pak jnou globální G vypočteme objekty, které jsou vhodné pro všechny užvatele. V poltckém případě bychom tedy nehodnotl přímo jednotlvé poltcké strany, ale např. jednotlvé obory programů - rovná a progresvní daň v ekonomce, jaderné, hnědouhelné nebo větrné elektrárny v energetce apod. Z těchto ohodnocených problematk bychom pak agregoval hodnocení nejlepšího řešení toho kterého oboru. Vyšlo by tedy, že nejlepší řešení ekonomky je např. progresvní daň a energetky jaderné elektrárny. Strany, které by tato řešení podporovala, by měla větší hodnocení než strany, které prosazují rovnou daň. Globální 2 mohou být klascký průměr nebo je zde možno využít funkce pro sofstkovanější kombnac hodnocení. G by pak měla brát v úvahu také užvatelské agregační O A. Pokud jsou obě funkce vážený průměr, globální váha atrbutu bude průměr obou vah. V tomto případě tedy nejdříve necháme užvatele Ondřeje a Alenu ohodnott jednotlvá města a terény. Poté každému městu a terénu přřadíme jedno globální hodnocení. Na základě těchto hodnocení nakonec vybereme nejlepší výletní lokalty. Tento výběr bude závset na důležtost, jakou městům a terénu oba užvatelé přřazují Návaznost na Arrowovu teor V této kaptole přblížíme návaznost na teor Kennetha Arrowa, která je přblížena např. v [WIKIPEDIA]. Kenneth Arrow je amercký ekonom, mez jehož nejznámější práce patří teore o nemožnost nalezení výsledku hlasování, které by vyhovovalo pět dále defnovaným požadavkům, tzv. Arrowův paradox. Tento paradox nyní přeformulujeme do vícehodnotové logky a nabídneme rozšíření. Arrowův paradox pracuje s preferenčním seznamy. Mějme množnu N kanddátů K k,..., L = k,..., k. To, k N (alternatv) { } =. Uspořádaný seznam kanddátů budeme značt { } že alternatva k je v seznamu před alternatvou k j budeme také značt k k. j N

61 Každý z volčů v,...,vm uspořádá seznam kanddátů K podle jeho preferencí. Tím vznkne M uspořádaných seznamů L,...,LM. Agregační funkce s : L M L potom z těchto seznamů vytvoří uspořádaný seznam L G, jež vyjadřuje globální preference všech volčů. L L 2 L M L G k 2 k k 3 k k 2 k 3 k k k 3 k 3 k 2 k Schéma Požadavky na agregační funkc s jsou ) Všeobecnost - Funkce s musí být determnstcká, její obor hodnot je celý prostor uspořádaných seznamů pro daný počet volčů a kanddátů. 2) Suverenta volčů - Funkce s musí být na, tedy pro každý seznam L musí exstovat vstup funkce tak, že výstup je seznam L. 3) Absence dktátora - Nesmí exstovat užvatel, jehož vstupní seznam se vždy shoduje s výstupem funkce s. 4) Monotone - Pokud volč změní svůj seznam tak, že zvýší hodnocení objektu o, v globálním seznamu L G se pozce objektu o buď nezmění nebo zvýší. 5) Nezávslost na relevantních alternatvách Pokud redukujeme množnu ' kanddátů na N, přčemž zachováme vzájemné pořadí zbylých kanddátů ve vstupních ' seznamech, vzájemné pořadí zbylých objektů v novém redukovaném globálním seznamu L G se také nezmění. Věta Neexstuje funkce, která splňuje všech pět výše uvedených požadavků. Kenneth Arrow v roce 95 tuto větu naformuloval a dokázal. Důkaz věty Ukážeme s ve stručnost myšlenku důkazu, plné znění lze nalézt v [GEANAKOPLOS]. Dokážeme, že pokud s splňuje podmínky ),2),4),5), potom exstuje dktátor. Vyberme jednoho alternatvu b. Lemma Pokud je b ve všech seznamech buď první nebo poslední, potom v L G bude b buď první nebo poslední. Důkaz lemmatu

62 Nechť platí opak, tedy exstují a,c tak, že a b, b c v L G. Z podmínky 5) toto bude platt, když se v seznamech L,...,LM posune alternatva c nad a. Protože b je buď první nebo poslední, nezmění tento přesun njak lokální pořadí a a b an b a c. Nyní tedy platí, že a b, b c a zároveň c > a. Z transtvty tedy plyne, že a c. Zároveň ale platí, že c > a, což je spor. Nyní předpokládejme, že všchn volč umístl b na konec svých seznamů. V L G je tedy b také na konc. Dále nechme postupně volče přesouvat alternatvu b z konce na začátek seznamů. Uvažujme okamžk, kdy se b přesune v L G z posledního na první místo. Stav před přesunem označme I a stav po přesunu II. Volče, který přesunul b z konce jeho seznamu na začátek mez stavy I a II, označme n(b). Volče n(b) označíme n*. Nyní dokážeme že a c : a b, c b ( a > c a c) n * > G,. Tedy pro a a c různá od b se pořadí a a c v globálním seznamu shoduje s pořadím a a c v seznamu užvatele n*. Uvažme stav III, který zkonstruujeme ze stavu II tak, že užvatel n* přesune prvek a nad prvek b. Porovnání a a b bude u všech užvatelů stejné jako ve stavu I, takže platí, že a > G b. To plyne z toho, že ve stavu I byl b na konc seznamu L G. Porovnání b a c bude jako ve stavu II, protože mez těmto dvěma alternatvam se od stavu II nc nezměnlo. b byl ve stavu II na prvním místě seznamu, tedy b > G c. Z transtvty plyne, že a > G c, což odpovídá hodnocení užvatele n*, který přesunul a na první místo svého seznamu. Nakonec dokážeme, že pro dvojce a a b se pořadí v seznamu shoduje s pořadím a a b v seznamu užvatele n*. Uvažujme nyní volče n(c), který vznkne stejnou konstrukcí, ovšem s prvkem c. n(c) může ovlvnt pořadí všech dvojc xy, kde x an y nejsou c. Tedy konkrétně dvojc ab. Ovšem volč n* ovlvnl pořadí dvojce ab mez stavy II a III0. Ve stavu II platlo, že b>a a ve stavu III naopak a>b. Tedy n(c)=n* a tedy n* je dktátor Rozšíření Arrowovy teore do vícehodnotové logky Uvažme nyní tuto teor v kontextu vícehodnotové logky. V kaptole 7..3 jsme s rozděll nterpretac fuzzy funkce na dva přístupy - hodnotový a uspořádávací přístup. Arrowovy uspořádané seznamy mohou být chápány jako uspořádávající fuzzy funkce. Seznam L nám dává lneární uspořádání množny K. Arrow v [SOCIALCHOICE] zmňuje možnost navrženou Neumannem a Mongerstrenem pro zavedení hodnocení alternatv. Uvažuje ovšem případ, kdy nejlepší kanddát má vždy hodnocení a nejhorší má hodnocení 0. Hodnocení kanddáta je potom součet všech hodnocení. Tento přístup se ovšem neslučuje s podmínkou 5). Pro seznamy L = { x :, y : 0.9, z : 0}, L 2 = { x :, y : 0.9, z : 0} a L 3 = { y :, x : 0.5, z : 0} je nejlepší volba kanddát y s hodnocením 2.8 před kanddátem x s hodnocením 2.5. Pokud ovšem vyhodíme prvek z, dostaneme seznamy L = { x :, : 0}, L = { x :, : 0} a L = { y :, : 0}. Nyní vítězí y 3 y 3 x Pro seznamy bez hodnocení by vyhrál prvek x. Hodnocení prostředního prvku je tedy důležté pro celkové hodnocení. Tento případ také demonstruje rozdíl mez hodnotovým a uspořádávacím přístupem fuzzy funkcí

63 prvek x s hodnocením 2. V našem přístupu podmínka, že nejlepší kanddát má hodnocení a nejhorší má hodnocení 0, není. V případě, že budeme uvažovat hodnotový přístup, nejsou defnce dostatečné. Rozšíříme proto defnc seznamu následovně - uspořádaný seznam L bude L = {( k : r ),..., ( k : rn )} a bude platt, že < N : r N r +. Máme tedy uspořádaný seznam, ve kterém je navíc uvedeno hodnocení kanddáta. Nyní se pokusíme přeformulovat požadavky do vícehodnotové logky. Přeformulujeme požadavky na agregační funkc, aby odpovídaly vícehodnotové logce. ) Všeobecnost Tento požadavek zůstává nezměněn. 2) Suverenta volčů Tento požadavek zůstává nezměněn. 4) Monotone - Pokud volč změní svůj seznam tak, že zvýší hodnocení objektu o, v globálním seznamu se hodnocení objektu o buď nezmění nebo zvýší. 5) Nezávslost na relevantních alternatvách Pokud redukujeme množnu kanddátů na N, přčemž zachováme hodnocení zbylých kanddátů ve vstupních seznamech, vzájemné pořadí zbylých objektů v novém redukovaném globálním seznamu L se také ' nezmění. Hodnocení jednotlvých kanddátů v seznamu LG se změnt může. Vynechal jsme bod 3) Absence dktátora. Tento bod je problematcký z toho důvodu, že lze těžko určt shodnost dvou seznamů. Zde bude třeba zavést pojem "fuzzy" dktátora, který bude vyjadřovat míru dktátorství každého volče. Tato defnce bude předmětem dalšího výzkumu, vybočuje jž mmo rámec této práce. Nemůžeme tvrdt, zda tyto nové požadavky jsou také nekompatblní, tedy zda neexstuje funkce agregující hodnocení užvatelů př zachování těchto požadavků. Ncméně zavedením hodnocení se jž dá preczně kvantfkovat, nakolk je globální hodnocení kanddátů odlšné od hodnocení volče u. Arrowovu teor lze rozšířt o koncepc atrbutů kanddátů. Původní pojem kanddát vlastně odpovídá výrokové proměnné. Nyní rozšíříme kanddáty o jejch atrbuty, převedeme tedy teor do predkátové logky. Ve skutečných volbách volíme strany podle jejch volebních programů a dalších parametrů, jako je např. personální obsazení. V "duchu" provedeme agregac všech těchto atrbutů stran a výsledkem této agregace je vlastní hodnocení té které poltcké strany. Stranu s naším nejlepším hodnocením poté volíme. Tento přístup je více rozebrán v kaptole 7.4. Nevýhoda tohoto přístupu je ztráta procesu rozhodování. Pokud se m na některé straně líbí, že prosazuje rovnou daň, ale nesouhlasím s její zemědělskou poltkou, nkdo se jž nedoví, proč jsem stranu voll. Ve volbách, které by využívaly druhý přístup navržený v kaptole 7.4, bychom nevoll poltcké strany, nýbrž bychom vyplňoval dotazník týkající se jednotlvých problematk vládnutí - zemědělství, daní, školství, energetky,... V každé problematce by bylo několk alternatv, které bychom ohodnotl. Nakonec by také volč vyplnl, na které problematce jm nejvíce záleží a na kterých méně. Ze všech hodnocení alternatvy a by se vypočítalo globální hodnocení a. Hodnocení strany by byla agregace hodnocení řešení, které strana prosazuje ve sledovaných ' G Tento způsob voleb by navíc výrazně zlevnl provoz voleb pro jednotlvé strany, protože volební kampaně by ztratly smysl. Na druhou stranu by byl výrazně časově náročnější pro volče, kteří by navíc nad problematkam musel alespoň zčást netrválně přemýšlet. Proto by byl nutný perfektní nformační servs pro všechny socální vrstvy obyvatelstva

64 problematkách. Stuac přblžuje následující pozměněné schéma z kaptoly 7.4, kde se sledují daňová a energetcká problematka. Hodnocení G (@ (u,..., u M 2 (u,..., u M (u,..., u M ) <strany:dane> 2 (u,..., u M ) <dane:rovnadan> <dane:rovnadan> <energe:jaderna> <energe:jaderna> Schéma Agregační 2 by typcky byly průměr, závěrečná G by brala v úvahu váhy jednotlvých problematk, které volč vyplnly. Oba dva výše uvedené přístupy splňují požadavky ), 2), 4) 5). Body ) a 2) jsou zjevné. Bod 4) plyne z monotone agregačního operátoru. Bod 5) je splněn, protože výstup agregační G pro objekt o není závslý na hodnocení ostatních objektů Závěr kaptoly V této kaptole jsme s přblížl užvatelské preference. V 7.2 jsme defnoval tř modely pro výpočet preferencí, které užvatel nezadal (Chybějící hodnocení komplexních objektů, Chybějící hodnocení atrbutů a Chybějící hodnocení vlastností). V další kaptole se budeme podrobně zabývat rychlostí nalezení nejlepších k objektů vzhledem k užvatelské agregační funkc, tedy modelem Chybějící hodnocení komplexních objektů. Zbylé dva modely výpočtu užvatelského hodnocení jž přnesly komplkace v podobě nekonzstentnost užvatelského hodnocení. Tyto modely se snaží tuto nekonzstenc zachytt a zohlednt. Tyto metody je možné použít, pokud užvatel hodnocení zadal. Vypočtené hodnocení může reflektovat další vztahy a může tedy být přesnější. Zde je důležté s uvědomt, že některé objekty lze jen těžko hodnott přímo, protože jsou abstraktní povahy a obtížně s užvatel představuje všechny praktcké důsledky. Ukázal jsme, že je Arrowův paradox je vlastně vícehodnotový, kde se fuzzy funkce uvažují v uspořádávacím přístupu. Rozšířl jsme požadavky na socální agregační funkc s pro hodnotový přístup. Dále jsme rozšířl smysl kanddátů o jejch atrbuty, čímž jsme převedl teor z výrokové do predkátové logky. Nakonec jsme vytvořl paralelu mez Arrowovým paradoxem a nám navrženým skupnovým rozhodováním navrženém v kaptole

65 8.. Úvod do problému 8. Problém top k V této část s přblížíme problém nalezení k nejlepších objektů vzhledem k užvatelské ohodnocující U. Tento problém budeme označovat jako problém top-k, algortmus řešící problém top-k potom jako algortmus top-k. Model problému a struktura dat je převzata z [FLN]. Značení jsme ponechal stejné, jako je v kaptole 7. Je uvažován nejjednodušší model s lneárně uspořádaným doménam atrbutů. V této část jž nevstupují do hry užvatelova nekonzstence nebo nepřesnost v hodnocení, snažíme se nalézt k nejlepších objektů co nejrychlej. Celý algortmus se bude týkat užvatele U. Algortmus pracuje s objekty, které mají M atrbutů. Typcky budeme označovat M objekt písmenem o a jeho atrbuty písmeny a,..., a.v případě, že budeme potřebovat označt více objektů, budeme je označovat o, o 2,..., -tý atrbut objektu o j potom Předpokládáme, že známe užvatelovu agregační U pro atrbuty zkrácení a zpřehlednění notace budeme psát hodnocení objektu o s atrbuty U M místo ( a,..., a ). V podstatě tedy hledáme užvatelovo hodnocení objektu r U ( o) U hodnocení atrbutů objektu r ( a ) a jeho agregační U. M a,..., a a j.. Pro U a ( o), na základě jeho Doména atrbutů bude množna T užvatelských hodnocení z kaptoly. V případě, že atrbuty a nejsou prvky množny T, ale jné množny D, budeme využívat funkc r U : D T. Tato funkce převádí prvky množny D na prvky množny T. Součástí této A funkce bude užvatelská fuzzy množna daného atrbutu. Těchto převádějících funkcí budeme potřebovat M. Pokud množna T odpovídá tradčně ntervalu [0,], ale doména prvního atrbutu je množna {Nejlepší, Lepší, Neutrální, Horší, Nejhorší}, musíme použít převádějících funkc. Tu mplementujeme např. následující tabulkou D T! A A Nejlepší Lepší 0.7 Neutrální 0.5 Horší 0.3 Nejhorší 0 A 8... Tabulka V dalším textu budeme jž předpokládat, že a T. Top-k algortmus pracuje se setříděným seznamy. Prvky seznamu L jsou atrbuty U L = o, a, o, a, kde platí a a.... Například seznam [ spolu s objekty o, tedy ( ) ( ),..] 2 Blesk terénů bude vypadat takto: L = [( Brdy,0.9 ), ( Krkonose,0.8),..] terén a. Vlastní terén je jž převeden do množny T. Seznamy jsou setříděné podle atrbutů sestupně, nejvhodnější atrbut je tedy na vrcholu seznamu. Pro čtení ze seznamů budeme používat sekvenční přístup. V průběhu běhu bude algortmus postupovat ve všech seznamech směrem dolů. Hodnotu posledního vděného atrbutu v seznamu budeme značt a. a tedy označuje místo, kam jsme v daném seznamu

66 došl., všechny předchozí hodnoty byly větší nebo rovno a a všechny následující hodnoty budou menší nebo rovno a. Prvky typcky nebudou uspořádané ve všech seznamech stejně, některý bude nejlepší v jednom atrbutu, ale horší ve všech ostatních, další může mít všechny atrbuty průměrné. Brdy 2 3 M Ralsko Schéma U Náš cíl je najít objekt o s největším užvatelským hodnocením ( bez nutnost procházet všechny seznamy až na konec. Jelkož všechny seznamy jsou setříděné sestupně a agregační U je monotónní ve všech proměnných, tento objekt se bude nalézat v horních částech všech seznamů. Se sestupem ve všech seznamech nalézáme objekty s menším a menším hodnocením. Z defnce agregačního operátoru platí, že pro objekty o a o 2, jejchž M M U U atrbuty splňují podmínku a a2,..., a a2, platí ( o ( o2 ) Defnce Vrtuální prvek t, jehož atrbuty budou 2 3 M a,...,a, nazveme práh. M a 2 a 3 a... M a U Hodnocení ( t) Schéma - prahová je největší hodnocení, jaké mohou nabývat objekty, které jsme zatím nenašl v žádném seznamu. Navíc pokud u některého objektu chybí -tý atrbut, jeho hodnota bude nejvýše hodnota a

67 8..5. Návaznost na teoretckou část Problém top-k lze vyjádřt také v jazyku vícehodnotové logky a užvatelských preferencí. Seznamy jsou setříděné podle užvatelského hodnocení atrbutu, tedy podle U ohodnocení faktu r. Agregační U použtá pro výpočet hodnocení objektu o je agregační operátor Přehled algortmů V této část s přblížíme pět algortmů navržených ve [FLN], kde je také dokázána optmálnost těchto algortmů. Algortmy rozdělíme na tř kroky: ) Zpracování aktuálních objektů 2) Postup ve všech seznamech 3) Kontrola konce algortmu Budeme se zabývat jen kroky ) a 3). Krok 2) je pro všechny algortmy stejný, v každém seznamu se posuneme o jednu pozc dolů. Množnu k nejlepších objektů budeme označovat jako TOPK. Spolu s objekty budeme uchovávat jejch atrbuty, v případě, že chybí atrbut na -té pozc, bude na jeho místě hodnota null Navní algortmus Toto je nejjednodušší ze všech čtyřech algortmů. Musí s uchovávat nformace o všech nalezených objektech, paměťové nároky jsou tedy úměrné počtu objektů. Zpracování aktuálních objektů Pokud prvek v seznamu jž máme v TOPK, přdáme k němu -tý atrbut, jnak objekt s atrbutem přdáme do TOPK. Kontrola konce algortmu Pokud jsme jž ve všech seznamech na konc, algortmus končí. Na závěr ohodnotíme všechny objekty, setřídíme je podle hodnocení a vrátíme prvních k Prahový algortmus Tento algortmus využívá přímého přístupu do seznamu. Zadáním jména objektu o do seznamu obdržíme hodnotu a. Dále algortmus obsahuje práh. Tento algortmus vyžaduje uchovávat pouze množnu k nejlepších objektů, má tedy konstantní paměťovou náročnost. Zpracování aktuálních objektů Pro každý objekt nalezený v tomto kroku s přímým přístupem do ostatních seznamů najdeme hodnoty jeho atrbutů. Tím zajstíme, že u všech objektů známe všechny atrbuty. Pokud hodnocení nově nalezeného objektu o je větší než hodnocení k-tého nejlepšího objektu, přdáme jej do TOPK. Poslední prvek TOPK vyhodíme. Tím zajstíme, že nám stačí seznam o velkost k. Pokud hodnocení nově nalezeného objektu o je menší větší než hodnocení k-tého nejlepšího objektu, objekt o vyhodíme. Vypočteme nové hodnocení prahu

68 Kontrola konce algortmu Pokud hodnocení k-tého objektu je větší než hodnocení prahu, algortmus končí. Toto plyne ze dvou faktů:. Žádný nově nalezený objekt už nemůže mít hodnocení větší než práh, tedy an větší než k-tý prvek. To je znázorněno na schématu V okamžku, kdy rozhodujeme, zda objekt o vyhodíme nebo umístíme do TOPK, známe všechny atrbuty objektu o objektů v TOPK. To znamená, že můžeme s konečnou platností rozhodnout, zda o patří do TOPK nebo ne. 2 3 M práh dosud nenalezený prvek Schéma Pokud nějaký prvek nalezneme a vyhodíme, je pro nás nformace o něm ztracená. Pokud bychom upustl od konstantní paměťové náročnost, mohl bychom s uchovávat nformace o vyhozených prvcích, čímž by se zmenšl počet zbytečných prohledávání Algortmus bez přímého přístupu Tento algortmus využívá pouze sekvenční přístup do všech seznamů. V průběhu algortmu typcky nebudeme znát všechny atrbuty všech objektů. Zavedeme proto dva nové pojmy. Předpokládejme, že u objektu o známe pouze prvních l atrbutů. Zavedeme dvě nová hodnocení objektu pro případ, že nám zbylé atrbuty objektu chybí. V případě spodního ohodnocení nahradíme chybějící atrbuty hodnotou 0, v případě horního ohodnocení nahradíme chybějící atrbuty hodnotou, případně hodnotou a Defnce Spodní ohodnocení objektu o budeme označovat W l ( o) a počítat jako ( a,.., a l,0,0,...,0) Horní ohodnocení objektu o budeme označovat B l ( o) a počítat jako ( o) ( a,.., a,,,...,) W =. l l B =. Pokud známe hodnotu prahu, pak horní ohodnocení lze l l+ l+ 2 M počítat vzorcem B ( a,.., a, a, a,..., a ) l = Pozorování ( o) B( o) W Plyne přímo z monotone agregační U. l

69 Dále zavedeme novou množnu kanddátů C. C je množna objektů, jejchž horní ohodnocení je větší než dolní ohodnocení k-tého nejlepšího prvku. Zde se uchovávají nformace o všech nalezených objektech, které nejsou v TOPK, paměťové nároky jsou tedy úměrné počtu objektů. Množna kanddátů obsahuje ty prvky, které se ještě mohou dostat do TOPK. Prvky v TOPK řadíme podle dolního ohodnocení. V případě rovnost dolních ohodnocení prvků x a y rozhoduje horní ohodnocení, v případě rovnost horních ohodnocení je vybrán náhodný prvek x nebo y. Zpracování aktuálních objektů Vypočteme nové hodnocení prahu. Pro každý nově nalezený objekt o spočteme jeho horní a spodní ohodnocení. Pokud jsme jž objekt vděl, přdáme nově nalezený atrbut do seznamu stávajících. Pokud je dolní ohodnocení mez k nejlepším, přdáme o do TOPK, odebereme jej z množny C a vyhodíme poslední prvek x z TOPK. Pokud je horní hodnocení vyhozeného prvku x větší než spodní hodnocení k-tého prvku, přdáme x do seznamu kanddátů. Pokud je horní ohodnocení o větší než spodní hodnocení k-tého prvku, přdáme o do seznamu kanddátů. Kontrola konce algortmu Pokud je množna C prázdná, neexstuje prvek, jež by mohl mít lepší hodnocení než k- tý nejlepší prvek. Algortmus může tedy skončt, pokud TOPK obsahuje k prvků a prahová hodnota je menší než spodní hodnocení k-tého prvku. Příklad průběhu algortmu bez přímého přístupu Mějme seznamy Terén Město Brdy, 0.9 Krkonoše, 0.7 Orlík, 0.4 Brdy, 0.4 Krkonoše, 0.2 Orlík, x, y = x 2y a položíme k=. Dále agregační funkc ( ) ( ) 3 ) Nejprve vezmeme Brdy, které jsou na začátku seznamu s terény. W(Brdy)= (0.9+2*0)/3= 0.3. Jelkož je množna TOPK prázdná, umístíme Brdy do TOPK. TOPK = { Brdy, 0.3 }, C = 0, práh = (0.9, 0.7) 2) Nyní vezmeme Krkonoše v seznamu měst. W(Krkonoše)= (0+2*0.7)/3= 0.46, což je víc, než mají Brdy a proto Krkonoše umístíme do TOPK. B(Brdy)=(0.9+2*0.7)/3= Brdy tedy ještě mohou být v TOPK, umístíme je do množny kanddátů C. TOPK = { Krkonoše, 0.46 }, C = { Brdy }, práh = (0.9, 0.7) 3) Vezměme Orlík v seznamu terénů. W(Orlík)=(0.4+2*0.0)/3= 0.3, což je méně, než mají Krkonoše. B(Orlík) = (0.4+2*0.7)/3= To je ale více než spodní hodnocení Krkonoš, tedy Orlík umístíme do množny kanddátů TOPK = { Krkonoše, 0.53 }, C = { Brdy, Orlík }, práh = (0.4, 0.7) 4) Dále jsou Brdy v seznamu měst. W(Brdy) = (0.9+2*0.4)/3= To je více než spodní hodnocení Krkonoš, Brdy tedy půjdou do TOPK. B(Krkonoše) = (0.4+2*0.7)/3= 0. 6,

70 tedy více než spodní hodnocení Brd, Krkonoše tedy přemístíme do kanddátů. Spočítáme horní ohodnocení Orlíku B(Orlík) = (0.4+2*0.4)/3= 0. 4, což je méně než dolní hodnocení Brd, takže Orlík vyhodíme z množny kanddátů. V tomto okamžku je ohodnocení (0.4+2*0.4)/3= 0.4. Jž tedy nemá smysl kontrolovat nové objekty, které nalezneme dále, všechny budou mít hodnocení menší než 0.4 a tedy nebudou mít naděj se dostat do TOPK. Nyní se do TOPK mohou dostat pouze objekty z množny kanddátů C. TOPK = { Brdy, 0.56 }, C = { Krkonoše }, práh = (0.4, 0.4) 5) Dále jsou Krkonoše v seznamu terénů. W(Krkonoše) = (0.2+2*0.7)/3= To je méně než spodní hodnocení Brd. Dále B(Krkonoše) = (0.2+2*0.7)/3= 0.53, tedy méně než spodní ohodnocení Brd, vyhodíme tedy Krkonoše z množny kanddátů. TOPK = { Brdy, 0.56 }, C = { }, práh = (0.2, 0.4) končí. 6) Množna kanddátů C je prázdná a v TOPK máme k= prvků, algortmus tedy Kombnovaný algortmus Kombnovaný algortmus vychází z algortmu bez přímého přístupu. Rozdíl je v tom, že každých h kroků s z množny objektů, kterým chybí některé atrbuty, vybere objekt o s nejvyšším horním ohodnocením B(o) a nalezne přímým přístupem všechny jeho chybějící atrbuty. Tento algortmus tedy využívá hlavně sekvenční přístup, občas s pomůže přímým přístupem. Konstanta h bude závset na ceně přímého a sekvenčního přístupu. Čím dražší bude přímý přístup, tím bude h větší. Zpracování aktuálních objektů Jako algortmus bez přímého přístupu. Každých h kroků najd objekt o s chybějícím atrbuty a s nejvyšším B(o) a pro něj nalezn přímým přístupem chybějící atrbuty. Kontrola konce algortmu Stejná jako u algortmu bez přímého přístupu

71 9. Obecný nástroj pro top-k algortmus Xoda 9.. Průběh vývoje nástroje Xoda Prvotní motvací bylo vytvořt nástroj pro algortmus hledající k nejlepších objektů v prostředí RDF. RDF bude použto jako zdroj dat pro algortmus. Jedna z nejrozšířenějších RDF databází je Sesame, více v [SESAME]. Po krátkém studu této databáze jsme objevl, že její dotazovací jazyk SeRQL nepodporuje operac třídění. Výsledky dotazů se tedy musí třídt přímo v pamět počítače. V jných ohledech se Sesame ukázal jako kvaltní RDF databáze, s příjemným grafckým web-prostředím přes http server Apache. Další známá RDF databáze je Jena ([JENA]). Jena byla vybrána proto, že podporuje dotazovací jazyk SPARQL, který obsahuje order by klauzul. Tím je umožněno plnohodnotné nasazení algortmu top-k. Není jž nutné třídt data v programu, ale přímo v databáz Jena. Bohužel zkoumáním velm slabé výkonnost databáze Jena jsme zjstl, že Jena třídění vykonává v pamět po načtení všech výsledků do pamět. Navíc trvání dotazu u Jeny s order by klauzulí je řádově delší než bez order by se setříděním dat v programu. Z těchto technckých důvodů jsme se rozhodl navrhnout program tak, aby byl co nejvíce nezávslý na použtých technologích. Mělo by být možné lehce doprogramovat moduly pro přístup k jné databáz, moduly s jným agregačním funkcem apod. Navíc ale musí být snadné použtí tohoto algortmu se stávajícím moduly Přehled komunkace datových typů nástroje Rater Algorthm BestColumnFnder DataSearcher DataSearcher Normalzer Zdroj dat (Jena) Normalzer Zdroj dat (Sesame) 2... Schéma Výše uvedené schéma reprezentuje komunkac datových typů použté v Xodě. Špky značí využívání funkcí komponent. Třída DataSearcher získává data, která předává třídě Algorthm. Ta je zpracovává, krom jného pomocí třídy Rater, která reprezentuje agregační

72 funkc užvatele. Pro výběr sloupce se používá nterface BestColumnFnder. K normalzac hodnot z databáze na nterval [0,] se používá nterface Normalzer. Všechny výše uvedené komponenty jsou buď rozhraní nebo abstraktní třídy. Tím je zaručena velká obecnost lze používat lbovolné nové mplementace nebo jž exstující zakomponovat do jného programu. Xoda obsahuje další třídy, které usnadňují některé časté operace nebo naopak komplexní výpočty TopKElement Třída TopKElement představuje objekty, jejchž pořadí chceme zjstt. TopKElement obsahuje jméno objektu a jeho atrbuty, které jsme jž nalezl, spolu s jejch hodnocením, dále potom data o nalezení objektu - jeho pozce v každém seznamu a krok algortmu, kdy byl objeven v daném seznamu. Pokud chybí některý atrbut, je na jeho místě hodnota null Normalzer Normalzer reprezentuje funkc r U : D T z defnce top-k algortmu. Převádí data na množnu T. V našem případě jsme se rozhodl použít nterval [,] A 0. Normalzer má dvě funkce. Za prvé převádí data na číselný typ a za druhé se zde aplkuje užvatelská fuzzy množna. Pokud data pro převedení jž jsou z ntervalu [ 0,], pak se vezme toto číslo a upraví se pomocí fuzzy funkce užvatele. V základním Normalzeru, třídě SmpleNormalzer, je tato funkce reprezentována třídou Orderng. Vytvořl jsme tř ukázkové podtřídy Orderng. Třída AscendngOrderng vrací číslo, které dostala. Tím vytváří vzestupné řazení. Třída DescendngOrderng vrací -vstup, čímž vytváří sestupné řazení. Nakonec OnePeekOrderng vrací vzdálenost od stanoveného deálního bodu. Tato vzdálenost je normalzovaná na nterval [,] 0. 0, musí se nejdřív na tento nterval převést. To je jž věc jednotlvých mplementací Normalzeru. Zmíníme zde HashMapNormalzer, který dostane na vstupu typ HashMap, což je asocatvní pole. Klíče tohoto pole budou prvky a hodnoty jsou hodnocení prvků. Tento Normalzer je využt v pomocné třídě MultpleRatngs. Vstup HashMapNormalzeru může být totž výstup nějakého předchozího top-k algortmu. Potom tento Normalzer dostane objekt a vrátí jeho užvatelské hodnocení, spočítané v předchozím top-k algortmu. Díky tomu lze lehce namplementovat vícestupňový top-k, jak je znázorněn na schématu nebo Nakonec jsme vytvořl LevelNormalzer, který výstup nějakého jného Normalzeru zaokrouhlí. Hodnoty, na něž má zaokrouhlovat, dostane na vstupu. Příklad funkce LevelNormalzeru je na schématu Výstup LevelNormalzeru je zvýrazněn tučně. Pokud data nejsou v ntervalu [,] - 7 -

73 Schéma Seznamy, jež jsou vstupem top-k algortmu, by měly být setříděny podle použtého Normalzeru. Pokud je to obyčejný SmpleNormalzer s AscendngOrderng nebo DescendngOrderng, je vše v pořádku. Ovšem setřídění, odpovídající složtějšímu Normalzeru, jž v běžném dotazovacím jazyku nenapíšeme a pak nám nezbývá nc jného než seznamy setřídt v pamět Rater U Abstraktní třída Rater hraje rol agregační Používá se pro počítání hodnocení objektu z hodnocení jeho atrbutů. Tuto funkc zajšťuje metoda getratng. Metoda getratng tedy dostane na vstup TopKElement a sadu DataSearcherů spolu s jejch Normalzery. Atrbuty objektu převede pomocí jednotlvých Normalzerů na nterval [ 0,] a z těchto čísel nakonec vypočítá hodnocení objektu. Navíc může dostat hodnoty, které se mají použít v případě chybějícího atrbutu. Jak rychle algortmus top-k skončí, je z velké část dáno agregační funkcí. Agregační funkce vysthuje, jak moc se hodnocení objektu zhorší, pokud je nějaký atrbut špatně hodnocený. Vezměme s extrémní případ - mnmum. Pokud tato agregační funkce bude použta v algortmu bez přímého přístupu, většna objektů bude mít dlouho spodní ohodnocení 0, protože typcky nám nějaké atrbuty chybějí. Z tohoto důvodu jsme zavedl další abstraktní třídu WeghtRater, která je podtřídou třídy Rater. Tato funkce bere v úvahu váhy přřazené jednotlvým atrbutům. Další agregační funkce je EucldRater. Počítá eukldovskou vzdálenost bodu [,,] od objektu, jehož souřadnce jsou určeny hodnocením jeho atrbutů. Je pravda, že pro vyhledávání objektů podle vzdálenost exstují jné metody, ovšem top-k algortmus nemůže předpokládat žádné další vlastnost agregačních funkcí krom monotone. InductonRater je použt př generování hodnocení atrbutů a vlastností, pomocí metody popsané v kaptole

74 Rater WeghtRater EucldRater MultplcatonRater WeghtAverage InductonRater MaxmumRater MnmumRater Schéma 9.6. DataSearcher Abstraktní třída DataSearcher předává data z nějakého zdroje. Tím, že se zdroj v algortmu nepoužívá přímo, je zajštěna přenostelnost mez různým databázem. Implementoval jsme dva DataSearchery pro dvě RDF databáze (Sesame a Jenu), jeden pro sekvenční přístup do souboru a jeden pro přímý přístup do pamět. Posledně jmenovaný dostane jako vstupní parametr nějaký seznam, ze kterého pak vrací prvky. Tato třída je zde zavedena proto, že je umožněno použít výstup několka top-k algortmů jako vstup dalšího top-k algortmu. Tento mechansmus je použt např. ve třídě MultpleRatngs, která usnadňuje nalezení k objektů, které vyhovují více užvatelům. Blíže je problematka rozebrána v kaptole 7.4. DataSearchery pro RDF databáze jsme rozděll do několka podtříd, jak je znázorněno na následujícím schématu DataSearcher SesameSearcher JenaSearcher SesameFleSearcher SesameRepostorySearcher JenaMySQLSearcher JenaFleSearcher Schéma SesameSearcher neumožňuje setřídění výsledků přímo v úložšt. Pracuje tak, že nejdříve načte všechny výsledky vrácené Sesamem do pamět a tam je setřídí. Pro uložení výsledků je použta struktura ArrayLst. Z důvodu špatné rychlost třídění JenaSearchu jsme se rozhodl mplementovat ještě jeden DataSearcher založený na RDF databáz Jena. JenaMemorySearcher načte výsledky z Jeny do pamět, kde je setřídí a tím se ušetří čas za třídění v Jeně. Př testech se navíc ukázalo, že přeuložené výsledky ve struktuře ArrayLst pracují rychlej než samotné uložení dat v Jeně. Jena teoretcky podporuje třídění pomocí jazyka SpaRQL. Po provedení dotazu se výsledky vrací sekvenčně po jednom. Jelkož ale Jena provádí třídění také v pamět, je celý výsledek dotazu uložen nějakým způsobem v Jeně, která z něj pak vrací další záznamy

75 DataSearcher JenaMemorySearcher JenaMemoryMySQLSearcher JenaMemoryFleSearcher Schéma Nakonec poznamenejme, že pro deální funkc top-k algortmu v prostředí nternetu je možné mplementovat DataSearcher, který bude získávat data z webovských služeb nebo jných nternetových zdrojů. Tím bude zajštěno, že data budou aktuální BestColumnFnder Interface BestColumnFnder reprezentuje heurstku, která určuje sloupec, ve kterém se bude dále postupovat. Jako vstup dostane objekt typu Algorthm, může tedy využívat všechny parametry aktuálního stavu algortmu. Heurstky zmíněné např. ve [GLV] berou v úvahu dervac agregační funkce, případně vlastní hodnotu dat v daném seznamu. Dále je zde navržena heurstka, která střídá dva výše uvedené přístupy. Zde poznamenejme, že heurstky musí splňovat podmínku, že pokud algortmus ještě v některých seznamech nedošel až na konec, heurstka vrací ndex některého z těchto seznamů. Pokud už ve všech seznamech byly prohledány všechny prvky, heurstka vrací číslo -. Tím se zajstí korektní ukončení algortmu MssngValuesFnder Motvace pro vytvoření nové heurstky V kaptole 0.8 jsme testoval heurstky založené na dervac agregační funkce. Zjstl jsme, že pro prahový algortmus jsou tyto heurstky vhodné, ale algortmu bez přímého přístupu naopak zpomalují jeho běh. Proto jsme se rozhodl vytvořt heurstku přímo pro tento algortmus. Výše uvedené heurstky sestupují rychlej v seznamech, kde je větší dervace agregační funkce. V seznamech, kde je tato váha malá, ale postupují velm pomalu. Proto bude v množně TOPK velm mnoho chybějících atrbutů právě u seznamů s malou vahou. To se př testování konce algortmu promítne následovně : ) k-tý nejlepší prvek bude mít malé spodní ohodnocení, protože mu budou chybět některé atrbuty 2) prvky z kanddátské množny budou mít vysoké horní ohodnocení, protože jm sce také chybějí stejné atrbuty jako k-tému prvku, ale tyto atrbuty se nahradí atrbuty prahu. Práh má v těchto atrbutech velm vysoké hodnocení. Ukazuje se, že použtí těchto heurstk zpomaluje algortmus, který musí prozkoumat více řádek než př sekvenčním přístupu. Pops heurstky Heurstka MssngValuesFnder bere v úvahu možné chybějící atrbuty k nejlepších objektů a snaží se tento počet mnmalzovat. Je to motvováno tím, že chceme co nejvyšší spodní hodnocení k-tého nejlepšího prvku. Jakmle hodnota prahu překročí hodnotu k-tého

76 prvku, uzavře se nám množna kanddátů. Proto chceme co nejrychlej dosáhnout stavu, kdy práh bude hodnocen hůře než k-tý prvek. Jedna možnost je snžovat hodnotu prahu, což lze například využtím výše zmíněných heurstk. Ukazuje se, že lepší způsob je mnmalzování počtu chybějících atrbutů u k-tého objektu, proto budeme hledat v těch sloupcích, kde k-tý objektu nemá atrbut. Tuto myšlenku ještě rozšíříme po nalezení chybějícího atrbutu k-tého objektu se jeho ohodnocení zvýší a s velkou pravděpodobností opustí k-té místo v seznamu. Na toto místo spadne (k-)-ní objekt. Budeme tedy hledat počet chybějících atrbutů pro h prvků od k- tého objektu, tedy pro (k-h)-tý,,k-tý objekt. Tato heurstka se ukázala jako velm užtečná, algortmus bez přímého přístupu se př jejím použtí zrychll, což je významné mmo jné proto, že tento algortmus nepoužívá přímý přístup, který může být velm drahý. Navíc, pokud jž žádný objekt v TOPK nemá chybějící atrbut, další seznam bude vybraný některou z výše uvedených heurstk. To je užtečné, protože tím se bude rychlej snžovat prahová hodnota Algorthm Abstraktní třída Algorthm provádí vlastní top-k algortmus. K běhu potřebuje pole DataSearcherů, které mu dodají data, Rater pro vypočtení ohodnocení prvků a BestColumnFnder pro vybrání dalšího seznamu. Po skončení vrátí seznam k nejlepších objektů. Algortmus obsahuje krom jného určté nformace o běhu programu. Jsou to statstky o tom, jak dlouho které část trvaly. Tyto statstky se dají použít př ladění výkonu algortmu Algortmus bez přímého přístupu Vybral jsme tento algortmus pro kvaltní mplementac. Tato volba vyplynula z faktu, že přímý přístup do databáze je řádově dražší než sekvenční přístup k výsledkům dotazu. Tím pádem prahový algortmus nedosahuje rychlost navního algortmu, byť je řádově lepší v počtu prozkoumaných řádek. Pokud by exstovala databáze, kde by byl plnohodnotný sekvenční přístup, tak by se zřejmě navní algortmus řádově zpomall. Tato problematka je více rozebrána v kaptole 0.0 Problémy testování. Implementace přímo podle popsu ve [FLN] přnesla funkční verz, která ovšem byla pomalejší než navní algortmus. Problém - Jako nejpomalejší část se ukázala nutnost třídt seznam objektů podle dolního ohodnocení. Řešení - Upravl jsme algortmus tak, že nově přdávaný prvek se vsune přímo na místo, kam patří podle jeho dolního ohodnocení. Navíc se prohledává pouze prvních k objektů. V případě, že se shoduje dolní ohodnocení, použje se prvek s vyšším horním ohodnocením. To se ale mění spolu se změnou hodnot prahu, proto je nutné udržovat setříděný seznam k prvků a navíc všech, které mají stejné dolní ohodnocení jako k-tý prvek. Touto úpravou se algortmus řádově zrychll, takže byl přblžně stejně rychlý jako navní algortmus. Nejdelší čas nyní zabírala část testování konce algortmu. Problém ) Př testování konce algortmu se procházejí prvky mmo prvních k a počítá se pro ně horní ohodnocení. Pokud má prvek větší ohodnocení než je dolní ohodnocení k-tého prvku, přerušíme hledání a algortmus pokračuje. Pokud ne, prohledává se dále. Pokud dojdeme až na konec seznamu, algortmus končí, protože neexstuje prvek s vyšším horním ohodnocením než je spodní ohodnocení k-tého prvku

77 Řešení ) Prohledáváme seznam tak dlouho, dokud nenarazíme na prvek s větším horním ohodnocením než je dolní ohodnocení k-tého prvku. V tom okamžku se vyhodí všechny předcházející prvky ze seznamu kanddátů, takže se jž nebudou příště prohledávat. Problém 2) Pokud je hodnota prahu menší než je hodnota k-tého prvku, jž nemá smysl přdávat nově nalezené prvky. Řešení 2) Jakmle hodnota prahu klesne pod hodnotu k-tého prvku, zastaví se přdávání nových prvků. Od tohoto okamžku se prvky z množny kanddátů pouze odebírají. Navrhujeme tř přístupy odebírání prvků ze seznamu. První neodebírá vůbec, druhý nejdříve najde prvek s větším horním ohodnocením než je dolní ohodnocení k-tého prvku a následně odebere všechny předchozí prvky a třetí odebírá pokaždé, když narazí na prvek s menším horním ohodnocením než je dolní ohodnocení k-tého prvku. V testování přístupů se ukázal nejlepší druhý přístup, tedy nalezení prvku, jehož horní ohodnocení je větší než dolní ohodnocení k-tého prvku, a následné odstranění všech předchozích záznamů. Poslední úprava se týkala setřďování seznamů. Jelkož je prvních k objektů uspřádáno podle hodnocení, můžeme místo nového prvku nalézt pomocí bnárního hledání, které je logartmcké vzhledem k velkost dat. Tím se nám opět algortmus zrychll. Časy výpočtu pro modfkace NRA algortmu Čas výpočtu [ns] Počet položek v odpověd Log. sort Bez úprav Graf Tímto způsobem jsme zrychll algortmus bez přímého přístupu na přjatelnou úroveň. Blžší srovnání s dalším algortmy je uvedeno v kaptole 0.5 Testování algortmů. Stejné heurstky jsou použty v kombnovaném algortmu, který se lší od algortmu bez přímého přístupu pouze tím, že každých h kroků s přímým přístupem dohledá všechny atrbuty prvku s největším horním ohodnocením Pomocné třídy Xoda také obsahuje sadu pomocných tříd, které usnadňují programátorov ntegrac Xody do svého programu. QueryFnder Načítá dotazy pro databáz z XML souboru. Tyto dotazy potom využívá DataSearcher pro získání dat. Pokud chceme nějakou aplkac přenést na jnou databáz, stačí přepsat tento XML soubor. Nahradíme dotazy v původním jazyce ekvvalentním dotazy v jazyce nové databáze

78 MultUserRatng Umožňuje aplkovat top-k algortmus v prostředí s více užvatelským hodnocením. Proces je blíže popsán v kaptole 7.4. Oba dva výše zmíněné přístupy tato třída realzuje pomocí funkcí getfrstglobal a getfrstlocal. Dále umožňuje získat mezvýsledky procesů. Funkce gettypebyglobalpreferences vrátí zadanou třídu setříděnou podle agregace hodnocení jednotlvých užvatelů. Funkce gettypebysubtypes pak vrátí seznam objektů seřazených podle agregace hodnocení atrbutů. UserNormalzers Ukládá nformace o užvatelském Normalzeru do databáze, případně je poté z databáze načítá. Normalzery jsou navázány k nějaké vlastnost. Příklad <trp:hasctesblesksnormalzer> <rdf:type> <mvlp:smplenormalzer> <trp:hasctesblesksnormalzer> <mvlp:hasorderng> <mvlp:ascendng> <trp:hasctes> <trp:blesksnormalzer> <trp:hasctesblesksnormalzer> UserRatngs Usnadňuje prác s užvatelským hodnocením. Jednoduchým voláním funkce může přdat, odebrat č upravt exstující užvatelské hodnocení nějaké entty. Také jsou zde mplementovány postupy z kaptoly 7.2 pro generování užvatelských hodnocení. Je možné použít model pro generování hodnocení na vlastnost na atrbuty Závěr kaptoly Vytvořl jsme nástroj, který dovoluje provádět top-k algortmus na lbovolných datech. Dále je možné změnt agregační funkce, fuzzy funkce pro atrbuty a heurstky použté pro výběr sloupce. Naprogramoval jsme základní sestavu, která umožňuje top-k algortmy pro dvě rozšířené RDF databáze, spolu se základním agregačním funkcem. Druhá část se týká teore z kaptoly 7. a to generování nových vypočítaných užvatelských preferencí a skupnové rozhodování. Ideální by pro top-k algortmus byla databáze, která by umožňovala vytvářet vlastní ndexy, které by pak odpovídaly uspořádání defnovaném různým Normalzery. Př použtí B+ stromů by šlo např. namplementovat setřídění OnePeakOrderng, které dostane deální hodnotu atrbutu, té přřadí a pak hodnocení klesá oběma směry dolů. B+ strom by pak představoval obecnou fuzzy funkc F A a F B z kaptoly Schéma

79 Pomocí B+ stromu se můžeme dostat do vybraného deálního bodu. Poté budeme zpětně prohledávat další lsty, přčemž budeme preferovat nejblžší sousedy ve stromě. Čím pozděj narazíme na lst, tím dále bude od deálního bodu a tím menší bude mít hodnocení Schéma Databáze pro top-k algortmus může být poměrně jednoduchá - stačí základní podpora dotazů na vlastnost objektu, seřazených podle určtého krtéra. Poté pro přímý přístup by vracela hodnotu vlastnost nějakého objektu. Největším úskalím je setřďování podle zadaného krtéra

80 0. Testování top-k algortmu 0.. Struktura dat Pro testování algortmů jsme použl testovací data. Testovací data obsahují N objektů každý s M vlastnostm. Vlastnost jsme pojmenoval val,..,val0, objekty potom tem0, tem,, temx. Vygeneroval jsme různé soubory pro různá M N. Nakonec jsme ve většně případů použl 5 atrbutů a zdrojů. Obor hodnot vlastností je desetnné číslo v rozsahu [0,]. Zvoll jsme tř různá rozložení hodnot těchto vlastností. ) Normální rozdělení Grafcké znázornění rozložení je na grafu Řada Graf 2) Rovnoměrné rozdělení Grafcké znázornění rozložení je na grafu Řada Graf

81 ) Exponencální rozdělení Grafcké znázornění rozložení je na grafu Řada Graf 0.2. Testované velčny Z mnoha různých parametrů top-k algortmu jsme vybral několk pro testování. ) Vlv rozložení hodnot vlastností na rychlost algortmu 2) Porovnání algortmů mez sebou 3) Porovnání RDF databází 4) Vlv agregační funkce na průběh algortmu 5) Vlv heurstk na rychlost algortmu 6) Specálně budeme studovat heurstku MssngValuesFnder Sledovat budeme : ) Čas běhu algortmu 2) Počet prohledaných řádek 3) Pozce, př které hodnota prahu klesla pod hodnotu k-tého prvku (pro NRA algortmus) 4) Časy jednotlvých částí algortmů kontrola konce, čas pro získání dat, atd Způsob měření Všechny testy probíhaly na počítač s 52MB RAM,,7 GHz Intel Pentum, několk let starém. Z tohoto pohledu lze říc, že se jedná o spíše pomalejší počítač. Systém byl použt Mcrosoft Wndows XP. Budeme sledovat několk charakterstk algortmu. První bude doba běhu algortmu, další počet prozkoumaných řádek, trvání jednotlvých částí algortmu a nformace o pozc v seznamech př překročení prahu. Doba běhu algortmu se bere jako čstá doba běhu neuvažuje se vytváření RDF databází v pamět an setřďování výsledků dotazů. Pro testování Sesamu a Jeny jsme použl Sesame verze.2.4 a Jenu

82 0.4. Testování různých rozložení dat Nejdříve otestujeme různá rozložení dat pomocí algortmů NRA a prahového algortmu. Očekáváme, že algortmy skončí nejrychlej na exponencálním rozdělení, poté na rovnoměrném a nakonec na normálním. Testované rozdělení je na všech atrbutech stejné. Počet atrbutů jsme stanovl na pět, což je rozumný počet pro užvatele.v testovací množně bylo padesát tsíc zdrojů s pět atrbuty. Celkem tedy dvě stě padesát tsíc trojc. Algortmus bez přímého přístupu Časy NRA algortmu Čas výpočtu [ns] rovnoměrné exponencální normální Počet položek v odpověd (K) Graf Podle předpokladu algortmus běžel nejrychlej na datech s exponencálním rozložením hodnot. Nyní ještě zkontrolujeme, kolk bylo prohledáno řádek. Prohledané řádky NRA algortmu Počet prohledaných řádek rovnoměrné exponencální normální Počet položek v odpověd (K) Graf Na grafu vdíme, že na exponencálních datech nebylo kromě k=0 prozkoumáno výrazně méně řádek. Data pro k=0 můžeme považovat za shodu okolností, ostatní hodnoty vyjadřují obecný trend dostatečně

83 Zajímalo nás, proč je algortmus na exponencálních datech o tolk rychlejší, když počet řádek je přblžně stejný jako u ostatních rozložení. Zkusl jsme sledovat, kdy hodnocení k-tého prvku přesáhne hodnocení prahu. To je okamžk, kdy se jž nepřdávají nové prvky do množny kanddátů, naopak už z této množny pouze odebíráme. Pozce př překročení hodnoty prahu Pozce př překročení hodnoty prahu Počet položek v odpověd (K) rovnoměrné exponencální normální Graf Zde jž je vdět, že př exponencálním rozložení je prahová hodnota překročena řádově dříve než u ostatních rozložení. Nakonec ještě potvrdíme domněnku změřením času, který algortmus potřebuje na zjštění, zda jž může skončt. V tomto kroku se prochází celá množna kanddátů, dokud se nenajde prvek s horním ohodnocením větším než je dolní ohodnocení k-tého prvku. Čas kontroly konce algortmu Čas kontroly konce algortmu [ns] rovnoměrné exponencální normální Počet položek v odpověd (K) Graf

84 Prahový algortmus Nyní otestujeme prahový algortmus. Začneme opět časem algortmu. Časy prahového algortmu Čas výpočtu [ns] rovnoměrné exponencální normální Počet položek v odpověd (K) Graf Zde se zajímavě prohodlo pořadí normálního a rovnoměrného rozložení. Jelkož prahový algortmus má řádově méně prohledaných řádek, vysvětlujeme to tím, že v případě normálního rozložení se algortmus ještě nedostal do prostřední část, kde jsou nahuštěna data s podobným hodnotam. Náš předpoklad potvrzuje následující graf s počtem prohledaných řádek. Prohledané řádky prahového algortmu Počet prohledaných řádek Počet položek v odpověd (K) rovnoměrné exponencální normální Graf

85 0.5. Testování různých algortmů Nyní otestujeme jednotlvé algortmy v jejch základní podobě. Agregační funkce je vážený průměr. Nebyly použty žádné heurstky. Čas výpočtu [ns] Časy algortmů Počet položek v odpověd CombnedAlgorthm FagnsAlgorthm NaveAlgorthm NRAAlgorthm ThresholdAlgorthm Graf Graf lze rozdělt na dvě část časy pro malá k a časy pro velká k. Pro malá k je nejlepší kombnovaný algortmus, jehož čas výpočtu ovšem stoupá rychlej než u ostatních algortmů. Druhý nejrychlejší je algortmus bez přímého přístupu, pak prahový a Fagnův algortmus. Pro k 750 je nejlepší navní algortmus, algortmus bez přímého přístupu se do k=0000 drží na srovnatelné úrovn a pak se také prudce zhoršuje. Zde je nejprve předstžen Fagnovým algortmem a posléze prahovým algortmem. Kombnovaný algortmus zůstává stále nejhorší. Zajímavé je zlepšování Fagnova algortmu pro větší k. To se děje proto, že se prodlužuje část hledání k prvků se všem atrbuty. Pro k=počet zdrojů je potom průběh Fagnova algortmu stejný jako navního algortmu. Navní algortmus je zde jako jakás norma, ke které se ostatní algortmy vztahují, má pro všechna k stejný čas výpočtu. Počet řádek Počet řádek prozkoumaných algortmy Počet položek v odpověd CombnedAlgorthm FagnsAlgorthm NaveAlgorthm NRAAlgorthm ThresholdAlgorthm Graf Graf potvrzuje prudký nárůst počtu řádek pro k 000 u kombnovaného algortmu. Dále je vdět, že algortmus bez přímého přístupu velm rychle dosáhl skoro plného počtu prohledaných řádek. Pro k=00 to jž bylo ze

86 0.6. Testování RDF databází V této část jsme testoval rychlost Jeny a Sesamu ve dvou režmech. První je vytvoření vrtuální databáze v pamět, obsah databáze je načten z určeného souboru. Druhý je přístup do relační databáze, v tomto případě MySQL, a získávání dat z ní. Použjeme opět pět atrbutů a dvacet tsíc zdrojů, celkem pět set tsíc trojc. Zde musíme poznamenat, že Sesame pracuje s obecným pojmem "repostory" (úložště), které může uchovávat data buď v relační databáz nebo v pamět. Přístup k úložštím je uskutečněn přes server Apache Tomcat. Nahrávání dat do databáze MySQL probíhá u Sesamu přes webovské rozhranní serveru Apache, u Jeny přes program v Javě. Uložení testovací sady s dvacet tsíc objekty a pět vlastnostm, tedy celkem sto tsíc trojcem, trvalo Sesamu pět mnut, Jeně pak padesát jednu mnutu. Pro data v pamět s obě dvě RDF databáze vytvoří v pamět vrtuální databáz, do které se potom dotazují. Obsah databáze je naplněn ze souboru. Pro úplnost uvedeme grafy doby vytvoření této vrtuální databáze a také časy pro vykonání dotazu do databáze Čas dotazu Čas dotazu [ns] Čas dotazu SesameFleSearcher JenaMemFleSearcher JenaFleSearcher SesameRepostorySearcher JenaMemMySQLSearcher JenaMySQLSearcher Graf Graf je v logartmckém měřítku. Zde vdíme, že př prác v pamět je velm výrazně nejpomalejší v provádění dotazu Jena. Sesame zase ztrácí př přístupu k databáz, to je způsobeno jž zmíněným Apachem Čas ncalzace Čas ncalzace SesameFleSearcher JenaMemFleSearcher JenaFleSearcher SesameRepostorySearcher JenaMemMySQLSearcher JenaMySQLSearcher Graf Opět je graf vynesen v logartmckém měřítku.vytvoření vrtuální databáze ze souboru zabírá řádově více času než přístup do databáze, kde jsou jž data přpravena

87 Na grafu vdíme, že rychlost NRA algortmu v podstatě nezáleží na druhu přístupu k datům. Je to dáno tím, že an Sesame an Jena nepodporují plnohodnotné třídění dat. Třídění se děje v pamět na jž načtených datech. JenaSearcher je oprot JenaMemorySearcher a SesameSearcher o konstantu pomalejší. V průměru zpomalení je 0.7 sekundy. Časy výpočtu pro NRA algortmus Čas výpočtu [ns] SesameFleSearcher JenaMemFleSearcher JenaFleSearcher JenaMySQLSearcher JenaMemMySQLSearcher SesameRepostorySearcher Počet položek v odpověd Graf Zajímavější stuace bude pro prahový algortmus, který využívá přímého přístupu. Zde by se mělo objevt větší zpoždění u relační databáze. Časy výpočtu pro prahový algortmus Čas výpočtu [ns] SesameFleSearcher JenaMemFleSearcher JenaFleSearcher JenaMySQLSearcher JenaMemMySQLSearcher SesameRepostorySearcher Počet položek v odpověd Graf Na grafu vdíme poměry časů pro Jenu a Sesame. Časy jsou zaneseny v logartmckém měřítku. Pro Sesame jsou časy pro relační databáz oprot datům v pamět šedesátkrát horší, pro Jenu řádově stokrát. Ovšem je zde vdět, že Sesame je výrazně horší než Jena. To je způsobeno cenou přímého přístupu do databáze

88 Časy získávání dat Čas získávání dat [ns] SesameFleSearcher JenaMemoryFleSearcher JenaFleSearcher SesameRepostorySearcher JenaMySQLSearcher JenaMemoryMySQLSearcher Počet položek v odpověd Graf Na grafu jsou zaneseny časy, které potřeboval prahový algortmus pro získání dat. Algortmy pracující s relační databází jsou výrazně horší než ty, pracující s vrtuální databází v pamět. V případě relační databáze je Sesame třkrát horší než Jena, v případě vrtuální databáze v pamět je dokonce desetkrát horší. Zajímavé je, že př NRA algortmu se poměr časů pro získání dat obrací. Časy pro získání dat NRA Prahový algortmus Soubor MySQL Soubor MySQL Sesame Jena JenaMemory Tabulka Pro algortmus bez přímého přístupu se úložště použlo pouze na začátku pro provedení dotazu. V dalším běhu algortmu jsou jž výsledky u všech úložšť uloženy v pamět. Pro SesameSearcher a JenaMemorySearcher jsou uloženy v datové struktuře ArrayLst, v případě JenaSearcher to je vlastní úložště Jeny. Toto vlastní úložště je řádově třkrát pomalejší než přístup pomocí struktury ArrayLst. Prahový algortmus využívá úložště v průběhu algortmu pro přímý přístup. V případě vrtuálních databází v pamět je Sesame nyní řádově desetkrát horší než Jena. Jena poskytuje přímo funkc v Javě, která pro zadaný podmět a vlastnost vrátí předmět trojce. Sesame podporuje získávání dat pouze přes dotazy. Zpracování dotazu a jeho provedení zřejmě způsobuje daný rozdíl. V případě databáze MySQL je Sesame třkrát pomalejší, což s vysvětlujeme tím, že k databáz přstupuje přes server Apache, čímž se zpomaluje přístup Testování různých agregačních funkcí V této část budeme sledovat, jaký vlv má agregační funkce na rychlost algortmu. Zřejmě nejrychlej proběhne algortmus s více benevolentní agregační funkcí, např. maxmem než s více omezující funkcí, např. mnmem. Důvod je ten, že v případě mnma bude mít práh dlouho vysokou hodnotu, ale prvky typcky budou mít hodnotu malou alespoň jeden z atrbutů má většnou malé hodnocení. Naopak v případě maxma budou mít hned první prvky, které nalezneme, velm vysoké hodnocení

89 Budeme testovat následující agregační funkce: ) WeghtAverage vážený průměr hodnocení atrbutů. Váha -tého atrbutu je /(+) 2) EucldRater Eukldovská vzdálenost bodu, jehož souřadnce jsou hodnocení atrbutů objektu, od bodu [,,]. 3) Mnmum mnmum všech hodnocení atrbutů 4) Maxmum maxmum všech hodnocení atrbutů 5) Multplcaton součn hodnocení všech atrbutů Z těchto agregačních funkcí předpokládáme, že nejpomalejší bude mnmum a součn hodnocení. Obě dvě funkce př chybějícím hodnocení atrbutu dávají jako výsledek nulu. Z důvodu pomalost těchto dvou funkcí jsme použl testovací množnu o deset tsíc zdrojích a pět atrbutech. Pro testování jsme použl algortmus bez přímého přístupu, kombnovaný algortmus a prahový algortmus. An Fagnův an navní algortmus nezávsí na použté agregační funkc, jelkož nevyužívají hodnotu prahu. Nejprve se budeme zabývat algortmem bez přímého přístupu. Algortmus bez přímého přístupu Časy výpočtu pro NRA algortmus Čas výpočtu [ns] MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAv erage Počet položek v odpověd Graf Zde se potvrdl předpoklad, že mnmum a součn budou nejpomalejší. Maxmum je nejrychlejší. Graf je v logartmckém měřítku. Dále nás bude zajímat počet prozkoumaných řádek

90 2 000 Počet prozkoumaných řádek pro NRA algortmus Počet řádek MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAv erage Počet položek v odpověd Graf Na grafu vdíme, že nejvíce řádek potřeboval vážený průměr. Abychom zjstl, proč jsou mnmum a součn nejpomalejší přestože nemají nejvíce prozkoumaných řádek, musíme sledovat okamžk překročení prahu a nalezení odpověd. Překročení prahu pro NRA algortmus Číslo řádky Počet položek v odpověd Graf MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAv erage

91 Krok nalezení pro NRA algortmus Krok nalezení MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAv erage Počet položek v odpověd Graf Jelkož v kroku nalezení se mnmum a součn nejsou horší než vážený průměr, vysvětlení leží v hodnotě překročení prahu. Než je překročena hodnota prahu, musíme přdávat nově nalezené prvky, čímž se zpomaluje setřďování výsledků Čas setřídění TOPK Čas setřídění TOPK [ns] Počet položek v odpověd MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAv erage Graf Zde jž je patrná velká ztráta mnma a součnu oprot ostatním agregačním funkcím. Navíc př mnmu se bude mnoho hodnot objektů shodovat budou mít dlouho hodnocení nula. Proto ještě změříme, jak dlouho trvá porovnávání horních ohodnocení prvků

92 Čas porovnávání horních ohodnocení Čas porovnávání horních ohodnocení [ns] MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAverage Počet položek v odpověd Graf V tomto grafu je jž zřejmé, že problém mnma a součnu leží př porovnávání horních ohodnocení prvků se stejným dolním ohodnocením. Tato operace je poměrně drahá, jelkož se musí znovu počítat znovu celé hodnocení. Ostatní agregační funkce v podstatě čas na tuto čnnost nepotřebují, nebo je o několk řádů menší. Prahový algortmus Nyní otestujeme agregační funkce na prahovém algortmu Časy výpočtu pro prahový algortmus Čas výpočtu [ns] MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAv erage Počet položek v odpověd Graf Vdíme, že rozdíl v časech jž není tak markantní. Zde velm vybočuje maxmum, které je typcky nejrychlejší. Malý rozdíl mez zbylým agregačním funkcem je dán tím, že prahový algortmus zjšťuje hned všechny atrbuty objektu, není zde tedy rozdíl mez dolním a horním ohodnocením

93 Kombnovaný algortmus Časy výpočtu pro kombnovaný algortmus Čas výpočtu [ns] MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAv erage Počet položek v odpověd Graf U kombnovaného algortmu je menší rozdíl mez mnmem a součnem a ostatním agregačním funkcem. Pro malé k jsou časy velm podobné, se zvyšujícím k se zvětšuje rozdíl časů Počet prozkoumaných řádek pro kombnovaný algortmus Počet řádek MaxmumRater MnmumRater MultplcatonRater EucldRater WeghtAv erage Počet položek v odpověd Graf V počtu prozkoumaných řádek se pro malé k skoro shodují všechny agregační funkce krom maxma. Pro velká k jž vdíme některé sngulární případy u mnma (k=2500 a k=5000). Opět největší díl času zabírá pro součn a mnmum porovnávání záznamů se stejným dolním ohodnocením. Pro ostatní agregační funkce je to čas přímého přístupu

94 0.8. Testování různých heurstk V této část otestujeme heurstky popsané v [GLV]. Jde o heurstky pro prahový algortmus, které snžují počet prozkoumaných řádek. SmpleColumnFnder vybírá postupně všechny sloupce tak, aby počet prozkoumaných řádek byl v každém sloupc stejný. DervatonInPontFnder určuje následující sloupec podle parcální dervace agregační funkce. Dervace se počítá v bodě defnovaném prahem v daném sloupc. DervatonInDataFnder hledá sloupec s největším dervací v datech. Dervace se počítá jako rozdíl hodnocení aktuálního prvku v seznamu a hodnocení prvku, který byl vděn před h kroky. Tento rozdíl je poté vynásoben dervací agregační funkce jako v DervatonInPontFnder. Nakonec SwtchngDervatonFnder střídá oba výše zmíněné přístupy Časy výpočtu heurstk Čas výpočtu [ns] Počet položek v odpověd SmpleColumnFnder DervatonInPontFnder Sw tchngdervatonfnder DervatonInDataFnder Graf Z grafu je patrné, že všechny heurstky jsou lepší než paralelní přístup, řádově o patnáct procent. Mez sebou se ovšem výrazně nelší. Počet řádek Počet prozkoumaných řádek heurstk SmpleColumnFnder DervatonInPontFnder Sw tchngdervatonfnder DervatonInDataFnder Počet položek v odpověd Graf An v počtu řádek se heurstky nelší. Oprot [GLV] jsme tedy nezjstl výraznější rozdíl mez vlvem heurstk. To je zřejmě způsobeno použtím vygenerovaných testovacích dat. V [GLV] byla použta množna reálných dat, kde se v každém z parametrů mohlo lšt např. rozložení hodnot. V dalším studu by mohlo být přínosné porovnat data nebo mplementace algortmů. Výsledky jednotlvých heurstk se v [GLV] lší velm výrazně

95 0.9. Testování heurstky MssngValuesFnder Nyní zkusíme pro NRA algortmus použít heurstku MssngValuesFnder. Tu jsme mplementoval ve dvou verzích, které se lší svým chováním v případě, že v TOPK nejsou žádné chybějící hodnoty. Obě verze využívají jnou heurstku, MssngValuesFnder používá DervatonInPontFnder a MssngValuesDataFnder používá DervatonInPontFnder. Použjeme opět pět atrbutů a sto tsíc zdrojů, celkem pět set tsíc trojc. Testování heurstky ukázalo, že není vhodné procházet celý seznam TOPK, ale pouze posledních h. Po testování různých hodnot h jsme j stanovl na 0. Dále se ukázalo jako vhodnější uvažovat ndex posledního prvku s prázdnou hodnotou místo sčítání ndexů všech prvků s prázdnou hodnotou nebo uvažování počtu prvků s prázdnou hodnotou. Ze všech rozložení hodnot se heurstka nejlépe projevla na rovnoměrném rozložení. Časy výpočtu Čas výpočtu [ns] SmpleColumnFnder MssngValuesFnder MssngValuesDataFnder Počet položek v odpověd Graf Zajímavější je statstka počtu prozkoumaných řádek. Počet prozkoumaných řádek Počet prozkoumaných řádek SmpleColumnFnder MssngValuesFnder MssngValuesDataFnder Počet položek v odpověd řádek Graf Zde je vdět, že heurstky MssngValues mají mnohem pozvolnější nárůst počtu

96 Na závěr testování heurstky MssngValuesFnder musíme podotknout, že míra zrychlení algortmu klesala s tím, jak se zrychloval samotný algortmus. Tento postup je rozebrán v kaptole Problémy testování Testování top-k algortmu má několk úskalí, která jsme jž dříve naznačl. Největší úskalí je absence třídění. Sesame třídění nepodporuje vůbec, Jena sce ano, ncméně je mplementováno jako třídění výsledků v pamět. Obě mplementace nejsou v souladu s myšlenkou top-k algortmu - setříděným seznamy, ke kterým lze přstupovat sekvenčně. Proto je lepší nterpretovat výsledky spíše vzhledem k počtu prozkoumaných řádek. To je údaj, který se nemění s použtou technologí uložení dat. Naopak čas výpočtu je na použté technolog slně závslý, jak bylo potvrzeno v testu 0.6 Testování RDF databází. Nakonec je potřeba zmínt potřebu správně analyzovat data a vybrat vhodné heurstky před vlastním nasazením algortmu. S tím je spojen problém agregačních funkcí, které se mohou měnt v čase. Spolu se změnou agregační funkce může být spojena změna deálního algortmu. 0.. Závěr kaptoly Porovnal jsme jednotlvé mplementace top-k algortmů jejch heurstk na různých rozložení hodnot v datech. Zjstl jsme, že pro velká k je nejrychlejší navní algortmus, pro malá k potom lze s úspěchem použít kombnovaný algortmus. Doba výpočtu algortmů radkálně závsí na použté agregační funkc. Nalezl jsme také výkonnostní rozdíly mez RDF databázem Sesame a Jena. V dalším výzkumu by bylo vhodné zjstt rozdíly v datech a mplementacích algortmů a heurstk prot [GLV]

97 . Aplkace pro výběr výletních lokalt Potlatch.. Motvace Vytvoření aplkace pro výběr výletních lokalt Potlach bylo motvováno potřebou turstckého oddílu evdovat své výlety. Evdence výletů měla sloužt pro podporu rozhodování během výběru lokalty příštího výletu. Bylo potřeba uchovávat nformace o tom, jak se kterému členov oddílu na výletě líblo, stejně tak obecné nformace o výletu jaké bylo počasí a kdo se ho účastnl. V této aplkac je využta teore z kaptoly 7.4 o více užvatelských hodnoceních. Jsou zde mplementovány oba přístupy pro počítání optmálního místa pro výlet. Dále je použta metoda pro generování užvatelských hodnocení atrbutů na základě ohodnocení výletu. Aplkace je postavena nad databází Sesame, která umožňuje snadné přpojení více užvatelů přes nternet pomocí serveru Apache. Scénář použtí se týká dvou stuací zadávání hodnocení a použtí aplkace pro hledání výletu. Zadávání hodnocení bude probíhat hned po návratu z výletu. Admnstrátor (vedoucí) oddílu založí výlet v aplkac a přřadí mu správné atrbuty. Ostatní členové potom tento výlet ohodnotí. Všchn pracují z domova, což zajšťuje lepší věrohodnost hodnocení, než kdyby hodnocení probíhalo veřejně na schůzce. Hledání optmálního místa výletu by mělo probíhat tak, že se vytvoří vrtuální výlet s očekávaným parametry. Těmto parametry jsou počasí, účastníc výletu apod. V deálním případě by s systém některé hodnoty mohl zjstt sám. Na základě zadaných parametrů systém potom dohledá deální výletní lokaltu. Tento způsob ovšem vyžaduje jný přístup než použtí top-k algortmu. Jde vlastně o úlohu dolování znalostí z dat. Proto tento způsob opomíjíme a ponecháváme dalšímu zkoumání. Budeme zde mplementovat přímý způsob, kdy se lokalta hledá na základě užvatelského hodnocení atrbutů místa výletu, tedy stuac, kdy se využívá algortmus top-k. Zde je použta teore z kaptoly 7.4, tedy hledání optmálního objektu vzhledem k preferencím více užvatelů..2. Ontologe Tato aplkace využívá vytvořenou ontolog výletních míst. Zčást jsme s tuto ontolog přblížl v předchozím textu, celá je v příloze a na přloženém CD. Zde musíme zmínt jazykovou problematku. Z důvodu meznárodnost jsme psal ontolog v anglckém jazyce. Ovšem po ohlasech z řad turstů, kteří nejsou všchn anglcky mluvící, jsme se rozhodl ontolog přepsat do češtny. Ontologe obsahuje všechny potřebné třídy a vlastnost, na některé jsme v průběhu práce narazl. Dále obsahuje několk omezení na třídy a několk defnovaných tříd, jako např. zmíněné slunečné výlety. Ontologe byla vytvořena v programu Protégé, ve kterém byla naplněna počáteční sadou ndvduí..3. Užvatelské rozhraní Užvatelské rozhraní je navrženo funkčně, bez zbytečných okras. Po startu programu užvatel zadá své jméno a heslo

98 .3... Obrazovka Poté vykoná vlastní hodnocení výletu, případně dalších atrbutů Obrazovka Hodnocení se zadává v dolní lště, kde s nejdříve užvatel vybere výlet, který chce hodnott a poté posuvníkem vpravo vybere hodnocení. Čím více vlevo, tím je hodnocení horší, čím více vpravo, tím lepší. Toto řešení je pro užvatele příjemnější než zadávat hodnocení číselně. Navíc v tabulce nad spodní lštou vdí jž dříve hodnocené výlety, takže hodnocení nového výletu k nm může vztáhnout Obrazovka Také s zde může změnt své heslo. Hesla jsou zakódována pomocí algortmu MD5 a uložena přímo v RDF databáz Obrazovka Admnstrátorský režm umožňuje kromě přdávání vlastních hodnocení také vyváření nových ndvduí tříd a modfkovat exstující. Navíc má admnstrátor možnost zjstt deální výletní místo pomocí dvou výše zmíněných způsobů

99 .3.2. Admnstrátorská záložka Zajímavou funkcí je tzv. admnstrátorská záložka. Umožňuje v admnstrátorském režmu přdávat nové entty a modfkovat exstující. Zde se využívá vytvořená ontologe výletních míst Obrazovka První krok k vytvoření nové entty je vybrat, do jaké třídy bude náležet. Zvolená třída se vybere z rozbalovacího menu, kde je seznam tříd v ontolog Obrazovka Pokud chceme přdat nový objekt, vyplníme jeho název a stskneme tlačítko "Přdej nový objekt". menu Obrazovka Pokud chceme upravt stávající objekty, uděláme to pomocí horních rozbalovacích Obrazovka V nch nejdříve vybereme ndvduum ze třídy

100 Obrazovka Dále vlastnost, kterou má mít Obrazovka Nakonec zvolíme předmět vlastnost. Nakonec trojc přdáme tlačítkem "Přdej". Jelkož se typ předmětu může měnt, mění se komponenta, pomocí které se zadává. Buď jde o vlastnost, jejíž předmět je nějaký zdroj a pak se možné zdroje zobrazí v rozbalovacím menu. Pokud je to řetězec, vstup je klascké zadávací pole pro text. Čas a datum má specální zadávací pole, které je formátováno jako datum. Pokud chceme nějakou trojc smazat, vybereme j ze seznamu nahoře a zmáčkneme klávesu Delete. Po potvrzení užvatelské hlášky bude trojce smazána z RDF databáze Obrazovka Jedný problém v tomto typu aplkací je nedostatečná kontrola úložště. Chtěl bychom, aby se př přdávání trojce automatcky kontrolovala omezení kladená na třídy a

101 vlastnost. Např. by bylo vhodné, aby užvatel nemohl hodnott vícekrát stejný objekt. Vyzkoušel jsme úložště [KIM], které by mělo provádět odvozování pro OWL, ncméně se ukázalo jako nefunkční - potřebujeme přímou zpětnou vazbu po přdání trojce. Kontrolovat konzstenc celého úložště po každé operac je nemožné. Problém kontroly OWL je krtcký hlavně pro omezení vlastností, které mají být funkční. Bez této kontroly může užvatel zadat více hodnocení jednomu zdroj nebo přřadt užvatel více křestních jmen apod..4. Implementace Užvatelské rozhraní se skládá ze záložek, kde jdou přdávat preference. Tyto záložky jsou defnované v souboru settngs.xml, kde navíc jsou názvy klíčových tříd a vlastností pro top-k algortmus a manpulac s užvatelským preferencem. Ukážeme s příklad pro ontolog výletních míst <Path>mem-rdfs-db</Path> <Namespace> <UserClassName>Člověk</UserClassName> <SuperRatngPredcate>preference</SuperRatngPredcate> <SuperComputedRatngPredcate>vypočtenéPreference</SuperComputedRatngPredcate> <UserRatngPredcate>máPreferenc</UserRatngPredcate> <UserComputedRatngPredcate>máVypočtenouPreferenc</UserComputedRatngPredcate> Defnuje se zde název úložště Sesame, typcký jmenný prostor ontologe, třída, která obsahuje užvatele aplkace. Dále je to vlastnost, která je nadvlastností všech užvatelských hodnocení, nadvlastnost všech vypočtených hodnocení, vlastnost, která spojuje užvatele s jeho hodnocením a nakonec vlastnost, která spojuje užvatele s jeho vypočteným hodnocením. V defnc jedné záložky potom fgurují tyto vlastnost. <Page name="výlety" number=""> <Namespace> <TypeOfPage>EdtRDFSesamePanel</TypeOfPage> <TypeOfEntty> <InducedType> <InducedClasses> <InducedClass> <InducedClass> <InducedClass> </InducedClasses> <InducedPredcates> <InducedPredcate> <InducedPredcate> <InducedPredcate> </InducedPredcates> <ColumnNames> <ColumnName>Výlet</ColumnName> <ColumnName>Název hodnocení</columnname> <ColumnName>Hodnocení</ColumnName> </ColumnNames> </Page>

102 Tato struktura defnuje všechny potřebné údaje pro zobrazení záložky - název záložky, pořadí, jmenný prostor, typ záložky. Typ může být SmpleEdtRDFSesamePanel, EdtRDFSesamePanel nebo VaryngEdtRDFSesamePanel. První povoluje pouze přdávání hodnocení, druhý typ dovoluje přdávání nových entt a poslední je Admnstrátorská záložka, která je popsaná výše. Poslední položka určuje názvy sloupců v tabulce. Dále je zaznamenána třída, ze které se budou zobrazovat hodnocené entty. Další položka je třída, ke které chceme vypočítávat hodnocení. Tento mechansmus využívá třídy a vlastnost defnované ve značkách InducedClasses a InducedPredcates. Postupuje se takto - změníme hodnocení Výletu X. Nalezneme lokaltu Y, která je s výletem spojená a za pomocí defnovaných vlastností a tříd vypočítáme vypočtené hodnocení lokalty Y. Toto hodnocení zapíšeme do databáze. Aplkace umožňuje defnovat pouze jednu třídu, ke které se bude defnovat vypočtené hodnocení. V deálním případě by součástí aplkace byla nformace o každé třídě a o vlastnostech a třídách, které jsou použté př počítání vypočtené preference. U každé třídy bychom tedy hned věděl, jaké třídy použít pro vypočtení preference. Tyto nformace by bylo vhodné uložt do jného souboru, ale to je jž mmo mplementační rámec této práce..5. Závěr kaptoly Aplkace Potlatch byla vytvořena jako jednoduché užvatelské prostředí pro zadávání preferencí s některým vylepšením, zvláště co se týče příjemnost zadávání hodnocení pro užvatele. Po zadání dostatečného množství hodnocení může být použta jako prostředek pro skupnové rozhodování o místě výletu, použtém dopravním prostředku, jídelníčku na výlet apod. Díky rozmachu přpojení k nternetu není zadávání hodnocení velký problém, navíc pomocí teore z kaptoly 7.2 se nám podařlo omezt počet zadávaných hodnocení na mnmum

103 2. Ukázková aplkace obecného nástroje pro Cocoon Na závěr s ukážeme snadnost, jak lze nástroj Xoda použít v prax. Navrhneme nternetovou aplkac pro hledání výletních lokalt. Hledat se bude podle stupně nebezpečnost, pohodlí pro spaní a rozdělávání ohně a nakonec podle stupně ochrany lokalty. Aplkace pracuje na platformě Cocoon, která zabezpečuje předávání parametrů zadaných v prohlížeč. Dále potom umožňuje řetězt za sebe jednotlvé komponenty. První část řetězce má za úkol vytvořt data, která bude výsledná stránka obsahovat. To bude úkol SesameGeneratoru. Integrac SesameGeneratoru do Cocoonu popsuje příloha 2. Další komponenty poté upravují výsledek. Vývoj těchto modulů je ovšem jž práce spíše pro návrháře vzhledu webových stránek. 2.. Webovské rozhraní Navrhnuté rozhraní je vyřešeno funkčně. Dají se zadat váhy jednotlvých atrbutů, normalzátory a případná deální hodnota atrbutu. Hodnoty lze setřídt buď sestupně, vzestupně nebo zadat deální hodnotu atrbutu. Poslední možnost má smysl např. př hledání výrobků s danou cenou, pozemků s určtou rozlohou apod. V těchto případech jsou přílš velké hodnoty špatné, ale moc malé hodnoty jsou také špatné. Toto rozhraní by šlo jstě v mnoha aspektech vylepšt po stránce desgnu, to ovšem není cílem této práce. Po odeslání požadavku se zadané parametry předají do třídy SesameGenerator. Ta je zpracuje a spustí top-k algortmus, který seřadí byty podle zadaných krtérí. Pro vlastní nastavení a spuštění top-k algortmu je v kódu potřeba cca. dvacet řádek Výstup SesameGeneratoru Na platformě Cocoon komponenty mez sebou komunkují pomocí XML souborů. Proto výstup SesameGeneratoru je XML soubor, který obsahuje entty nalezené top-k algortmem. Ideálně by tento XML soubor zpracoval další článek řetězce procesů, tzv. transformátor. Ten by mohl výsledky prezentovat např. v tabulce nebo jné struktuře pro užvatele příjemnější než je XML strom

104 3. Závěr V naší prác jsme po prostudování vícehodnotové logky a vícehodnotových logckých programů navrhl dva způsoby zápsu těchto logckých programů do RDF. Jeden způsob je ryze syntaktcký, kdy doslovně přepsuje pravdla fakty, druhý lze použít na stávající RDF data, kde se exstující trojce nterpretují jako fakty. Toto zavedení vícehodnotové logky do RDF zatím nebylo nkde specfkováno. RuleML je záps dvouhodnotových pravdel do XML a náš záps se dá na RuleML převést př vypuštění vícehodnotovost. Tímto jsme splnl jeden z hlavních cílů této práce. Užvatelské preference jsou komplexní problematka, které jsme věnoval více místa. Přblížl jsme s užvatelské fuzzy funkce a dva druhy přístupů př jejch nterpretac. Probral jsme tř modely, které umožňují získat užvatelská hodnocení objektů, u kterých hodnocení chybí. Proces využívá hodnocení ostatních ndvduí, která jsou spojená s dosud nehodnoceným objekty. Dále jsme navrhl způsob počítání váhy určtého atrbutu v agregac př hodnocení komplexních objektů. Tento způsob je relevantní, pokud se omezíme na agregac váženým průměrem, v ostatních případech může dávat pouze přblžné výsledky. Vyšl jsme z hodnocení jednoho užvatele, rozšířl jsme problematku na preference více užvatelů, zvláště pak na hledání skupnového kompromsu. Uvedl jsme dva přístupy počítání kompromsu, které se vhodně dají převést na teor K. J. Arrowa. Arrowův model jsme obohatl o číselné hodnocení kanddátů a také o jejch atrbuty. Použl jsme příklad z volebního prostředí, který vhodně lustruje oba dva různé přístupy volby. Užvatelské preference a specálně skupnové rozhodování bylo další klíčovým tématem. Pro generování hodnocení komplexního objektu na základě hodnocení jeho atrbutů a agregační jsme vycházel z jž exstující lteratury. Algortmus top-k jsme rozděll na více částí a vytvořl jsme nástroj Xoda, který je nezávslý na použté databáz, agregační funkc a užvatelských fuzzy funkcích. Tím je zajštěna maxmální obecnost a jednoduchost jeho nasazení v různých prostředích. Vytvoření Xody umožňuje aplkac top-k algortmu v lbovolné doméně, např. př mplementac vyhledávacího stroje. To je další přínos, nyní po praktcké stránce. Namplementoval jsme algortmy popsané v [FLN] a vylepšl jsme algortmus bez přímého přístupu. Tím jsme radkálně zrychll jeho čas výpočtu oprot přímé mplementac algortmu tak, jak je popsán v [FLN]. Jednotlvé algortmy jsme poté testoval na testovacích RDF datech. Zkoumal jsme také vlv rozložení hodnot v atrbutech, agregační funkce nebo použtí relační databáze pro uložení dat. Také jsme porovnal systém Sesame a Jena. Nakonec jsme vytvořl aplkac Potlatch, která slouží k hodnocení výletů turstckého oddílu. V této aplkac je využta teore z kaptoly 7., která umožňuje generování užvatelských hodnocení a skupnové rozhodování. Dále jsme vytvořl několk tříd, které usnadňují manpulac s užvatelským preferencem a ukládání užvatelských fuzzy funkcí. Potlatch je ukázkovou aplkací, která využívá ontolog, pro užvatelsky příjemnou prác s daty. Systém sám nabízí možné vlastnost a předměty tak, aby výsledná trojce odpovídala ontolog. Apache Cocoon umožňuje snadné použtí tříd jazyka Java pro tvorbu nternetových stránek. Vytvořl jsme SesameGenerator, který provádí top-k algortmus a výsledné objekty vrací jako XML soubor. SesameGenerator využívá Xodu, čímž se jeho mplementace radkálně zjednodušla a zredukovala se v podstatě na oddělení parametrů. Systém Xoda lze využít př lbovolném vícekrterálním hledání na nternetu nebo v expertních systémech. Obecnost v defnc třídy DataSearcher umožňuje dynamcké získávání dalších dat z nternetu v průběhu algortmu a to z nejrůznějších zdrojů

105 4. Bblografe [FLN] [SESAME] [JENA] [URI] [ECONNECTIONS] [GALEN] [TRAVEL] [PROTEGE] [SWOOP] [PELLET] [GLV] [FILMTRUST] [BKS] [KIM] [RULEML] [VANEKOVA] [GEANAKOPLOS] [WIKIPEDIA] [LP] [W3C] [RDFRULEML] [DL] [SOCIALCHOICE] Ronald Fagn, Amnon Lotem, Mon Naor. Optmal Aggregaton Algorthms for Mddleware. Extended abstract appeared n Proc. Twenteth ACM Symposum on Prncples of Database Systems, 200 (PODS 200), pp RFC Unform Resource Identfers (URI):Generc Syntax, T. Berners-Lee, R. Feldng and L. Masnter, IETF, August actoredtravel/ P. Gurský, R. Lencses, P. Vojtáš. Algorthm for User Dependent Integraton of Ranked Dstbuted Informaton. Stephan Börzsöny, Donald Kossmann, Konrad Stocker. The Skylne Operator. Veronka Vaněková. Dopytovane nad RDF dátam s užívatelskou preferencou.dplomová práce 2006 John Geanakoplos. Three bref proofs of Arrow's mpossblty theorem. New Haven, Connectcut, Přednáška Preferenční dotazování DBI02 prof. Vojtáše na Matematcko-Fyzkální fakultě Unverzty Karlovy Kenneth J. Arrow. Socal Choce and Indvdual Values. Cowles Foundaton for research n economcs at Yale Unversty,

106 Přílohy. Ontologe výletních míst Ontologe je uložená na přloženém CD v adresář rdf/ontologe. Jsou zde obě verze - česká anglcká. Otevřít jdou v programech SWOOP nebo Protégé. Třídy Vlastnost Název třídy Pops třídy TrpLocaton Místa, kam se dá jezdt na výlety Trp Výlety Terran Terén místa výletu Transport Dopravní prostředek WeatherCondtons Počasí Shop Obchod Cty Město v lokaltě Country Země Food Jídlo FoodMenu Jídelníček sestávající se z jídel FrequencyOfWaterSources Četnost zdrojů vody v lokaltě Human Účastníc výletu, členové skupny Hlavní dvě třídy jsou Trp, reprezentující výlety a TrpLocaton, reprezentující místa, kam se dá jezdt na výlety. Na schématu je zobrazena celá struktura základních tříd, které jsou provázané vlastnostm. Pokud je třída vnořena do jné, znamená to, že vntřní třída je podtřídou vnější. Pro přehlednost jsou podtřídy pouze tam, kde je to nezbytné. Další podtřídy s ukážeme dále. Nyní s ukážeme podtřídy jednotlvých tříd

107 Schéma znázorňuje podtřídy třídy Terran. Máme městský terén, louky, vodní terény, které se dále dělí na řeky, potoky, prameny a vodní plochy, lesy a hory. Lesy se dělí na jehlčnaté, lstnaté a smíšené. Ty se dále dělí podle převládajícího druhu stromu v lese. Horský terén se dělí podle výšky a stáří hor. Hory jsou rozděleny na staré a mladé, vysoké, nízké a středně vysoké. Každá z těchto tříd má dále podtřídu z druhého parametru - např. vysoké hory mají podtřídy vysoké a staré hory a vysoké a mladé hory. Schéma znázorňuje podtřídy třídy Transport

108 Jídelníček se dělí na podtřídy podle doby, na kterou jídelníček plánuje jídlo. Jednotlvé podtřídy mají omezení - jídelníček na jeden den nesmí obsahovat žádná jídla, kde je nutné vaření, jsou povolena pouze jídla bez přípravy. Jídelníček na celý týden musí obsahovat alespoň tř jídla a některé z jídel musí být tepelně zpracované. Jídla se dělí podle způsobu přípravy - jídla bez přípravy, surovny na vaření, pečená, smažená a vařená jídla

109 2. Konfgurace SesameGeneratoru pro Apache Cocoon Pro používání SesameGeneratoru v systému Cocoon musíme nejdříve samotný Cocoon nanstalovat do cesty %COCOON%. Poté do adresáře %COCOON%\buld\webapp\WEB-INF\classes\ nakopírujeme SesameGenerator.class. Do adresáře %COCOON%\buld\webapp\WEB-INF\lb\ nahrajeme přložené.jar soubory Sesamu a xoda.jar. Dále v souboru %COCOON%\buld\webapp\stemap.xmap přdáme řádek <map:generator name="sesamegenerator" src="sesamegenerator"/> tak, aby byl obsažen ve značce <map:generators> Nakonec do značky <map:ppelnes> vložíme řádky <map:match pattern="sesametrps.xml"> <map:generate type="sesamegenerator"/> <map:seralze type="xml"/> </map:match> čímž přřadíme pro soubor sesametrps.xml generátor SesameGenerator. To znamená, že pří požadavku souboru sesametrps.xml na server Apache se použje generátor SesameGenerator a jeho výsledky budou zpracované standardním seralzátorem pro XML soubory. Pokud bychom chtěl výsledky ještě nějak upravt, musel bychom zadefnovat nový Transformer a Seralzer. Poté když se př psaní formuláře HTML odkážeme na zdroj formuláře pomocí řádky <FORM METHOD=GET ACTION=" předají se vyplněné parametry do SesameGeneratoru. Parametry by měly mít tuto strukturu - ) váha vlastnost má tvar property#názevvlastnost 2) použté uspořádání domény vlastnost má tvar propertynormalzer#názevvlastnost 3) pokud se použlo OnePeakOrderng, zadaná deální hodnota má tvar propertypeak#názevvlastnost 4) počet položek ve výsledku se zadává parametrem K 5) třída, kterou hledáme, se zadává parametrem Type SesameGenerator s načte nejdříve konfgurační soubor a z něj získá typcké hodnoty. Tyto hodnoty mohou být přepsány pomocí parametrů zadaných na formulář (K je typcky 0, na formulář lze zadat např. ). Tento souboru je uložen v %COCOON%\buld\webapp\resources\settngs.xml SesameGenerator používá standardně Sesamovské úložště v Apache Tomcat, SesameGenerator lze ovšem nakonfgurovat pro čtení dat ze souboru. Příklad HTML stránky je na přloženém CD v adresář programy/vytvorene/sesamegenerator/txt

110 3. Konfgurace Apache Tomcat a Sesamu Nejdříve nanstalujeme Apache Tomcat. V podadresář webapps vytvoříme adresář sesame, kam nakopírujeme obsah sesame.war. Tento archv umí otevřít např. Total Commander. V adresář sesame/web-inf je soubor system.conf, kde se nachází konfgurace jednotlvých úložšť. Po spuštění služby Tomcat se můžeme k Sesamu přpojt přes nternetový prohlížeč zadáním adresy Toto rozhraní umožňuje provádět základní operace nad jednotlvým úložšt - přdání souborů, provádění dotazů nebo mazání obsahu. Pro úpravy úložště se nejprve musíme k Sesamu přhlást. Standardní přhlašovací jméno je testuser, heslo je opensesame. Užvatelé a hesla se defnují v souboru system.conf. Pokud budeme chtít využívat Sesame s databází, např. MySQL, musíme tuto databáz nanstalovat a vytvořt užvatele Sesame s dostatečným právy. Postup je blíže rozepsán na

111 4. RDFS popsující vícehodnotový logcký program Vlastní RDFS je umístěno na CD v adresář rdf/ontologe. Zde s ukážeme schémata vlastností, tedy jejch defnční obory a obory hodnot. Nejdříve vlastnost <rdf:_> a <rdf:_2>, které hrají rol u konjunktorů, agregačních operátorů a predkátů. Vlastnost <rdf:_3>.. <rdf:_x> hrají rol pouze u agregačních operátorů Dále vlastnost pro pravdla <mvlp:head> a <mvlp:body>

112 A nakonec vlastnost pro hodnocení a vypočtené hodnocení Bohužel RDFS nedovoluje zapsovat nové axomy, které jsme nadefnoval v kaptole 6. Tyto požadavky bude muset kontrolovat program na vyšší úrovn. - -

Iterační výpočty. Dokumentace k projektu pro předměty IZP a IUS. 22. listopadu projekt č. 2

Iterační výpočty. Dokumentace k projektu pro předměty IZP a IUS. 22. listopadu projekt č. 2 Dokumentace k projektu pro předměty IZP a IUS Iterační výpočty projekt č.. lstopadu 1 Autor: Mlan Setler, setl1@stud.ft.vutbr.cz Fakulta Informačních Technologí Vysoké Učení Techncké v Brně Obsah 1 Úvod...

Více

Formální systém výrokové logiky

Formální systém výrokové logiky Formální systém výrokové logiky 1.Jazyk výrokové logiky Nechť P = {p,q,r, } je neprázdná množina symbolů, které nazýváme prvotní formule. Symboly jazyka L P výrokové logiky jsou : a) prvky množiny P, b)

Více

LOGICKÉ OBVODY J I Ř Í K A L O U S E K

LOGICKÉ OBVODY J I Ř Í K A L O U S E K LOGICKÉ OBVODY J I Ř Í K A L O U S E K Ostrava 2006 Obsah předmětu 1. ČÍSELNÉ SOUSTAVY... 2 1.1. Číselné soustavy - úvod... 2 1.2. Rozdělení číselných soustav... 2 1.3. Polyadcké číselné soustavy... 2

Více

SIMULACE. Numerické řešení obyčejných diferenciálních rovnic. Měřicí a řídicí technika magisterské studium FTOP - přednášky ZS 2009/10

SIMULACE. Numerické řešení obyčejných diferenciálních rovnic. Měřicí a řídicí technika magisterské studium FTOP - přednášky ZS 2009/10 SIMULACE numercké řešení dferencálních rovnc smulační program dentfkace modelu Numercké řešení obyčejných dferencálních rovnc krokové metody pro řešení lneárních dferencálních rovnc 1.řádu s počátečním

Více

Matematická logika cvičení

Matematická logika cvičení Matematcká logka cvčení Vlém Vychodl Abstrakt Následující dokument obsahuje řešené příklady a cvčení k předmětu Matematcká logka. Pro zvládnutí cvčení je nutné mít zažté základní pojmy, které můžete nalézt

Více

Čísla a aritmetika. Řádová čárka = místo, které odděluje celou část čísla od zlomkové.

Čísla a aritmetika. Řádová čárka = místo, které odděluje celou část čísla od zlomkové. Příprava na cvčení č.1 Čísla a artmetka Číselné soustavy Obraz čísla A v soustavě o základu z: m A ( Z ) a z (1) n kde: a je symbol (číslce) z je základ m je počet řádových míst, na kterých má základ kladný

Více

Výroková logika - opakování

Výroková logika - opakování - opakování ormální zavedení Výroková formule: Máme neprázdnou nejvýše spočetnou množinu A výrokových proměnných. 1. Každá proměnná je výroková formule 2. Když α, β jsou formule, potom ( α), (α β), (α

Více

Dále budeme předpokládat, že daný Markovův řetězec je homogenní. p i1 i 2

Dále budeme předpokládat, že daný Markovův řetězec je homogenní. p i1 i 2 4 Markovovy řetězce se nazývá Markovův řetě- Defnce 7 Posloupnost celočíselných náhodných velčn {X n } zec (markovský řetězec), jestlže P(X n+ = j X n = n,, X 0 = 0 ) = P(X n+ = j X n = n ) (7) pro každé

Více

Logické programy Deklarativní interpretace

Logické programy Deklarativní interpretace Logické programy Deklarativní interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 7 1 Algebry. (Interpretace termů) Algebra J pro jazyk termů L obsahuje Neprázdnou

Více

6. blok část C Množinové operátory

6. blok část C Množinové operátory 6. blok část C Množinové operátory Studijní cíl Tento blok je věnován problematice množinových operátorů a práce s množinovými operátory v jazyce SQL. Čtenáři se seznámí s operátory, UNION, a INTERSECT.

Více

MATEMATICKÁ TEORIE ROZHODOVÁNÍ

MATEMATICKÁ TEORIE ROZHODOVÁNÍ MTMTICKÁ TORI ROZODOVÁNÍ odklady k soustředění č. 3 ráce s neurčtostí Většna našch znalostí o reálném světě je zatížena ve větší č menší míře neurčtostí. Na druhou stranu, schopnost rozhodovat se v stuacích,

Více

RDF a RDF Query. Jakub Nerad 1. prosince Nerad () RDF a RDF Query 1. prosince / 16

RDF a RDF Query. Jakub Nerad 1. prosince Nerad () RDF a RDF Query 1. prosince / 16 RDF a RDF Query Jakub Nerad jakubnerad@gmail.com 1. prosince 2009 Nerad () RDF a RDF Query 1. prosince 2009 1 / 16 Součastnost Součastnost množství informací zpracování pomocí statistické analýzy problém

Více

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je 28 [181105-1236 ] 2.7 Další uzávěrové vlastnosti třídy regulárních jazyků Z předchozích přednášek víme, že třída regulárních jazyků je uzavřena na sjednocení, průnik, doplněk, zřetězení, Kleeneho operaci

Více

ANALÝZA VZTAHU DVOU SPOJITÝCH VELIČIN

ANALÝZA VZTAHU DVOU SPOJITÝCH VELIČIN ANALÝZA VZTAHU DVOU SPOJITÝCH VELIČIN V dokumentu 7a_korelacn_a_regresn_analyza jsme řešl rozdíl mez korelační a regresní analýzou. Budeme se teď věnovat pouze lneárnímu vztahu dvou velčn, protože je nejjednodušší

Více

2. Definice pravděpodobnosti

2. Definice pravděpodobnosti 2. Defnce pravděpodobnost 2.1. Úvod: V přírodě se setkáváme a v přírodních vědách studujeme pomocí matematckých struktur a algortmů procesy dvojího druhu. Jednodušší jsou determnstcké procesy, které se

Více

Matematická logika. Miroslav Kolařík

Matematická logika. Miroslav Kolařík Matematická logika přednáška třetí Miroslav Kolařík Zpracováno dle textu R. Bělohlávka: Matematická logika poznámky k přednáškám, 2004. a dle učebního textu R. Bělohlávka a V. Vychodila: Diskrétní matematika

Více

Numerická matematika 1. t = D u. x 2 (1) tato rovnice určuje chování funkce u(t, x), která závisí na dvou proměnných. První

Numerická matematika 1. t = D u. x 2 (1) tato rovnice určuje chování funkce u(t, x), která závisí na dvou proměnných. První Numercká matematka 1 Parabolcké rovnce Budeme se zabývat rovncí t = D u x (1) tato rovnce určuje chování funkce u(t, x), která závsí na dvou proměnných. První proměnná t mívá význam času, druhá x bývá

Více

Mirko Navara, Petr Olšák. Základy fuzzy množin. Praha, 2001

Mirko Navara, Petr Olšák. Základy fuzzy množin. Praha, 2001 Mrko Navara, Petr Olšák Základy fuzzy množn Praha, 2001 E Text je šířen volně podle lcence ftp://math.feld.cvut.cz/pub/olsak/fuzzy/lcence.txt. Text ve formátech TEX (csplan), Postcrpt, dv, PDF najdete

Více

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech 1. července 2008 1 Funkce v R n Definice 1 Necht n N a D R n. Reálnou funkcí v R n (reálnou funkcí n proměnných) rozumíme zobrazení

Více

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ Abecedou se rozumí libovolná konečná množina Σ. Prvky abecedy nazýváme znaky (symboly) Slovo (řetězec) v nad abecedou Σ je libovolná konečná posloupnost znaků této abecedy. Prázdné posloupnosti znaků odpovídá

Více

Vkládání pomocí Viterbiho algoritmu

Vkládání pomocí Viterbiho algoritmu Vkládání pomocí Vterbho algortmu Andrew Kozlk KA MFF UK C Vkládání pomocí Vterbho algortmu Cíl: Využít teor konvolučních kódů. Motvace: Vterbho dekodér je soft-decson dekodér. Každému prvku nosče přřadíme

Více

Konstrukce zásobníkového automatu LALR(1)

Konstrukce zásobníkového automatu LALR(1) Konstrukce zásobníkového automatu LALR(1) Vlém Vychodl 5. lstopadu 2001 Tento text se zabývá technckým aspekty konstrukce významné třídy zásobníkových automatů určených pro determnstckou syntaktckou analýzu

Více

Mirko Navara, Petr Olšák. Základy fuzzy množin. Praha, 2001, 2002

Mirko Navara, Petr Olšák. Základy fuzzy množin. Praha, 2001, 2002 Mrko Navara, Petr Olšák Základy fuzzy množn Praha, 2001, 2002 E Text je šířen volně podle lcence ftp://math.feld.cvut.cz/pub/olsak/fuzzy/lcence.txt. Text ve formátech TEX (csplan), Postcrpt, dv, PDF najdete

Více

2.5. MATICOVÉ ŘEŠENÍ SOUSTAV LINEÁRNÍCH ROVNIC

2.5. MATICOVÉ ŘEŠENÍ SOUSTAV LINEÁRNÍCH ROVNIC 25 MATICOVÉ ŘEŠENÍ SOUSTAV LINEÁRNÍCH ROVNIC V této kaptole se dozvíte: jak lze obecnou soustavu lneárních rovnc zapsat pomocí matcového počtu; přesnou formulac podmínek řeštelnost soustavy lneárních rovnc

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2015/2016 1 / 18 Základní syntax Jazyk Výroková logika je logikou

Více

Ivana Linkeová SPECIÁLNÍ PŘÍPADY NURBS REPREZENTACE. 2 NURBS reprezentace křivek

Ivana Linkeová SPECIÁLNÍ PŘÍPADY NURBS REPREZENTACE. 2 NURBS reprezentace křivek 25. KONFERENCE O GEOMETRII A POČÍTAČOVÉ GRAFICE Ivana Lnkeová SPECIÁLNÍ PŘÍPADY NURBS REPREZENTACE Abstrakt Příspěvek prezentuje B-splne křvku a Coonsovu, Bézerovu a Fergusonovu kubku jako specální případy

Více

Lokace odbavovacího centra nákladní pokladny pro víkendový provoz

Lokace odbavovacího centra nákladní pokladny pro víkendový provoz Markéta Brázdová 1 Lokace odbavovacího centra nákladní pokladny pro víkendový provoz Klíčová slova: odbavování záslek, centrum grafu, vážená excentrcta vrcholů sítě, časová náročnost odbavení záslky, vážená

Více

Výroková a predikátová logika - V

Výroková a predikátová logika - V Výroková a predikátová logika - V Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - V ZS 2015/2016 1 / 21 Dokazovací systémy VL Hilbertovský kalkul Hilbertovský

Více

MODELOVÁNÍ A SIMULACE

MODELOVÁNÍ A SIMULACE MODELOVÁNÍ A SIMULACE základní pojmy a postupy vytváření matematckých modelů na základě blancí prncp numerckého řešení dferencálních rovnc základy práce se smulačním jazykem PSI Základní pojmy matematcký

Více

Modely Herbrandovské interpretace

Modely Herbrandovské interpretace Modely Herbrandovské interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 8 1 Uvedli jsme termové interpretace a termové modely pro logické programy a také nejmenší

Více

BAYESŮV PRINCIP ZDENĚK PŮLPÁN

BAYESŮV PRINCIP ZDENĚK PŮLPÁN ROBUST 000, 7 4 c JČMF 00 BAYESŮV PRINCIP ZDENĚK PŮLPÁN Abstrakt. Poukážeme na možnost rozhodování pomocí Bayesova prncpu. Ten vychází z odhadu podmíněné pravděpodobnosta z předpokladu dsjunktního rozkladu

Více

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α

Každé formuli výrokového počtu přiřadíme hodnotu 0, půjde-li o formuli nepravdivou, a hodnotu 1, půjde-li. α neplatí. β je nutná podmínka pro α 1. JAZYK ATEATIKY 1.1 nožiny nožina je souhrn objektů určitých vlastností, které chápeme jako celek. ZNAČENÍ. x A x A θ A = { { a, b a A = B A B 0, 1 2 a, a,..., a n x patří do množiny A x nepatří do množiny

Více

Částečná korektnost. Petr Štěpánek. S využitím materialu Krysztofa R. Apta

Částečná korektnost. Petr Štěpánek. S využitím materialu Krysztofa R. Apta Částečná korektnost Petr Štěpánek S využitím materialu Krysztofa R. Apta 2007 Logické programování 14 1 Částečná korektnost je vlastností programu a znamená, že program vydává korektní výsledky pro dané

Více

6. Demonstrační simulační projekt generátory vstupních proudů simulačního modelu

6. Demonstrační simulační projekt generátory vstupních proudů simulačního modelu 6. Demonstrační smulační projekt generátory vstupních proudů smulačního modelu Studjní cíl Na příkladu smulačního projektu představeného v mnulém bloku je dále lustrována metodka pro stanovování typů a

Více

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12 Jazyk SQL 1 Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal Valenta (FIT

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2017/2018 1 / 17 Předběžnosti Základní pojmy n-ární relace a funkce

Více

Vysoká škola báňská - Technická univerzita Ostrava Fakulta elektrotechniky a informatiky LOGICKÉ OBVODY pro kombinované a distanční studium

Vysoká škola báňská - Technická univerzita Ostrava Fakulta elektrotechniky a informatiky LOGICKÉ OBVODY pro kombinované a distanční studium Vysoká škola báňská - Techncká unverzta Ostrava Fakulta elektrotechnky a nformatky LOGICKÉ OBVODY pro kombnované a dstanční studum Zdeněk Dvš Zdeňka Chmelíková Iva Petříková Ostrava ZDENĚK DIVIŠ, ZDEŇKA

Více

1. Nejkratší cesta v grafu

1. Nejkratší cesta v grafu 08. Nekratší cesty. Úloha obchodního cestuícího. Heurstky a aproxmační algortmy. Metoda dynamckého programování. Problém batohu. Pseudopolynomální algortmy 1. Nekratší cesta v grafu - sled e lbovolná posloupnost

Více

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model Databázové systémy Tomáš Skopal - relační model * relační kalkuly Osnova přednášky relační kalkuly doménový n-ticový Relační kalkuly využití aparátu predikátové logiky 1. řádu pro dotazování rozšíření

Více

Výroková a predikátová logika - II

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2013/2014 1 / 20 Základní syntax Jazyk Výroková logika je logikou

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

KIV/ZIS cvičení 5. Tomáš Potužák

KIV/ZIS cvičení 5. Tomáš Potužák KIV/ZIS cvičení 5 Tomáš Potužák Úvod do SQL (1) SQL (Structured Query Language) je standardizovaný strukturovaný dotazovací jazyk pro práci s databází Veškeré operace v databázi se dají provádět pomocí

Více

Naproti tomu gramatika je vlastně soupis pravidel, jak

Naproti tomu gramatika je vlastně soupis pravidel, jak 1 Kapitola 1 Úvod V přednášce se zaměříme hlavně na konečný popis obecně nekonečných množin řetězců symbolů dané množiny A. Prvkům množiny A budeme říkat písmena, řetězcům (konečným posloupnostem) písmen

Více

Výroková logika. Teoretická informatika Tomáš Foltýnek

Výroková logika. Teoretická informatika Tomáš Foltýnek Výroková logika Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz Teoretická informatika strana 2 Opakování z minulé přednášky Co je to formalismus a co je jeho cílem? Formulujte Russelův paradox

Více

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu VÝROKOVÁ LOGIKA Matematická logika se zabývá studiem výroků, jejich vytváření a jejich pravdivostí. Základním kamenem výrokové logiky jsou výroky. Co je výrok nedefinujejme, pouze si řekneme, co si pod

Více

Základní pojmy matematické logiky

Základní pojmy matematické logiky KAPITOLA 1 Základní pojmy matematické logiky Matematická logika se zabývá studiem výroků, jejich vytváření a jejich pravdivostí. Základním kamenem výrokové logiky jsou výroky. 1. Výroková logika Co je

Více

teorie logických spojek chápaných jako pravdivostní funkce

teorie logických spojek chápaných jako pravdivostní funkce Výroková logika teorie logických spojek chápaných jako pravdivostní funkce zabývá se způsoby tvoření výroků pomocí spojek a vztahy mezi pravdivostí různých výroků používá specifický jazyk složený z výrokových

Více

Logika. 6. Axiomatický systém výrokové logiky

Logika. 6. Axiomatický systém výrokové logiky Logika 6. Axiomatický systém výrokové logiky RNDr. Luděk Cienciala, Ph. D. Tato inovace předmětu Úvod do logiky je spolufinancována Evropským sociálním fondem a Státním rozpočtem ČR, projekt č. CZ. 1.07/2.2.00/28.0216,

Více

Maticová exponenciála a jiné maticové funkce

Maticová exponenciála a jiné maticové funkce Matcová exponencála a jné matcové funkce Motvace: Jž víte, že řešením rovnce y = ay, jsou funkce y(t = c e at, tj exponencály Pro tuto funkc platí, že y(0 = c, tj konstanta c je počáteční podmínka v bodě

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz Ostrava, 2014 Opakování 4 fáze vytváření

Více

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1 Negativní informace Petr Štěpánek S použitím materiálu M.Gelfonda a V. Lifschitze 2009 Logické programování 15 1 Negace jako neúspěch Motivace: Tvrzení p (atomická formule) neplatí, jestliže nelze odvodit

Více

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek Otázka 06 - Y01MLO Zadání Predikátová logika, formule predikátové logiky, sentence, interpretace jazyka predikátové logiky, splnitelné sentence, tautologie, kontradikce, tautologicky ekvivalentní formule.

Více

KOMPLEXNÍ ČÍSLA. Algebraický tvar komplexního čísla

KOMPLEXNÍ ČÍSLA. Algebraický tvar komplexního čísla KOMPLEXNÍ ČÍSLA Příklad Řešte na množně reálných čísel rovnc: x + = 0. x = Rovnce nemá v R řešení. Taková jednoduchá rovnce a nemá na množně reálných čísel žádné řešení! Co s tím? Zavedeme tzv. magnární

Více

Substituce. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 2 1

Substituce. Petr Štěpánek. S využitím materialu Krysztofa R. Apta. Logické programování 2 1 Substituce Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 2 1 Algebra termů Předpokládáme, že je dán jazyk termů. L, definovali jsme množinu jeho Zavedeme některé užitečné

Více

ASYMPTOTICKÉ VLASTNOSTI ODHADŮ S MINIMÁLNÍ KOLMOGOROVSKOU VZDÁLENOSTÍ

ASYMPTOTICKÉ VLASTNOSTI ODHADŮ S MINIMÁLNÍ KOLMOGOROVSKOU VZDÁLENOSTÍ ASYMPTOTICKÉ VLASTNOSTI ODHADŮ S MINIMÁLNÍ KOLMOGOROVSKOU VZDÁLENOSTÍ Bc. Jtka Hanousková 1 Abstrakt: Příspěvek se zabývá postačujícím podmínkam pro konzstenc odhadů s mnmální Kolmogorovskou vzdáleností

Více

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase -stromy a rozpoznávání intervalových grafů v lineárním čase ermutace s předepsanými intervaly Označme [n] množinu {1, 2,..., n}. Mějme permutaci π = π 1, π 2,..., π n množiny [n]. Řekneme, že množina S

Více

6 Skalární součin. u v = (u 1 v 1 ) 2 +(u 2 v 2 ) 2 +(u 3 v 3 ) 2

6 Skalární součin. u v = (u 1 v 1 ) 2 +(u 2 v 2 ) 2 +(u 3 v 3 ) 2 6 Skalární součin Skalární součin 1 je operace, která dvěma vektorům (je to tedy binární operace) přiřazuje skalár (v našem případě jde o reálné číslo, obecně se jedná o prvek nějakého tělesa T ). Dovoluje

Více

PŘEDNÁŠKA 5 Konjuktivně disjunktivní termy, konečné distributivní svazy

PŘEDNÁŠKA 5 Konjuktivně disjunktivní termy, konečné distributivní svazy PŘEDNÁŠKA 5 Konjuktivně disjunktivní termy, konečné distributivní svazy PAVEL RŮŽIČKA Abstrakt. Ukážeme, že každý prvek distributivního svazu odpovídá termu v konjuktivně-disjunktivním (resp. disjunktivně-konjunktivním)

Více

Úvod do databázových systémů

Úvod do databázových systémů Vysoká škola báňská Technická univerzita Ostrava Fakulta elektrotechniky a informatiky Katedra informatiky Database Research Group Úvod do databázových systémů Cvičení 3 Ing. Petr Lukáš petr.lukas@vsb.cz

Více

Základy matematické analýzy

Základy matematické analýzy Základy matematické analýzy Spojitost funkce Ing. Tomáš Kalvoda, Ph.D. 1, Ing. Daniel Vašata 2 1 tomas.kalvoda@fit.cvut.cz 2 daniel.vasata@fit.cvut.cz Katedra aplikované matematiky Fakulta informačních

Více

Logika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D.

Logika. 2. Výroková logika. RNDr. Luděk Cienciala, Ph. D. Logika 2. Výroková logika RNDr. Luděk Cienciala, Ph. D. Tato inovace předmětu Úvod do logiky je spolufinancována Evropským sociálním fondem a Státním rozpočtem ČR, projekt č. CZ. 1.07/2.2.00/28.0216, Logika:

Více

Výroková a predikátová logika - IX

Výroková a predikátová logika - IX Výroková a predikátová logika - IX Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - IX ZS 2013/2014 1 / 15 Korektnost a úplnost Důsledky Vlastnosti teorií

Více

FREDHOLMOVA ALTERNATIVA

FREDHOLMOVA ALTERNATIVA FREDHOLMOVA ALTERNATIVA Pavel Jirásek 1 Abstrakt. V tomto článku se snažíme shrnout dosavadní výsledky týkající se Fredholmovy alternativy (FA). Postupně zmíníme FA na prostorech konečné dimenze, FA pro

Více

Rezoluční kalkulus pro výrokovou logiku

Rezoluční kalkulus pro výrokovou logiku AD4M33AU Automatické uvažování Rezoluční kalkulus pro výrokovou logiku Petr Pudlák Výroková logika Výhody Jednoduchý jazyk. Rozhodnutelnost dokazatelnosti i nedokazatelnosti. Rychlejší algoritmy. Nevýhody

Více

SLD-derivace. Petr Štěpánek. S využitím materiálu Krysztofa R. Apta

SLD-derivace. Petr Štěpánek. S využitím materiálu Krysztofa R. Apta SLD-derivace Petr Štěpánek S využitím materiálu Krysztofa R. Apta 2006 Logické programování 5 1 Při systematickém studiu SLD-derivací je užitečné využít rezultanty a přiřadit je k SLD-derivačním krokům

Více

Limita a spojitost funkce a zobrazení jedné reálné proměnné

Limita a spojitost funkce a zobrazení jedné reálné proměnné Přednáška 4 Limita a spojitost funkce a zobrazení jedné reálné proměnné V několika následujících přednáškách budeme studovat zobrazení jedné reálné proměnné f : X Y, kde X R a Y R k. Protože pro každé

Více

Oracle XML DB. Tomáš Nykodým

Oracle XML DB. Tomáš Nykodým Oracle XML DB Tomáš Nykodým xnykodym@fi.muni.cz Osnova Oracle XML DB Architektura Oracle XML DB Hlavní rysy Oracle XML DB Hlavní rysy Oracle XML DB - pokračování XMLType XML Repository Využívání databázových

Více

2.5 Rezoluční metoda v predikátové logice

2.5 Rezoluční metoda v predikátové logice 2.5. Rezoluční metoda v predikátové logice [101104-1520] 19 2.5 Rezoluční metoda v predikátové logice Rezoluční metoda v predikátové logice je obdobná stejnojmenné metodě ve výrokové logice. Ovšem vzhledem

Více

6. blok část B Vnořené dotazy

6. blok část B Vnořené dotazy 6. blok část B Vnořené dotazy Studijní cíl Tento blok je věnován práci s vnořenými dotazy. Popisuje rozdíl mezi korelovanými a nekorelovanými vnořenými dotazy a zobrazuje jejich použití. Doba nutná k nastudování

Více

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008.

Úvod do informatiky. Miroslav Kolařík. Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Úvod do informatiky přednáška čtvrtá Miroslav Kolařík Zpracováno dle učebního textu R. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Pojem relace 2 Vztahy a operace s (binárními) relacemi

Více

ROZHODOVÁNÍ VE FUZZY PROSTŘEDÍ

ROZHODOVÁNÍ VE FUZZY PROSTŘEDÍ ACTA UNIVERSITATIS AGRICULTURAE ET SILVICULTURAE MENDELIANAE BRUNENSIS SBORNÍK MENDELOVY ZEMĚDĚLSKÉ A LESNICKÉ UNIVERZITY V BRNĚ Ročník LV 24 Číslo 6, 2007 ROZHODOVÁNÍ VE FUZZY PROSTŘEDÍ V. Konečný Došlo:

Více

Sémantický Web RDF(S)

Sémantický Web RDF(S) 4 TVEZEWXYHMNR LSTVSKVEQY-RJSVQEXMOENITSHTSVSZ RETVSNIOXIQRERGSZER Q ^)ZVSTWO LSWSGM PR LSJSRHYEVS^TS XYLPEZR LSQ WXE4VEL] 4VELE)9-RZIWXYNIQIHSZE% FYHSYGRSWXM Sémantický Web RDF(S) BI - TWA Peter Vojtáš

Více

Výroková a predikátová logika - VIII

Výroková a predikátová logika - VIII Výroková a predikátová logika - VIII Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - VIII ZS 2017/2018 1 / 21 Tablo Tablo metoda v PL - rozdíly Formule

Více

Výroková a predikátová logika - IV

Výroková a predikátová logika - IV Výroková a predikátová logika - IV Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - IV ZS 2018/2019 1 / 17 Tablo metoda Tablo Tablo - příklady F (((p q)

Více

Ukládání a vyhledávání XML dat

Ukládání a vyhledávání XML dat XML teorie a praxe značkovacích jazyků (4IZ238) Jirka Kosek Poslední modifikace: $Date: 2014/12/04 19:41:24 $ Obsah Ukládání XML dokumentů... 3 Ukládání XML do souborů... 4 Nativní XML databáze... 5 Ukládání

Více

Výroková a predikátová logika - VII

Výroková a predikátová logika - VII Výroková a predikátová logika - VII Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - VII ZS 2013/2014 1 / 21 Sémantika PL Teorie Vlastnosti teorií Teorie

Více

Analýza a modelování dat. Přednáška 9

Analýza a modelování dat. Přednáška 9 Analýza a modelování dat Přednáška 9 Další dotazování nad kostkou Rozšíření SQL99 rozšíření SQL99 (minulá přednáška): seskupovací operátory za GROUP BY CUBE statistiky dle řezů ROLLUP statistiky dle rolování

Více

u (x i ) U i 1 2U i +U i+1 h 2. Na hranicích oblasti jsou uzlové hodnoty dány okrajovými podmínkami bud přímo

u (x i ) U i 1 2U i +U i+1 h 2. Na hranicích oblasti jsou uzlové hodnoty dány okrajovými podmínkami bud přímo Metoda sítí základní schémata h... krok sítě ve směru x, tj. h = x x q... krok sítě ve směru y, tj. q = y j y j τ... krok ve směru t, tj. τ = j... hodnota přblžného řešení v uzlu (x,y j ) (Possonova rovnce)

Více

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie. Zpracoval: hypspave@fel.cvut.cz 5. Výroková logika, formule výrokové logiky a jejich pravdivostní ohodnocení, splnitelné formule, tautologie, kontradikce, sémantický důsledek, tautologicky ekvivalentní

Více

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R... Kapitola 1 Úvod 1.1 Značení N... přirozená čísla (1, 2, 3,...). Z... celá čísla ( 3, 2, 1, 0, 1, 2,...). Q... racionální čísla ( p, kde p Z a q N) q R... reálná čísla C... komplexní čísla 1.2 Výroky -

Více

permutace, popisující nějaké symetrie, je i π permutace, popisující nějakou symetrii.

permutace, popisující nějaké symetrie, je i π permutace, popisující nějakou symetrii. DSM Cv Pólyova věta Budeme se zabývat objekty (na množně X - to jsou vrcholy těchto objektů) s různým prvky symetre (například to mohou být různé brože, tsky, ale také strukturní vzorce různých chemckých

Více

Modelování a odvozování v RDFS

Modelování a odvozování v RDFS Modelování a odvozování v RDFS Doc. Ing. Vojtěch Svátek, Dr. Zimní semestr 2012 http://nb.vse.cz/~svatek/rzzw.html Modelování v RDFS Základní konstrukce slovníku jsou Třídy Individua (jen význačná doménová

Více

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka Metody tvorby ontologií a sémantický web Martin Malčík, Rostislav Miarka Obsah Reprezentace znalostí Ontologie a sémantický web Tvorba ontologií Hierarchie znalostí (D.R.Tobin) Data jakékoliv znakové řetězce

Více

NP-úplnost problému SAT

NP-úplnost problému SAT Problém SAT je definován následovně: SAT(splnitelnost booleovských formulí) Vstup: Booleovská formule ϕ. Otázka: Je ϕ splnitelná? Příklad: Formule ϕ 1 =x 1 ( x 2 x 3 )jesplnitelná: např.přiohodnocení ν,kde[x

Více

Energie elektrického pole

Energie elektrického pole Energe elektrckého pole Jž v úvodní kaptole jsme poznal, že nehybný (centrální elektrcký náboj vytváří v celém nekonečném prostoru slové elektrcké pole, které je konzervatvní, to znamená, že jakýkolv jný

Více

Matematická logika. Rostislav Horčík. horcik

Matematická logika. Rostislav Horčík.  horcik Matematická logika Rostislav Horčík horcik@math.feld.cvut.cz horcik@cs.cas.cz www.cs.cas.cz/ horcik Rostislav Horčík (ČVUT FEL) Y01MLO Letní semestr 2007/2008 1 / 15 Splnitelnost množin Definice Množina

Více

Výroková a predikátová logika - VIII

Výroková a predikátová logika - VIII Výroková a predikátová logika - VIII Petr Gregor KTIML MFF UK ZS 2016/2017 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - VIII ZS 2016/2017 1 / 21 Tablo Tablo metoda v PL - rozdíly Formule

Více

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti Kapitola 5 Vektorové prostory V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti operací sčítání a násobení

Více

Regresní a korelační analýza

Regresní a korelační analýza Regresní a korelační analýza Závslost příčnná (kauzální). Závslostí pevnou se označuje případ, kdy výskytu jednoho jevu nutně odpovídá výskyt druhé jevu (a často naopak). Z pravděpodobnostního hledska

Více

1 Kardinální čísla. množin. Tvrzení: Necht X Cn. Pak: 1. X Cn a je to nejmenší prvek třídy X v uspořádání (Cn, ),

1 Kardinální čísla. množin. Tvrzení: Necht X Cn. Pak: 1. X Cn a je to nejmenší prvek třídy X v uspořádání (Cn, ), Pracovní text k přednášce Logika a teorie množin 4.1.2007 1 1 Kardinální čísla 2 Ukázali jsme, že ordinální čísla reprezentují typy dobrých uspořádání Základy teorie množin Z minula: 1. Věta o ordinálních

Více

Další NP-úplné problémy

Další NP-úplné problémy Další NP-úplné problémy Známe SAT, CNF, 3CNF, k-klika... a ještě následující easy NP-úplný problém: Existence Certifikátu (CERT ) Instance: M, x, t, kde M je DTS, x je řetězec, t číslo zakódované jako

Více

Hilbertovský axiomatický systém

Hilbertovský axiomatický systém Hilbertovský axiomatický systém Predikátová logika H 1 Šárka Vavrečková Ústav informatiky, FPF SU Opava Poslední aktualizace: 24. října 2008 Specifikace H 1 Jazyk L H1 přejímáme jazyk predikátové logiky

Více

SPARQL teorie, endpointy, pojmenované grafy, web API. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák

SPARQL teorie, endpointy, pojmenované grafy, web API. 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák SPARQL teorie, endpointy, pojmenované grafy, web API 4IZ440 Reprezentace a zpracování znalostí na WWW Josef Petrák me@jspetrak.name Dnes uvidíme Základy RDF grafu Pojmenované grafy Jazyk SPARQL RDF graf

Více

Sémantika predikátové logiky

Sémantika predikátové logiky Sémantika predikátové logiky pro analýzu sémantiky potřebujeme nejprve specifikaci jazyka (doména, konstanty, funkční a predikátové symboly) příklad: formální jazyk s jediným binárním predikátovým symbolem

Více

1.3. Číselné množiny. Cíle. Průvodce studiem. Výklad

1.3. Číselné množiny. Cíle. Průvodce studiem. Výklad 1.3. Cíle Cílem kapitoly je seznámení čtenáře s axiomy číselných oborů a jejich podmnožin (intervalů) a zavedení nových pojmů, které nejsou náplní středoškolských osnov. Průvodce studiem Vývoj matematiky

Více

Lineární algebra : Polynomy

Lineární algebra : Polynomy Lineární algebra : Polynomy (2. přednáška) František Štampach, Karel Klouda frantisek.stampach@fit.cvut.cz, karel.klouda@fit.cvut.cz Katedra aplikované matematiky Fakulta informačních technologií České

Více

9. Měření kinetiky dohasínání fluorescence ve frekvenční doméně

9. Měření kinetiky dohasínání fluorescence ve frekvenční doméně 9. Měření knetky dohasínání fluorescence ve frekvenční doméně Gavolův experment (194) zdroj vzorek synchronní otáčení fázový posun detektor Měření dob žvota lumnscence Frekvenční doména - exctace harmoncky

Více

Základy logiky a teorie množin

Základy logiky a teorie množin Pracovní text k přednášce Logika a teorie množin (I/2007) 1 1 Struktura přednášky Matematická logika 2 Výroková logika Základy logiky a teorie množin Petr Pajas pajas@matfyz.cz Predikátová logika 1. řádu

Více

Klasifikace a predikce. Roman LUKÁŠ

Klasifikace a predikce. Roman LUKÁŠ 1/28 Klasfkace a predkce Roman LUKÁŠ 2/28 Základní pomy Klasfkace = zařazení daného obektu do sté skupny na základě eho vlastností Dvě fáze klasfkace: I. Na základě trénovacích vzorů (u nchž víme, do aké

Více

Formální jazyky a gramatiky Teorie programovacích jazyků

Formální jazyky a gramatiky Teorie programovacích jazyků Formální jazyky a gramatiky Teorie programovacích jazyků doc. Ing. Jiří Rybička, Dr. ústav informatiky PEF MENDELU v Brně rybicka@mendelu.cz Připomenutí základních pojmů ABECEDA jazyk je libovolná podmnožina

Více