MIW 2009 Prolog_SBVR

**Zrealizował: Patryk Łuczyński (4RI)

Look at the SBVR.

Prepare a concise desc/present.

look for the tool support for modelling!

provide a Prolog parser for SBVR with syntax checking, possibly use DCG, see here, and here also.

provide simple analysis of the SBVR knowledge base on top of the parser

Opis

Prolog_SBVR

Spotkania

Spotkania

Projekt

Opis SBVR

SBVR w architekturze MDA (Model Driven Architecture)

SBVR (Semantics of Bussiness Vocabulary and Bussiness Rules) jest standardem wchodzącym w skład architektury MDA (Model Driven Architecture) opartej na modelach wypracowanej przez konsorcjum OMG (Object Management Group) złożone z około 800 firm członkowskich (największe z nich to IBM, Apple, Sun). Specyfikacja MDA ma na celu zapewnienie łatwiejszej współpracy poszczególnych aplikacji w ramach systemu heterogenicznego (pod względem wykorzystywanych standardów, sposobów reprezentacji danych, sposobów komunikacji) lub po prostu łatwiejszej przenaszalności aplikacji, danych, modeli. W tym celu następuje rozgraniczenie pomiędzy sposobem opisu tego samego procesu, zjawiska, obiektu na postać niezależną od platformy uruchomieniowej zwaną PIM (Platform Independent Model) oraz postać ściśle związaną z platformą PSM (Platform Specific Model). Niektórzy wyróżniają jeszcze trzeci poziom abstrakcji zwany CIM (Computation Independent Model), który w ogóle nie uwzględnia faktu, że model biznesowy będzie przedstawiny w postaci aplikacji.

CIM – Najbardziej abstrakcyjny model składający się tylko ze słownictwa i reguł, którymi rządzi się opisywany obiekt, system.

PIM – opisuje tylko funkcjonalność oraz zachowanie aplikacji lub systemu niezależnie od implementacji czy technologii jaka będzie to tego użyta. Do modelowania niezależnego od platformy korzysta się z języków opisujących jedynie meta-model lub model ( w końcu metamodel to model modelu) zwanych MOF (Meta Object Facility). Języki oparte na MOF to np. UML (Universal Modelling Language) lub CWM (Common Warehouse Metamodel) obydwa opracowane przez OMG.

PSM – skupia się na implementacji modelu PIM w danym środowisku wykorzystując języki jak Java, C# oraz własności platformy uruchomieniowej

Gdzie w tym wszystkim znajduje się SBVR? SBVR jest meta-językiem (do zdefiniowania) dla modeli w językach naturalnych w architekturze MDA. Można powiedzieć, że SBVR jest meta-językiem dla samego siebie. Abstrakcyjny język, którego schemat pojęciowy(conceptual schema) zawiera pojęcie ‘pojęcia’ (‘concept’) jest uznawany za język ogólnego przeznaczenia, ponieważ można za jego pomocą zdefiniować dowolne pojęcie (‘concept’). Pod tym kątem SBVR, moża uznać za język najbardziej ogólnego przeznaczenia w architekturze MDA. Innymi słowami SBVR jest meta-modelem wykorzystywanym przy tworzeniu modeli semantycznych słowników (w sensie zbioru słów) biznesowych (dopasowanych do konkretnej dziedziny) oraz reguł biznesowych.

Rola SBVR w MDA 3 poziomy abstrakcji modeli

Jak widać na powyższych schematach, SBVR jest na takim poziomie abstrakcji, że definiuje model biznesowy sam w sobie odcinając się od całej infrastruktury IT jemu towarzyszącej. Model w SBVR należy do warstwy CIM czyli najbardziej abstrakcyjnie opisującej przedmiot zainteresowania. Dopiero pewne odwzorowania (‘mappings’) mogą budować modele PIM, i w efekcie PSM, które w zasadzie można utożsamiać z zaimplementowaną aplikacją.
Poniższy schemat przedstawia gotowe i planowane odwzorowania pomiędzy standardami OMG.

Gotowe i planowane transformacje pomiędzy standardami OMG

SBVR od wewnątrz

