Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:miw:2009:miw09_prolog_sbvr [2009/04/23 13:07]
jsi08
pl:miw:2009:miw09_prolog_sbvr [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
-====== ​Opis ====== +~~ODT~~ 
-Patryk Łuczyński ​, <​tapirat@gmail.com>​ \\  +====== ​MIW 2009 Prolog_SBVR ​====== 
-==== Prolog_SBVR ====+ 
 +**Zrealizował:​ [[tapirat@gmail.com|Patryk Łuczyński]] (4RI) 
   * Look at the [[http://​www.omg.org/​spec/​SBVR/​|SBVR]].   * Look at the [[http://​www.omg.org/​spec/​SBVR/​|SBVR]].
   * Prepare a concise desc/​present.   * Prepare a concise desc/​present.
Linia 8: Linia 10:
   * provide simple analysis of the SBVR knowledge base on top of the parser   * provide simple analysis of the SBVR knowledge base on top of the parser
  
-====== Spotkania ====== 
  
  
-===== 20090416 ​==== +====== Spotkania ====== 
-  * rozczytac spec sbvr do poz. parsowania poj. przykładu+[[pl:​miw:​2009:​miw09_prolog_sbvr:​spotkania|Spotkania]]
  
-===== 200903126 ==== 
-  * rulexpress, opis + sshot 
  
-===== 20090312 ​==== +====== ​Sprawozdanie ​======
-  * czy ktos cos robil do SBVR w prologu? +
- +
-===== 20090225 ==== +
-  * nie pakujemy sie w modal logic +
- +
-====== Projekt ​======+
 ===== Opis SBVR ===== ===== Opis SBVR =====
 ==== SBVR w architekturze MDA (Model Driven Architecture) ==== ==== SBVR w architekturze MDA (Model Driven Architecture) ====
Linia 60: Linia 53:
   * 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).\\ \\    * 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).\\ \\ 
  
-{{:​pl:​miw:​2009:​miw09_prolog_sbvr:​pliki:​SBVR_voc_constr.gif?​600|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. Terminologia użyta na schemacie zostanie omówiona przy okazji dyskusji nad SBVR Structured English. \\ \\ +
  
 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. \\ \\ 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. \\ \\
Linia 77: Linia 69:
  
 ====Reguły w SBVR==== ====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:+Za pomocą ​termów ​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):​ Aletyczne (używane do tworzenia reguł strukturalnych):​
Linia 94: Linia 86:
  
  
-Parsowanie reguł (rozbiór logiczny): \\  +
-{{:​pl:​miw:​2009:​miw09_prolog_sbvr:​pliki:​sbvr_rule_parsing3.jpg}}+
  
 Parsowanie reguł: Parsowanie reguł:
Linia 101: Linia 92:
 {{:​pl:​miw:​2009:​miw09_prolog_sbvr:​pliki:​sbvr_rule_parsing2.jpg}} {{:​pl:​miw:​2009:​miw09_prolog_sbvr:​pliki:​sbvr_rule_parsing2.jpg}}
  
-CDN+
  
  
Linia 122: Linia 113:
  
 \\  \\ 
-[[http://student.agh.edu.pl/​~tapir/MIW/parse.txt|KOD]]+[[https://ai.ia.agh.edu.pl/​wiki/_media/pl:​miw:​2009:​miw09_prolog_sbvr:​pliki:​parser.txt|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. 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ł=== ===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 [[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf|specyfikacją SBVR]]. W tym wypadku przyjmujemy notację SBVR Structured English, która jest reprezentacją tekstową słowników oraz reguł. ​ 
  
 +
 +Jeżeli mówimy o parsowaniu SBVR to należy przyjąć parsowanie konkretnej notacji będącej zgodną ze [[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf|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ł?\\ \\ 
 +
 +
 +{{:​pl:​miw:​2009:​miw09_prolog_sbvr:​pliki:​SBVR_voc_constr.gif?​600|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([[http://​pl.wikipedia.org/​wiki/​Poj%C4%99cie|"​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 [[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf#​page=31|podrozdział 8.1 Meaning (str 31)]]. ​
 +\\ \\ 
 +Przykład [[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf#​page=295|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.
 \\ \\  \\ \\ 
-[[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf#​Page=15|Rozdzial]] 
  
  
 +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 [[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf#​page=31|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): \\ 
 +{{:​pl:​miw:​2009:​miw09_prolog_sbvr:​pliki:​sbvr_rule_parsing3.jpg}} ​
 +\\
  
-====== ​Sprawozdanie ======+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 [[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf#​page=61|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 [[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf#​page=249|rozdział opisujący notację SBVR Structured English (str 249)]], a zwłaszcza fragment przedstawiający ​ [[http://​student.agh.edu.pl/​~tapir/​MIW/​08-01-02.pdf#​page=251|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) ​=== 
 + 
 +[[https://​ai.ia.agh.edu.pl/​wiki/​_media/​pl:​miw:​2009:​miw09_prolog_sbvr:​pliki:​koloruj.txt|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.  
 +\\ \\  
 +[[http://​student.agh.edu.pl/​~tapir/​MIW/​output.html|Przykładowy plik wyjściowy]]
  
  
 ====== Prezentacja ====== ====== Prezentacja ======
 +[[pl:​miw:​2009:​miw09_prolog_sbvr:​prezentacja|Prezentacja projektu]]
 +
 ====== Materiały ====== ====== Materiały ======
 ====Linki==== ====Linki====
pl/miw/2009/miw09_prolog_sbvr.1240484847.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0