~~SLIDESHOW~~ ====== MIW 2009 Prolog SBVR ====== === **Zrealizował: Patryk Łuczyński (4RI) === ===== Cel projektu ===== Celem projektu było przeanalizowanie od niedawna rozwijanego standardu SBVR (Semantics of Business Vocabulary and Rules) służącego do opisu modeli niezależnie od platformy na której modele te będą implementowane. Specyfikacja SBVR tworzy formalne podstawy do tworzenia słowników, które mogą posłużyć do opisu dowolnego przedsięwzięcia, zjawiska za pomocą sformalizowanego języka naturalnego (np angielskiego,polskiego lub innego). Kolejnym celem projektu była próba stworzenia parsera analizującego reguły zgodne z SBVR na podstawie znanego słownika. ===== SBVR a Model Driven Architecture ===== Architektura oprogramowania wyróżniająca trzy warstwy: * CIM - Computation Independent Model * PIM - Platform Independent Model * PSM - Platform Specific Model SBVR umiejscowiony jest w warstwie CIM, czyli modelu najbardziej abstrahującego od sprzętu i oprogramowania. ===== SBVR a Model Driven Architecture c.d.===== {{:pl:miw:2009:miw09_prolog_sbvr:pliki:cim_pim_psm2.gif?800}} ===== Oficjalna specyfikacja SBVR ===== Dostępna na stronie konsorcjum OMG http://www.omg.org/spec/SBVR/ zorganizowana w słowniki: * Vocabulary Registration Vocabulary * Meaning and Representation Vocabulary * Logical Formulation of Semantics Vocabulary * Formal Logic and Mathematic Vocabulary * Vocabulary for Describing Business Vocabularies * Vocabulary for Describing Business Rules Do definiowania słowników i reguł bezpośrednio wykorzystuje się dwa ostatnie. ===== SBVR jako semantyka ===== Rozdzielenie znaczenia pojęcia od jego reprezentacji. SBVR jest standardem umożliwiającym powiązanie znaczenia i reprezentacji. \\ \\ Pociąga to za sobą brak standardowej notacji SBVR. Równouprawnione są wszystkie notacje zgodne ze specyfikacją (np Structured English, język polski - odpowiednio sformalizowany, język diagramów), które można dodefiniować. \\ \\ Specyfikacja SBVR napisana za pomocą Structured English. \\ ===== SBVR Structured English ===== Przykładowa notacja słowników i reguł biznesowych. Definiuje 4 czcionki przenoszące meta-dane: * {{:pl:miw:2009:miw09_prolog_sbvr:pliki:fonts:term.gif?50|Czcionka 'term'}} - używana do zaznaczenia pojęć rzeczownikowych?? (noun concept) czyli najbardziej elementarnego (atomicznego) elementu słownika. * {{:pl:miw:2009:miw09_prolog_sbvr:pliki:fonts:name.gif?45|Czcionka 'name'}} - przeznaczona do oznaczania konkretnych obiektów, realizacji (individual koncept) lub też nazw własnych. * {{:pl:miw:2009:miw09_prolog_sbvr:pliki:fonts:verb.gif?45|Czcionka 'verb'}} - za pomocą tego stylu oznacza się sformułowania definiujące rodzaj faktu, pojęcie czasownikowe. Słowa oznaczane w ten sposób to zazwyczaj czasowniki (stąd ‘pojęcie czasownikowe’ – verb concept), przyimki lub ich kombinacja. Rodzaje faktów, dzielimy na 3 typy ze względu na ilość pojęć (‘noun concept’) jaki zawiera: unarne (charakterystyka, np. __rental__ is open), binarne (np. __rental__ has __driver__) oraz n-arne (gdzie n > 2, np. __replacement car__ replaces __rental car__ during __renting period__) ===== SBVR Structured English c.d. ===== * {{:pl:miw:2009:miw09_prolog_sbvr:pliki:fonts:keyword.gif?65|Czcionka 'keyword'}} - w ten sposób wyróżniane są symbole językowe za pomocą, których konstruuje się zdania i reguły. Przykłady: kwantyfikacje (each, exactly one), operatory logiczne (and,or ), operatory logiki modalnej (it is necessary, it is permitted). ===== Reguły w SBVR ===== {{:pl:miw:2009:miw09_prolog_sbvr:pliki:SBVR_voc_constr.gif?700}} Tworzenie reguł według specyfikacji SBVR: * zdefiniować termy np. car, driver, itp * na podstawie istniejących termów zdefiniować verb concepts np car has driver ===== Reguły w SBVR c.d.===== * na podstawie istniejących faktów poprzez dodanie przyimków, kwantyfikatorów i operatorów modalnych np. It is obligatory that each car has a driver Reguły strukturalne oraz operatywne (wymagające poziomu przestrzegania). ===== Istniejące narzędzie zgodne z SBVR ===== * SBeaVeR - Open source, nie została jeszcze napisana w pełni funkcjonalna wersja * RuleXpress firmy RuleArts - w pełni komercyjny produkt, posiada graficzny edytor reguł Żadne z tych narzędzi nie posiada funkcji parsowania reguł i ich rozbioru logicznego. Istnieją jeszcze inne narzędzia o których wspominają autorzy SBVR, aczkolwiek posiadają one cząstkowe nawiązania do standardu. ===== Kolorowanie reguł ===== W ramach projektu udało się stworzyć program w języku Prolog, który na wejściu otrzymuje słownik (w znaczeniu term --> czcionka) oraz napis do przetworzenia, a na wyjściu produkuje plik html zawierający napis z wejścia opatrzony odpowiednimi tagami tak, by po otwarciu przez przeglądarkę wyglądał jak Structured English.