Semantics of Business Vocabularies and Business Rules – czyli Semantyka Słownictwa Biznesowego i Reguł Biznesowych jest standardem wspomagającym tworzenie specyficznych słowników biznesowych oraz reguł biznesowych. Przez wyrażenia słownictwo biznesowe oraz reguły biznesowe należy rozumieć słownictwo specyficzne dla branży, zakresu działalności oraz reguły tam rządzące. Jak widać SBVR nie opisuje (modeluje) bezpośrednio procesów biznesowych, lecz tworzy podstawy języka opisu tych modeli czyli jest meta-modelem do tworzenia modeli semantycznych reguł i słownictw biznesowych. Tak wygląda, struktura specyfikacji słowników i reguł SBVR:

Struktura definiowania słowników oraz reguł w SBVR

Semantyka

Semantyka to dziedzina nauki zajmująca się związkiem pomiędzy rzeczywistymi obiektami a znakami które je reprezentują w danym języku. SBVR zapewnia rozróżnienie pomiędzy znaczeniem, a reprezentacją pojęcia dzięki temu, że jest semantyką. Jako konsekwencja takiego rozdzielenia, jedno znaczenie może być reprezentowane na wiele sposobów. SBVR nie wyróżnia żadnego sposobu jako standardowego, więc reguły można reprezentować w postaci tekstu (w różnych językach) czy diagramów.
Słowniki zawarte w specyfikacji SBVR (Tak naprawdę to działy specyfikacji dotyczące różnych dziedzin SBVR utrzymane w konwencji słownika SBVR):

Vocabulary Registration Vocabulary – rozdział zawierający opis słowników wyspecyfikowanych w dokumencie jak i „zewnętrznych” dla SBVR (np. ISO 1087-1 (English) czyli słownictwo angielskie)

Meaning and Representation Vocabulary – zawiera definicje pojęć fundamentalnych dla SBVR (tworzy pewien meta-model SBVR) takich jak ‘znaczenie’,’pojęcie’,’rola’ zapisane w konwencji SBVR Structured English. Rzeczywiście posiada postać słownika.

Logical Formulation of Semantics Vocabulary – zawiera w sobie powyższy słownik (jest od niego zależny), definiuje pojęcia, które mogą służyć do rozbioru semantycznego i logicznego reguł.

Formal Logic and Mathematic Vocabulary – opis logiki formalnej zawartej w SBVR i sposób jej użycia.

Vocabulary for Describing Business Vocabularies – zależne od Meaning and Representation Vocabulary, definiuje pojęcia i mechanizmy potrzebne do definiowania zależności między znaczeniem pojęcia a jego reprezentacją (np. społeczność semantyczna, zbiór wspólnych znaczeń, rodzaj faktu).

Vocabulary for Describing Business Rules – zależne od Vocabulary for Describing Business Vocabularies więc i pośrednio od Meaning and Representation Vocabulary. Definiuje pojęcia potrzebne przy definiowaniu reguł biznesowych (np. reguła strukturalna, reguła operatywna).

Z punktu widzenia osoby pragnącej zdefiniować nowe słownictwo oraz reguły na nim oparte, najistotniejsze wydają się być 2 ostatnie słowniki. Przed ich opisaniem warto przedstawić ideę SBVR Structured English. Jest to pewien standard (definiujący różne czcionki do formalnego opisu elementów słownka, oraz wprowadzający nowe słowa kluczowe) opisywania słowników oraz reguł z wykorzystaniem Vocabulary for Describing Business Vocabularies oraz Vocabulary for Describing Business Rules. Jako ciekawostka, warto zaznaczyć, że w oficjalnej specyfikacji SBVR wszystkie sześć uprzednio wymienionych słowników zostało opatrzonych czionkami SBVR Structured English. Tworzy nam się więc pętla definicji, która oznacza, że SBVR (Structured English) jest własnym meta-językiem (jest językiem reflektywnym z czym wiążą się pewne problemy semantyczne jak wymaganie podstawowej wiedzy na temat języka – najbardziej znany problem to antynomia kłamcy.

SBVR Structured English

Nad tym standardem warto zatrzymać się na dłuższą chwilę, gdyż w erze rozwijania narzędzi do SBVR (bardzo nieliczne i często niedopracowane) wyrasta on na sztandarowy słownik opisu słowników specjalizowanych. Potęgą tej notacji jest fakt, iż powiązania semantyczne, reguły biznesowe i wszelkie definicje przedstawiane są w postaci zdań i sformułowań w języku angielskim (oczywiście mocno zredukowanym na potrzeby formalizacji) zrozumiałych przede wszystkim dla ludzi biznesu, nie tylko dla projektantów systemów informatycznych.

Specjalne czcionki SBVR Structured English

To właśnie specjalnie stylizowane czcionki definiują SBVR Structured English i nadają wyrażeniom formalne znaczenie:

Czcionka 'term' - używana do zaznaczenia pojęć rzeczownikowych?? (noun concept) czyli najbardziej elementarnego (atomicznego) elementu słownika. Nie może jednak dotyczyć on konkretnej realizacji pojęcia. Termy mogą być dodatkowo opisane polami widocznymi na poniższym schemacie:

Schemat definiowania 'noun concept'

Czcionka 'name' - przeznaczona do oznaczania konkretnych obiektów, realizacji (individual koncept) lub też nazw własnych. Należy zaznaczyć, że również liczby są przedstawiane za pomocą tej czcionki.

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)

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

