Použití konžolové části áplikáčé XRéásonér Marek Vajgl (
[email protected]) 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 1 11 2 3 4 44
Význam příkazu 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 Přidání nemonotónního pravidla Kontrola důsledků/konzistence znalostní báze Zjištění instancí zadaného konceptu Výpis definic s případnou možností odebrání definice Výpis definic nemonotónních pravidel s případnou možností odebrání definice
5
Výpis stromu subsumpce jednotlivých konceptů
8 9 0
Uložení znalostní báze do souboru Načtení znalostní báze ze souboru 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 Operátor ⊓ Operátor ⊔ Operátor ⊑ Operátor Operátor ¬ Kvantifikátor Kvantifikátor Koncept ⊤
Klíčové slovo and or sub def neg all ex _T_
Koncept ⊥ 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ů
_F_ . , () []
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 Enter formula to retrieve instances for: ? Person Instances of Person: Marek; Miroslav; Petr; Lukáš; Stanislav; Alice; Eva; Bozena; Petra; EvaK; ... press any key to continue
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 Enter formula to retrieve instances for: ? ex hasChild.Man Instances of ex hasChild.Man: Eva; Miroslav; Petr; Alice; ... press any key to continue
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 =| ... press any key to continue
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. ... press any key to continue
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. ... press any key to continue
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. Enter formula to retrieve instances for: ? Parent Instances of Parent: EvaK; Eva; Miroslav; Bozena; Stanislav; Petr; Alice; ... press any key to continue
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: Enter formula to retrieve instances for: ? UnhappyParent Instances of UnhappyParent: Marek; Stanislav; Lukáš; Bozena; Petra; EvaK; ... press any key to continue
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: Enter formula to retrieve instances for: ? UnhappyParent Instances of UnhappyParent: EvaK; Bozena; Stanislav; ... press any key to continue
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: Enter formula to retrieve instances for: ? 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: Enter formula to retrieve instances for: ? 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; ... press any key to continue
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. ... press any key to continue
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í: Enter formula to retrieve instances for: ? Tall Instances of Tall: Marek; Miroslav; Petr; Stanislav; Lukáš; ... press any key to continue
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. ... press any key to continue
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ý.
Enter formula to retrieve instances for: ? Tall Instances of Tall: Marek; Miroslav; Stanislav; Lukáš; ... press any key to continue
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