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:miw08_uml_urml [2008/04/07 10:57]
gjn wskazowki na 15
pl:miw:miw08_uml_urml [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 ====== UML_URML ====== ====== UML_URML ======
 +__**Projekt zakończony**__
 +
 Piotr Przybycin <​pit4@o2.pl>​ Piotr Przybycin <​pit4@o2.pl>​
 Design rbs examples with URML. Design rbs examples with URML.
Linia 6: Linia 8:
  
  
-====== Spotkania ======+====== Spotkania ====== ​  
  
 ===== 080415 ===== ===== 080415 =====
   * próba exportu do R2ML, etc, patrz [[http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=node/​15|translatory]]   * próba exportu do R2ML, etc, patrz [[http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=node/​15|translatory]]
   * opis instalacji strelki, w tym ew. błędy, niedoróbki,​ usterki   * opis instalacji strelki, w tym ew. błędy, niedoróbki,​ usterki
-  * opis uwag, co do projektowania Therm w strelce: ​ +  * opis uwag, co do projektowania Therm w strelce: ​   * czy w urml da się zrealizować całość przykładu? ​
-    * czy w urml da się zrealizować całość przykładu? ​+
     * czy sa jakieś ograniczenia urml co do składni, semantyki? ​     * czy sa jakieś ograniczenia urml co do składni, semantyki? ​
     * czy sa jakieś mechanizmy ułatwiające potem integrację z większą aplikacją w Javie, w której nasz therm byłby systemem decyzyjnym, a w Javie np. klasy wizualizujące decyzję     * czy sa jakieś mechanizmy ułatwiające potem integrację z większą aplikacją w Javie, w której nasz therm byłby systemem decyzyjnym, a w Javie np. klasy wizualizujące decyzję
Linia 18: Linia 20:
  
  
-====== ​Projekt ​======+===== 080527 ​===== 
 +  * przejście r2ml->​urml (prod rules) 
 +  * czy/jak da się przejść z r2ml do XMI (urml) i vice versa 
 +  * sprawozdanie 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +======Sprawozdanie======
  
 ===Wstęp=== ===Wstęp===
Linia 28: Linia 41:
  
 Narzędziem,​ które umożliwia modelowanie systemów w języku URML jest Strelka, stworzona przez REWERSE Working Group I1. Narzędziem,​ które umożliwia modelowanie systemów w języku URML jest Strelka, stworzona przez REWERSE Working Group I1.
 +
 +===Instalacja programu Strelka===
 +
 +Będziemy korzystać z programu Strelka w wersji 0.3 dla platformy Eclipse.
 +Aby w pelni korzystac z możliwości programu wystarczy pobrać plik [[http://​oxygen.informatik.tu-cottbus.de/​strelka/​Strelka_0.3_Eclipse.zip|download_Strelka]],​ rozpakować go do dowolnego folderu i uruchomić plik "​eclipse.exe"​.
 +Żadne dodatkowe instalacje nie są potrzebne. Po uruchuchomieniu możemy otworzyć również pewne gotowe przykłady, z katalogu ./​examples. ​
 +
 +W razie jakichkolwiek wątpliwości odsyłam do: [[http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=node/​46|REWERSEworking.groupI1-Strelka]]
 + 
 +
  
  
Linia 44: Linia 67:
  
  
-====== Sprawozdanie ====== 
  
  
-====== ​Materiały ======+Projektowanie naszego układu przebiegło bez większych problemów. Środowisko okazało się bardzo intuicyjne i pozwoliło zaprojektować całość układu bez zbędnych modyfikacji.  
 +Nie zaobserwowałem również żadnych ograniczeń co do składni czy semantyki. Integracja w derivation rules realizowana jest przy użyciu logicznego AND, czyli wszystkie warunki muszą mieć wartość 
 +true. Jeśli chcemy aby reguła dawała wartość true na wyjściu dla wartości false warunku; musimy wtedy zanegować wartość tego warunku.  
 + 
 +Znalazłem także narzędzia ułatwiające integrację naszego modelu, ze środowiskami takimi jak: 
 +Jena 2, Jess, F-Logic. Aby wygenerować kod danej reguły dla danego środowiska wystarczy kliknąć na nią prawym przyciskiem myszy, a następnie wybrać "​Translate to..." oraz interesujące nas środowisko. 
 +Szczególnie interesująca jest integracja z platformą Jess. Jess jest środowiskiem w pełni stworzonym w języku Java firmy Sun. Przy jego pomocy mamy możliwość tworzenia programów w Javie, które będą potrafiły 
 +wnioskować na podstawie wiedzy dostarczonej w formie reguł. Jess jest językiem, który daje dostęp do wszystkich API Javy. 
 + 
 +Przykładowy kod po translacji do Jess dla reguły DR_bizh:  
 +<code xml> 
 +<?xml version="​1.0"​ encoding="​UTF-8"?>​ 
 +<!--// Jess output of R2ML derivation rules-->​ 
 +<​jess>​ 
 +   <​pre>​(defrule DR_bizh (Hour  ? ) (and (test (> "​9"​ (IDhour ​ ? ) )) (test  (< "​16"​ (IDhour ​ ? ) )) ) (Workday ​ ? )   => (Bizh  ? ) )  
 + 
 +</​pre>​ 
 +</​jess>​ 
 +</​code>​ 
 +Dla lepszego poznania środowiska Jess: [[http://​www.jessrules.com/​|JessRules.com]] 
 + 
 + 
 +===Eksport do R2ML-u=== 
 +Przy użyciu Strelki możemy również w bardzo prosty sposób uzyskać zapis naszych reguł w standardzie R2ML. 
 +Wystarczy kliknać prawym przyciskiem myszy na daną regułę a następnie wybrać "​Preview R2ML"​. 
 + 
 + 
 + 
 +Przykładowy kod R2ML dla reguły DR_bizh: 
 + 
 +<code xml> 
 +   <?​xml version="​1.0"​ encoding="​UTF-8"​ standalone="​yes"?>​ 
 +<​r2ml:​RuleBase xsi:​schemaLocation="​http://​oxygen.informatik.tu-cottbus.de/​R2ML/​0.4/​R2ML.xsd"​ xmlns:​dc="​http://​purl.org/​dc/​elements/​1.1/"​ xmlns:​r2mlv="​http://​www.rewerse.net/​I1/​2006/​R2ML/​R2MLV"​ xmlns:​xs="​http://​www.w3.org/​2001/​XMLSchema"​ xmlns:​r2ml="​http://​www.rewerse.net/​I1/​2006/​R2ML"​ xmlns:​soap="​http://​www.w3.org/​2001/​12/​soap-envelope"​ xmlns:​xsi="​http://​www.w3.org/​2001/​XMLSchema-instance">​ 
 +    <​r2mlv:​Vocabulary>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Day">​ 
 +            <​r2mlv:​Attribute r2mlv:​ID="​IDday">​ 
 +                <​r2mlv:​range>​ 
 +                    <​r2mlv:​Datatype r2mlv:​ID="​xs:​integer"/>​ 
 +                </​r2mlv:​range>​ 
 +            </​r2mlv:​Attribute>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Weekend">​ 
 +            <​r2mlv:​superClass>​ 
 +                <​r2mlv:​Class r2mlv:​ID="​Day"/>​ 
 +            </​r2mlv:​superClass>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Workday">​ 
 +            <​r2mlv:​superClass>​ 
 +                <​r2mlv:​Class r2mlv:​ID="​Day"/>​ 
 +            </​r2mlv:​superClass>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Hour">​ 
 +            <​r2mlv:​Attribute r2mlv:​ID="​IDhour">​ 
 +                <​r2mlv:​range>​ 
 +                    <​r2mlv:​Datatype r2mlv:​ID="​xs:​integer"/>​ 
 +                </​r2mlv:​range>​ 
 +            </​r2mlv:​Attribute>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Notbizh"/>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Bizh"/>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Month">​ 
 +            <​r2mlv:​Attribute r2mlv:​ID="​IDmonth">​ 
 +                <​r2mlv:​range>​ 
 +                    <​r2mlv:​Datatype r2mlv:​ID="​xs:​integer"/>​ 
 +                </​r2mlv:​range>​ 
 +            </​r2mlv:​Attribute>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Autumn">​ 
 +            <​r2mlv:​superClass>​ 
 +                <​r2mlv:​Class r2mlv:​ID="​Month"/>​ 
 +            </​r2mlv:​superClass>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Winter">​ 
 +            <​r2mlv:​superClass>​ 
 +                <​r2mlv:​Class r2mlv:​ID="​Month"/>​ 
 +            </​r2mlv:​superClass>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Spring">​ 
 +            <​r2mlv:​superClass>​ 
 +                <​r2mlv:​Class r2mlv:​ID="​Month"/>​ 
 +            </​r2mlv:​superClass>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Summer">​ 
 +            <​r2mlv:​superClass>​ 
 +                <​r2mlv:​Class r2mlv:​ID="​Month"/>​ 
 +            </​r2mlv:​superClass>​ 
 +        </​r2mlv:​Class>​ 
 +        <​r2mlv:​Class r2mlv:​ID="​Thermostat">​ 
 +            <​r2mlv:​Attribute r2mlv:​ID="​temp">​ 
 +                <​r2mlv:​range>​ 
 +                    <​r2mlv:​Datatype r2mlv:​ID="​xs:​float"/>​ 
 +                </​r2mlv:​range>​ 
 +            </​r2mlv:​Attribute>​ 
 +        </​r2mlv:​Class>​ 
 +    </​r2mlv:​Vocabulary>​ 
 +    <​r2ml:​DerivationRuleSet>​ 
 +        <​r2ml:​DerivationRule r2ml:​ruleID="​DR_bizh">​ 
 +            <​r2ml:​conditions>​ 
 +                <​r2ml:​ObjectClassificationAtom r2ml:​classID="​Hour"​ r2ml:​isNegated="​false">​ 
 +                    <​r2ml:​ObjectVariable/>​ 
 +                </​r2ml:​ObjectClassificationAtom>​ 
 +                <​r2ml:​qf.Conjunction>​ 
 +                    <​r2ml:​DatatypePredicateAtom r2ml:​datatypePredicateID="​swrlb:​greaterThanOrEqual"​ r2ml:​isNegated="​false"​ xmlns:​swrlb="​http://​www.w3.org/​2003/​11/​swrlb">​ 
 +                        <​r2ml:​dataArguments>​ 
 +                            <​r2ml:​TypedLiteral r2ml:​datatypeID="​xs:​integer"​ r2ml:​lexicalValue="​9"/>​ 
 +                            <​r2ml:​AttributeFunctionTerm r2ml:​attributeID="​IDhour">​ 
 +                                <​r2ml:​contextArgument>​ 
 +                                    <​r2ml:​ObjectVariable r2ml:​classID="​Hour"/>​ 
 +                                </​r2ml:​contextArgument>​ 
 +                            </​r2ml:​AttributeFunctionTerm>​ 
 +                        </​r2ml:​dataArguments>​ 
 +                    </​r2ml:​DatatypePredicateAtom>​ 
 +                    <​r2ml:​DatatypePredicateAtom r2ml:​datatypePredicateID="​swrlb:​lessThanOrEqual"​ r2ml:​isNegated="​false"​ xmlns:​swrlb="​http://​www.w3.org/​2003/​11/​swrlb">​ 
 +                        <​r2ml:​dataArguments>​ 
 +                            <​r2ml:​TypedLiteral r2ml:​datatypeID="​xs:​integer"​ r2ml:​lexicalValue="​16"/>​ 
 +                            <​r2ml:​AttributeFunctionTerm r2ml:​attributeID="​IDhour">​ 
 +                                <​r2ml:​contextArgument>​ 
 +                                    <​r2ml:​ObjectVariable r2ml:​classID="​Hour"/>​ 
 +                                </​r2ml:​contextArgument>​ 
 +                            </​r2ml:​AttributeFunctionTerm>​ 
 +                        </​r2ml:​dataArguments>​ 
 +                    </​r2ml:​DatatypePredicateAtom>​ 
 +                </​r2ml:​qf.Conjunction>​ 
 +                <​r2ml:​ObjectClassificationAtom r2ml:​classID="​Workday"​ r2ml:​isNegated="​false">​ 
 +                    <​r2ml:​ObjectVariable/>​ 
 +                </​r2ml:​ObjectClassificationAtom>​ 
 +            </​r2ml:​conditions>​ 
 +            <​r2ml:​conclusion>​ 
 +                <​r2ml:​ObjectClassificationAtom r2ml:​classID="​Bizh">​ 
 +                    <​r2ml:​ObjectVariable/>​ 
 +                </​r2ml:​ObjectClassificationAtom>​ 
 +            </​r2ml:​conclusion>​ 
 +        </​r2ml:​DerivationRule>​ 
 +    </​r2ml:​DerivationRuleSet>​ 
 +</​r2ml:​RuleBase>​ 
 +</​code>​ 
 + 
 +===Zgodność z innymi językami=== 
 + 
 +R2ML jest obszernym, i przyjaznym dla użytkownika bazującym na XML-u językiem, którego głównymi zadaniami są: 
 +  * wymiana reguł między różnymi systemami i narzędziami 
 +  * możliwość łączenia poszczególnych systemów decyzyjnych z narzędziami bazującymi na R2ML-u w celu zapewnienia wizualizacji,​ werbalizacji,​ weryfikacji oraz ratyfikacji. 
 + 
 + 
 + 
 +R2ML jest bardzo wszechstronny ponieważ integruje takie języki jak: 
 +  * the Object Constraint Language (OCL) 
 +  * the Semantic Web Rule Language (SWRL) 
 +  * the Rule Markup Language (RuleML) 
 + 
 +Obecną wersją języka R2ML jest wersja 0.5 (Release Date: August 23, 2007). 
 +Jest ona oparta na schemacie XML, który jest dostępny [[http://​www.w3.org/​2001/​XMLSchema|XMLSchema]] 
 + 
 +Język R2ML jest ciągle rozwijany i mamy obecnie również dostęp do różnorakich translatorów takich jak: 
 + 
 +  * R2ML to F-Logic 
 +  * F-LogicXML to R2ML 
 +  * R2ML to Jess 
 +  * R2ML to RuleML 
 +  * RuleML to R2ML 
 +  * R2ML to JenaRules 
 +  * JenaRules to R2ML 
 +  * R2ML to JBoss Rules 
 +  * SWRL to R2ML 
 +  * R2ML to SWRL 
 +  * R2ML to XMI 
 +  * R2ML to OCL 
 +  * OCL to R2ML 
 + 
 +Wszystkie dostępne pod linkiem [[http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=node/​15|translatory]] 
 + 
 + 
 +Przykładowe przejście z kodu R2ML do XMI dla Production Rule z przykładu:​[[http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=node/​17|przykład.]] 
 + 
 + 
 +<code xml> 
 +<?xml version = '​1.0'​ encoding = '​ISO-8859-1'​ ?> 
 +<XMI xmi.version = '​1.2'​ timestamp = 'Tue Jun 03 13:12:09 CEST 2008'>​ 
 +  <​XMI.header>​ 
 +    <​XMI.documentation>​ 
 +      <​XMI.exporter>​Netbeans XMI Writer</​XMI.exporter>​ 
 +      <​XMI.exporterVersion>​1.0</​XMI.exporterVersion>​ 
 +    </​XMI.documentation>​ 
 +  </​XMI.header>​ 
 +  <​XMI.content>​ 
 +    <​R2ML.ProductionRuleSet xmi.id = '​a1'/>​ 
 +    <​R2ML.ProductionRuleSet xmi.id = '​a2'/>​ 
 +    <​R2ML.Atoms.AtBasic.ObjectClassificationAtom xmi.id = '​a3'​ isNegated = '​false'/>​ 
 +    <​R2ML.Terms.TerBasic.Variables.ObjectVariable xmi.id = '​a4'/>​ 
 +    <​R2ML.Terms.TerFunctional.AttributeFunctionTerm xmi.id = '​a5'>​ 
 +      <​R2ML.Terms.TerFunctional.AttributeFunctionTerm.attribute>​ 
 +        <​R2ML.Vocabulary.VocBasic.Attribute xmi.idref = '​a6'/>​ 
 +      </​R2ML.Terms.TerFunctional.AttributeFunctionTerm.attribute>​ 
 +      <​R2ML.Terms.TerFunctional.AttributeFunctionTerm.contextArgument>​ 
 +        <​R2ML.Terms.TerBasic.Variables.ObjectVariable xmi.idref = '​a4'/>​ 
 +      </​R2ML.Terms.TerFunctional.AttributeFunctionTerm.contextArgument>​ 
 +    </​R2ML.Terms.TerFunctional.AttributeFunctionTerm>​ 
 +    <​R2ML.Terms.TerFunctional.DatatypeFunctionTerm xmi.id = '​a7'>​ 
 +      <​R2ML.Terms.TerFunctional.DatatypeFunctionTerm.function>​ 
 +        <​R2ML.Vocabulary.VocFunctional.DatatypeFunction xmi.idref = '​a8'/>​ 
 +      </​R2ML.Terms.TerFunctional.DatatypeFunctionTerm.function>​ 
 +      <​R2ML.Terms.TerFunctional.DatatypeFunctionTerm.dataArguments>​ 
 +        <​R2ML.Vocabulary.VocBasic.TypedLiteral xmi.idref = '​a9'/>​ 
 +        <​R2ML.Terms.TerFunctional.AttributeFunctionTerm xmi.idref = '​a5'/>​ 
 +      </​R2ML.Terms.TerFunctional.DatatypeFunctionTerm.dataArguments>​ 
 +    </​R2ML.Terms.TerFunctional.DatatypeFunctionTerm>​ 
 +    <​R2ML.Vocabulary.VocBasic.TypedLiteral xmi.id = '​a9'​ lexicalValue = '​600'>​ 
 +      <​R2ML.Vocabulary.VocBasic.TypedLiteral.type>​ 
 +        <​R2ML.Vocabulary.VocBasic.Datatype xmi.idref = '​a10'/>​ 
 +      </​R2ML.Vocabulary.VocBasic.TypedLiteral.type>​ 
 +    </​R2ML.Vocabulary.VocBasic.TypedLiteral>​ 
 +    <​R2ML.Vocabulary.VocBasic.Attribute xmi.id = '​a6'​ predicateCategory = '​closed'/>​ 
 +    <​R2ML.Vocabulary.VocBasic.Datatype xmi.id = '​a10'​ predicateCategory = '​closed'/>​ 
 +    <​R2ML.Vocabulary.VocFunctional.DatatypeFunction xmi.id = '​a8'​ arity = '​0'/>​ 
 +  </​XMI.content>​ 
 +</​XMI>​ 
 +</​code>​ 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +====== Przydatne linki ======
  
 [[http://​developers.sun.com/​jsenterprise/​learning/​tutorials/​jse8/​uml_class_diagram.html|UML Modeling: Creating Class Diagrams - Tutorial]] [[http://​developers.sun.com/​jsenterprise/​learning/​tutorials/​jse8/​uml_class_diagram.html|UML Modeling: Creating Class Diagrams - Tutorial]]
  
 [[http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=URML|URML -- a UML-Based Rule Modeling Language - REWERSE Working Group I1 page]] [[http://​oxygen.informatik.tu-cottbus.de/​rewerse-i1/?​q=URML|URML -- a UML-Based Rule Modeling Language - REWERSE Working Group I1 page]]
pl/miw/miw08_uml_urml.1207558645.txt.gz · ostatnio zmienione: 2019/06/27 15:58 (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