Za pomocą termór oraz wyrazów które opisuje się za pomocą czcionki 'verb' jesteśmy w stanie skonstruować koncept czasownikowy (verb concept). Takie konstrukcje pozwalają na opisywanie zależności pomiędzy wcześniej zdefiniowanymi pojęciami. Następnie w celu zdefiniowania reguły należy taki koncept czasownikowy obłożyć jednym z czterech dostępnych operatorów modalnych:
Aletyczne (używane do tworzenia reguł strukturalnych):

It is necessary that ... (Jest konieczne by ...)

It is possible that ... (Jest możliwe by...) oraz negacja (It is not possible that... - Nie jest możliwe by...)

Deontyczne (używane do tworzenia reguł operatywnych):

It is obligatory that ... (Istnieje obowiązek by...)

It is permitted that ... (Zezwala się by) oraz negacja (It is prohibited that... - Zabrania się by ...)

Reguły strukturalne są prawdziwe z definicji. Są jakby aksjomatami całej działalności, opisują znaczenie i zależności elementów występujących w tych regułach(np. „Jest możliwe by zamówienie posiadało więcej niż jedną pozycję”.). Tego rodzaju reguł nie zalicza się do reguł biznesowych. Do takich należą reguły operatywne (np. „Istnieje obowiązek by każde zamówienie zostało opłacone w ciągu 24 godzin”), które wyznaczają zasady zachowania w danych sytuacjach. Reguły takie mogą być łamane przez ludzi, dlatego wprowadza się pojęcia poziomu egzekwowania reguł (enforcement level).
Po dodaniu operatora modalnego należy dodać wszelkie konieczne kwantyfikatory jak np: każdy, co najmniej n, itp.

Parsowanie reguł:

Narzędzia zgodne z SBVR

Po długich poszukiwaniach, nie udało mi się odnaleźć jakichkolwiek prób tworzenia oprogramowania do SBVR w języku prolog. Natrafiłem przy okazji na poniższe narzędzia:

SBeaVeR

RuleXpress

Donald Chapin (OMG SBVR Project Leader) w swojej prezentacji wymienia jeszcze kilka programów, które opierają się na słownikach i regułach aczkolwiek żadne z nich nie jest zgodne z SBVR w takim stopniu co dwa powyższe.

Narzędzia zgodne z SBVR na etapie tworzenia

MDT-SBVR - Model Development Tools obsługujące specyfikację SBVR

NORMA - Natural ORM (Object Role Modelling) Architect for Visual Studio

Parser

Pierwsze podejście

Specyfikacja SBVR nie wspomina ani słowem o regułach gramatycznych rządzących zapisem reguł. Wynika to z faktu, że SBVR (jak sama nazwa wskazuje) dotyczy semantyki czyli powiązania znaczenia z jego reprezentacją. Istotny jest również brak narzuconego zapisu reguł w specyfikacji SBVR (stawia ona na równi wszystkie możliwe formaty).

