Použ ití konžolové č á sti áplikáčé XRéásonér Marek Vajgl (marek.vajgl@osu.cz) Katedra informatiky a počítačů Přírodovědecká fakulta Ostravská univerzita v Ostravě Obsah Úvodní popis... 1 Instalace aplikace... 2 Základní nabídka programu... 3 Vkládání formulí... 3 Demonstrace chování systému... 4 Základní práce se znalostní bází... 4 Porovnání chování formálních systémů DL a DL1 v systému XReasoner... 6 Nemonotónní přístup v systému XReasoner... 8 Odebrání aplikace... 9 Úvodní popis Dalším vytvořeným projektem je jednoduchý projekt konzolové aplikace nad základním nastavením znalostní báze. Uživatel po spuštění příslušeného souboru do konzole zadává příkazy k vykonání. Tato aplikace umožňuje například rychlé otestování chování systému deskripční logiky pro uživatele seznamující se danou problematikou. Konzolová aplikace umožňuje také porovnání chování standardního systému deskripční logiky DL v porovnání se systémem DL1 nad stejnými daty.
Obr. 0-1: Konzolová aplikace pro testování chování znalostní báze Aplikace také umožňuje uložení a načtení znalostní báze z binárního souboru, dotazování na splnitelnost formulí, získání instancí daného konceptu a další. Instalace aplikace Před instalací aplikace si pročtěte licenční podmínky, za kterých je aplikace dodávána. Instalací aplikace (rozbalením ZIP souboru) souhlasíte s licenčními podmínkami, za kterých je aplikaci možnou instalovat, spouštět, používat a odstranit. V souladu s licenčními podmínkami autor aplikace nenese žádnou odpovědnost za přímé i nepřímé škody související s touto aplikací. Autor však udává, že aplikace vědomě neprovádí žádné zásahy a změny ve spuštěném prostředí, které by překračovaly rozsah použití aplikace a mohli způsobit ztráty integrity, dostupnosti nebo důvěrnosti dat na nainstalovaném počítači. Aplikace je (díky své závislosti na platformě.net) určena a testována pouze nad operačními systémy rodiny MS Windows. Konkrétně byla aplikace otestována nad MS Windows XP SP2/3 a Windows 7. Postup instalace: 1) Pro spuštění vyžaduje nainstalovaný.net Framework verze 3.5. Tento bývá standardní součastí současných operačních systémů Windows, nicméně v případě potřeby jej lze zdarma stáhnout z webu firmy Microsoft (http://www.microsoft.com/cscz/download/details.aspx?id=25150). Zpětná kompatibilita vyšších verzí.net Frameworku (4.0, 4.5) s aplikací nebyla testována. Po instalaci.net Frameworku je doporučeno restartovat počítač. 2) Stažený ZIP soubor rozbalit do libovolného umístění s právem zápisu.
Základní nabídka programu Po spuštění programu souborem XReasonerClient.exe se aplikace dotáže na použitý odvozovací mechanismus: 1) První variantou je odvozování podle standardního formalismu deskripční logiky 2) Druhou variantou je odvozování podle upravené sémantiky deskripční logiky DL1 Po této volbě aplikace nabízí základní obrazovku s variantami: Kód příkazu Význam příkazu 1 Přidání nové definice novou definici lze vložit ve formátu uvedeném dále. Zadáním skupiny definic lze vytvořit/změnit existující znalostí bázi 11 Přidání nemonotónního pravidla 2 Kontrola důsledků/konzistence znalostní báze 3 Zjištění instancí zadaného konceptu 4 Výpis definic s případnou možností odebrání definice 44 Výpis definic nemonotónních pravidel s případnou možností odebrání definice 5 Výpis stromu subsumpce jednotlivých konceptů 8 Uložení znalostní báze do souboru 9 Načtení znalostní báze ze souboru 0 Vymazání znalostní báze 99 Ukončení programu Vkládání formulí Program při zadávání definic vyžaduje zadávání formulí v konkrétně stanovené syntax. Pro tuto syntax je utvořena referenční implementace (tj. programátor si může vytvořit syntax vlastní vytvořením požadovaného analyzátoru), která reprezentuje speciální symboly formalismu deskripční logiky (jako například znak pro disjunkci, konjunkci, kvantifikaci a další) pomocí klíčových slov, a ve výsledku lze tedy zapisovat formule deskripční logiky pomocí standardních znaků.
Symbol DL Klíčové slovo Operátor and Operátor or Operátor sub Operátor def Operátor neg Kvantifikátor all Kvantifikátor ex Koncept _T_ Koncept _F_ Oddělovač role a konceptu ( R.C). Oddělovač termů u role (R(a, b)), Závorky priority formulí () Závorky připojených termů [] Tab. 0-1: Syntaxe referenční implementace DLLanguage Formuli Mother Person haschild.person lze tedy zapsat Mother def (Person and ex haschild.person). Klíčová slova musí být od ostatních symbolů oddělena mezerou. Demonstrace chování systému Základní práce se znalostní bází Následující příklad ukazuje tvorby jednoduché znalostní báze s koncepty a instancemi rodiny. Znalostní báze byla vytvořena pomocí formulí uvedených v příloze A a je uložena v souboru family.kb, odkud může být do konzolové aplikace načtena. Základním dotazem může být získání všech individuí konceptu Person. Aplikace po zadání volby 4 a vstupu Person vrací výsledek: ***** XReasoner console ***** Choose: 1... enter new definition 2... check for consequent/consistency 3... get instances of... 4... print / remove definition 5... print subsumption tree 8... save knowledge base to file 9... load knowledge base from file 0... clear knowledge base 99... (or close window) to exit
? 3? Person Instances of Person: Marek; Miroslav; Petr; Lukáš; Stanislav; Alice; Eva; Bozena; Petra; EvaK; Při zadávání lze pokládat i dotazy nejen na koncepty, ale na instance splňující obecné formule. Zde je třeba ale dotaz položit ve formátu sémantiky jazyka vytvořeného v knihovně DLLanguage. ***** XReasoner console ***** Choose: 1... enter new definition 2... check for consequent/consistency 3... get instances of... 4... print / remove definition 5... print subsumption tree 8... save knowledge base to file 9... load knowledge base from file 0... clear knowledge base 99... (or close window) to exit? 3? ex haschild.man Instances of ex haschild.man: Eva; Miroslav; Petr; Alice; Obdobně lze získat výpis aktuální subsumpce konceptů podle terminologického boxu: ***** XReasoner console ***** Choose: 1... enter new definition 2... check for consequent/consistency 3... get instances of... 4... print / remove definition 5... print subsumption tree 8... save knowledge base to file 9... load knowledge base from file 0... clear knowledge base 99... (or close window) to exit? 5 Subsumption tree in form gen : spec $_T_$ = Person; Animal; Parent; UnhappyFather; GrandParent; Person = Man; Woman; Man = Woman = Animal = Parent =
UnhappyFather = GrandParent = Porovnání chování formálních systémů DL a DL1 v systému XReasoner Při porovnání se bude vycházet opět ze znalostní báze představené výše. Pro testování je ve znalostní bázi vytvořen koncept využívající existenční kvantifikace role Parent, definující rodiče jako instanci, pro kterou existuje instance role haschild s jinou instancí osoby Person: Parent haschild.person Pro univerzální kvantifikaci byl pak vytvořen koncept UnhappyParent zahrnující takové instance, jejichž všechny děti jsou dcerami. UnhappyParent haschild.woman Ještě před odvozováním nad instancemi však lze ověřit chování subsumpce R.C R.C nad oběma variantami systému. V systému konzole to lze povést pomocí volby check for consequent/consistency a zadáním požadované formule. Při zadání do systému DL vrátí systém odpověď, že subsumpce neplatí: Enter formula definition to check? all haschild.parent sub ex haschild.parent Press 1 to check consistency, press 2 to check consequent from knowledge base:? 2 Formula is not consequent of knowledge base. U systému DL1 je však na stejný dotaz výstup opačný v tomto případě tedy subsumpce jednotlivých konceptů platí u univerzálně kvantifikovaných formulí se tedy odvozovací mechanismus systému XReasoner chová dle definic sémantiky systémů DL, respektive DL1. Enter formula definition to check? all haschild.parent sub ex haschild.parent Press 1 to check consistency, press 2 to check consequent from knowledge base? 2 Formula is consequent of knowledge base. Další dotazy lze provést na instance jednotlivých koncept. Jelikož chování existenčně kvantifikované role se u logik DL a DL1 neliší, výsledky si v obou případech odpovídají, jak ukazuje následující výpis.? Parent Instances of Parent: EvaK; Eva; Miroslav; Bozena; Stanislav; Petr; Alice;
U univerzálně kvantifikované role se však sémantická definice u obou formálních systémů liší. Pro logiku DL získáme výpis:? UnhappyParent Instances of UnhappyParent: Marek; Stanislav; Lukáš; Bozena; Petra; EvaK; Po změně odvozovacího mechanismu na mechanismus DL1 (nejdříve je třeba v konzolové aplikaci smazat znalostní bázi a při zadávání zvolit systém DL1 a poté opět nahrát znalostní bázi ze souboru), dostaneme na stejný dotaz výsledek:? UnhappyParent Instances of UnhappyParent: EvaK; Bozena; Stanislav; V prvním případě jsou mezi nešťastné rodiče zařazeni i ty instance (=lidé), kteří žádné děti nemají, tedy Marek, Lukáš a Petra. V druhém případě se restrikce provádí pouze nad těmi instancemi, které alespoň jedno dítě mají. Odlišnost lze také demonstrovat na znalostní bázi vytvořené podle ontologie diagramů aktivit získané analýzou RDF souboru. Ontologie zachycuje vztahy aktivit cílem dotazu bude získat takové workflow, které mají (pouze) kořenové aktivity typu jiné aktivity. Výpis systému DL:? all rootactivity.workflow Instances of all rootactivity.workflow: http://protege.stanford.edu/rdf/workflow#collaborativediscussion_instance_0 ; http://protege.stanford.edu/rdf/workflow#collaborativediscussion_instance_2 0000; http://protege.stanford.edu/rdf/workflow#collaborativediscussion_instance_5 0004; http://protege.stanford.edu/rdf/workflow#collaborativediscussion_instance_1 ; http://protege.stanford.edu/rdf/workflow#collaborativediscussion_instance_1 0000;... (cca 80 záznamů) Do výstupu se zahrnují i takové aktivity, které nemají žádnou kořenovou aktivitu, což však nebylo cílem dotazu. Uživatel, který toto chování neočekává, tak bude zmaten. Po položení stejného dotazu nad sémantikou DL1:? all rootactivity.workflow Instances of all rootactivity.workflow: http://protege.stanford.edu/rdf/workflow#collaborativediscussion_instance_0 ; http://protege.stanford.edu/rdf/workflow#collaborativediscussion_instance_2 0000;
http://protege.stanford.edu/rdf/workflow#collaborativediscussion_instance_5 0004; Tento výpis vrací pouze takové individua, které mají nějakou kořenovou aktivitu a všechny aktivity jsou opět typu aktivity. Opět se jedná o prokázání chování systému XReasoner (a implementace sémantického tabla) pro systém DL1 korektně dle představeného řešení. Nemonotónní přístup v systému XReasoner Implementované řešení poskytuje také základní nemonotónní přístupy k reprezentaci znalostí. Znalostní báze umožňuje definovat nová pravidla na základě Reiterovy default logiky ve tvaru. Všechny tři části při zadávání pravidla jsou formule. Znalostní báze umožňuje definici, výpis a odebrání pravidla ze znalostní báze. Následující ukázka bude opět vycházet ze znalostní báze rodiny použité v předchozích příkladech. Bude demonstrováno pravidlo říkající, že běžní muži jsou vysocí, tedy Muž : Tall Tall. Do znalostní báze lze zavést nový atom Tall Person a následně přidat nemonotónní pravidlo. Aplikace si vyžádá zadání po jednotlivých blocích, jak ukazuje následující výpis: Enter prerequisity formula (or empty to abort):? Man Enter justification formula (or empty to abort):? Tall Enter conclusion formula (atom) (or empty to abort):? Tall Formula added to kb. Při dotazu na všechny dlouhé muže se vrátí všechna taková individua, o nichž nelze ze znalostní báze prokázat, že nejsou vysocí:? Tall Instances of Tall: Marek; Miroslav; Petr; Stanislav; Lukáš; Pro ověření lze do znalostní báze vložit tvrzení, že Petr není vysoký Tall(Petr). Enter new formula definition? not Tall[Petr] Formula added to kb. Opakovaným výpisem lze zjistit, že Petr již není vrácen jako instance konceptu Tall, protože je o něm ve znalostní bázi známo, že není vysoký.
? Tall Instances of Tall: Marek; Miroslav; Stanislav; Lukáš; Odebrání aplikace Aplikaci lze odinstalovat pouhým smazáním z umístění, na které byla nainstalována. V rámci odstranění lze odebrat také nainstalovaný MS.NET Framework 3.5, pozor však, že tento framework mohou používat také jiné aplikace nainstalované na počítači a jeho odstraněním tyto aplikace přestanou fungovat!
Příloha A seznam formulí znalostní báze rodiny family.kb