KOD
Powyższy kod był testowany na implementacji SWI Prolog (Windows). Realizuje on (oczywiście w minimalnym zakresie) rozbiór logiczny reguł, który opisany jest w specyfikacji SBVR w rodziale 9 (zwłaszcza 9.2). „Korzeniem” drzewa pokonywanego przy parsowaniu jest dla uproszczenia (zamiast „rule”) nieterminal „Logical_formulation”. Dla uproszczenia pominięty został rodział 8 „Meaning and Representation Vocabulary”, który wprowadza powiązania między termami i faktami.

Specyfikacja SBVR pod kątem parsowania reguł

Jeżeli mówimy o parsowaniu SBVR to należy przyjąć parsowanie konkretnej notacji będącej zgodną ze specyfikacją SBVR. W tym wypadku przyjmujemy notację SBVR Structured English, która jest reprezentacją tekstową słowników oraz reguł. Jak więc wygląda tworzenie reguł?

Metodyka definiowania nowych słowników i zestawów reguł w standardzie SBVR
Powyższy schemat przedstawia kolejne kroki definiowania nowego słownika i zestawu reguł. Sposób ten wynika bezpośrednio z zależności pomiędzy sześcioma słownikami zdefiniowanymi w oficjalnej specyfikacji SBVR. Pierwszym krokiem jest zdefiniowanie zbioru konceptów tzw. noun concepts("Pojęcie – abstrakcyjny, myślowy odpowiednik przedmiotu. Po zdefiniowaniu pojęcie staje się terminem." - Wikipedia) za pomocą termów (reprezentacji - w tym wypadku tekstowych), który to zbiór będzie fundamentem do definiowania bardziej złożonych struktur. Kolejnymi elementami jakie należy zdefinować to fakty tzw. verb concepts definiujące zależności pomiędzy znaczeniami poszczególnych konceptów. Należy tu zaznaczyć rozdzielenie pomiędzy reprezentacją konceptu (termem) a jego znaczeniem. W specyfikacji SBVR zależnościom pomiędzy znaczeniami konceptów poświęcony jest podrozdział 8.1 Meaning (str 31).
Przykład EU-Rent Example (str 295):
branch type
Definition: concept that specializes the concept ‘branch’ and that classifies a branch based on hours of operation and car storage capacity
airport branch
Concept Type: branch type
Definition: branch that has an EU-Rent location and has large car storage and has 24-7 operation
Note: This kind of branch is usually at or near a major airport or rail terminal and has sufficient staff to have specialized roles in the workflow.
Necessity: the concept ‘airport branch’ is included in Branches by Type.

Poza zdefiniowaniem samej reprezentacji tekstowej pojęć branch type oraz airport branch, określane są zależności pomiędzy nimi. Zależność jest reprezentowana linią tekstu: „Concept Type: branch type” przy wpisie airport branch. Napotykając w regule wpis airport branch wiadomo, że jest to instancją bardziej ogólnego konceptu branch type. Rodzaje zależności między konceptami są zdefiniowane w rozdziale 8.1.1 Concepts (str 31). Te dwa rodzaje wpisów składają się na słownik dotyczący danej dziedziny.
Parsowanie reguł (rozbiór logiczny):

Aby możliwe było przeparsowanie powyższej reguły nie wystarczy słownik zawierający wpisy termów : driver, rental, barred driver. Konieczna jest jeszcze definicja zależności pomiędzy konceptami driver oraz barred driver (prawdopodobnie przez dodanie linii „Concept Type: driver”) mówiąca, że barred driver jest konceptem będącym podkategorią bardziej ogólnego konceptu driver.
Zależności definiowane są również przez fakty. Noun concepts występujące w fakcie zwane są rolami w fakcie i są uwzględniane podczas analizy logicznej sformułowań. O rodzajach sformułowań logicznych zawartych w wyrażeniach mówi rozdział 9.2 Logical formulations. Definiuje on również zależności logiczne pomiędzy sformułowaniami. W rodziale tym nie występuje żadna wzmianka o gramatyce zapisu tych sformułowań (wszak gramatyka może dotyczyć konkretnego zapisu a nie specyfikacji semantyki dopuszczającej różne zapisy - nawet w postaci diagramów).
Pewne namiastki gramatyki wprowadza rozdział opisujący notację SBVR Structured English (str 249), a zwłaszcza fragment przedstawiający słowa kluczowe tej notacji (str 251).Znajdujemy tam wpisy typu „it is obligatory that p - obligation formulation”. Niestety nie jest zdefiniowana „dolna”(dalsza od korzenia) część drzewa syntaktycznego w tym wypadku odzwierciedlona przez literę p, która ma reprezentować „expressions of propositions” czyli wyrażenie stwierdzenia. Przeszukując całą specyfikacją SBVR nie natrafiłem na reguły gramatyczne tworzenia takich właśnie wyrażeń.

SBVR posiada dobrze zdefiniowane narzędzia do definiowania zależności semantycznych oraz zależności logicznych. Niestety brak tu gramatyki wymaganej do klasycznego parsowania przy użyciu drzewa syntaktycznego.

Kolorowanie napisu na podstawie słownika (Prolog)

KOD w Prologu
Powyższy kod był tworzony i sprawdzany za pomocą SWI Prolog (Windows). W celu kolorowania napisu należy skompilować powyższy plik i wprowadzić cel typu:
go([it,is,obligatory,that,a,rental,has,a,rental,period]).
Na wyjściu stworzony zostanie plik HTML z odpowiednio stylizowanym napisem wejściowym. UWAGA! Program wypisuje wyjście do pierwszego nierozpoznanego napisu lub przetworzenia całego napisu wejściowego.
Przykładowy plik wyjściowy

Sprawozdanie

Prezentacja

Materiały

Linki

http://home.btconnect.com/BusinessSemantic/How_SBVR_Adds_Knowledge_Richness_to_ISO_TC_37_Terminology_Standards.pps - pokaz slajdów Donalda Chapina (Project Leader for SBVR) dobrze tłumaczący ideę SBVR

http://www.nafinsight.nl/Uploads/Files/Chapin_20tutorial.pdf - developing bussiness models with SBVR & BMM od 37 str pdf'a

http://www.omg.org/docs/formal/08-01-02.pdf - Specyfikacja SBVR

https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_bizrulesvocabularies2 - inny projekt o SBVR

https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_bizrulesvocabularies - jeszcze inny projekt o SBVR

http://java.sun.com/products/jmi/pdf/arch.pdf - MDA

http://www.ibm.com/developerworks/rational/library/3100.html - MDA

http://www.sparxsystems.com.au/bin/MDA%20Tool.pdf – MDA tool

http://www.agilemodeling.com/essays/mda.htm - MDA

http://www.semanticcore.org/Docs/MDA%20and%20SBVR%20v2.pdf – MDA & SBVR

http://wiki.eclipse.org/MDT/SBVR - SBVR + inne linki

http://blog.athico.com/2007/03/standards-based-approach-to-natural.html - sbvr & drools

https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_umlandardxtt:notatki - XMI, MOF

SBVR Parsing & Tools

http://sbeaver.sourceforge.net/about/tools.php - SBeaVeR open-source

http://www.rulexpress.com/index.php - RuleXpress komercyjna implementacja SBVR

http://opaals.org/website/newsletters/2009-01-30/index.htm - SBVR visual editor

http://www.kdmanalytics.com/sbvr/index.php - kdm

http://www.lsi.upc.edu/~jcabot/research/SBVR/index.html - UML scheme 2 SBVR Structured English

http://dataconstellation.com/blog/older/tags/parser - parser

http://files.opaals.org/OPAALS/Year_2_Deliverables/WP09/D9.10.pdf - SBVR use scenarios

http://c4i.gmu.edu/events/reviews/2008/papers/6_Loaiza.pdf -

http://www.eclipse.org/modeling/mdt/?project=sbvr#sbvr

Prolog parsing

http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/contents.html#7 - Prolog Natural Language Parsing

http://www.dai.ed.ac.uk/groups/ssp/bookpages/quickprolog/quickprolog.html - Prolog DCG's

http://www.im.pwr.wroc.pl/~przemko/prolog/m4s4.html - Prolog gramatyki

http://www.oopweb.com/Prolog/Documents/prologbook/Volume/node101.html

http://www.ling.helsinki.fi/kit/2004k/ctl272/Bangor/clbook_56.html - prolog DCG features