To jest stara wersja strony!


Opis

Tomasz Pałosz - tomekpalosz@o2.pl

translacja XTTML → R2ML 8-)

XTTML - format, który ma powstać na bazie XTT. XTT jest tabelarycznym sposobem reprezentacji wiedzy.

R2ML - jest obszernym i wygodnym zestawem zasad XMLowych pozwalającym na

  • wymianę zasad pomiędzy różnymi systemami i programami.
  • wzbogacanie ontologi za pomocą zasad.

Spotkania

08.03.04

TODO:

  • format reguł r2ml (Lukichev), prr (omg)

080318

080408

  • zgodność zrobionego r2ml z XSD (r2ml xmlschema!) xmlstarlet, inne
  • wizualizacja, werbalizacja
  • translacja do rif?
  • mozliwość uruchomienia na drools? See a VERY NICE tutorial on the group technologies. Login as guest, with key RMAI2007
  • jak atrybuty które są w r2ml mogą uprościć projekt therm, jak one się maja do atrybutów w rif

080422

  • therm osobna strona
  • minicases w r2ml
  • upload therm do drools + uruchom

080429

  • komplet plikow do R2ML w wiki, w tym xsd i translator → napisać do Giurca, Werner, cc: gjn
  • zestaw uwag po ang. co nie dziala w w.w., email jak wyzej
  • jak/czy można dostać urml z r2ml? patrz xmi!
  • jak zaimportować słownik do drools?

080520

  • translator (uakt. minicases GJN)
  • poczytać xtt
  • przemyśleć kwestię odwzorowania połączenia? mapowanie do invokeactionexpr?
  • mozliwość przejścia z r2ml prodrule do urml?

080603

  • sprawozd:
  • ?przejście xttml→xmi(urml) (prod rules)
  • ?przejście r2ml→xmi(urml) (prod rules)

Projekt

Translacja do RIF: W planach jest taki translator, ale w tej chwili nie ma go jeszcze zaimplementowanego. Atrybuty, z których korzystają oba formaty (RIF i R2ML) w podstawowej wersji są takie same tj. zgodne z rdf oraz xsd.

URML

URML dziedziczy z R2ML. Oba formaty są w sporej części zgodne (nie w pełni - prace nad pełną zgodnością trwają). Za pomocą programu Strelka można uzyskać kod R2ML'a z URML.

W związku z dziedziczeniem URML z R2ML mogą wystąpić problemy z przejściem w drugą stronę tj. z R2ML do URML.

W szczególnym przypadku reguły ProductionRule da się przekonwertować do URML.

Nie znalazłem informacji odnośnie konwertowanych wersji. URML wersja 0.2. R2ML wersja 0.5.

XTTML -> URML (XMI)

To rozwiązanie byłoby wygodne, bo XTTML→URML→R2ML.

Takie rozwiązanie nie jest możliwe. Sprawdzałem jak Strelka radzi sobie z wykorzystaniem InvokeActionExpression i nie da się tam zrobić wpisania w InvokeActionExpression takich formuł jak ja zaproponowałem. Invoke musi odnosić się do metody klasy.

Można ominąć ten problem robiąc metodę o takiej samej nazwie jak klasa (czyli konstruktor domyślny) i odnosić się do niego w InvokeActionExpression.

R2ML -> URML (XMI)

Jest wykonalne. Niestety nie znalazłem żadnego translatora. Nawet zespół, który pracuje nad regułami R2ML nie pisał ich ręcznie tylko generował za pomocą Strelki. Opisują to w swoim postępowaniu przy tworzeniu reguł dla projektu Derby2005.

Możliwe jest jednak stworzenie takiego translatora. Sądzę, że byłoby wygodniejsze konwertowanie do URML (XMI dla Strelki) niż konwertowanie do R2ML, gdyż ze Strelki można potem wygenerować R2ML. Reguły nie są skomplikowane. Poniżej zamieszczam najbardziej okrojone reguły jakie udało mi się uzyskać dla prostego przykładu.

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:URML="http:///URML.ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML">
  <notation:Diagram xmi:id="nD1" type="URML" element="element1" measurementUnit="Pixel">
    <styles xmi:type="notation:DiagramStyle" xmi:id="id1"/>
  </notation:Diagram>
  <uml:Package xmi:id="element1">
    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="idString" name="String"/>
    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="idBoolean" name="Boolean"/>
    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="idInteger" name="Integer"/>
    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="idFloat" name="Float"/>
    <packagedElement xmi:type="URML:ProductionRule" xmi:id="idPR" name="myPR1">
      <conditions xmi:type="URML:ClassificationAtom" xmi:id="idCA" condRule="idPR" filter="startDate-reservationDate>=5" clazz="idmyRental" classVariable="myRental"/>
      <producedActionExpr xmi:type="URML:AssignVariableActionExpr" xmi:id="idAE" rule="idPR" clazz="idmyRental" actionType="A" classVariable="myRental" statement="discount=10"/>
    </packagedElement>
    <packagedElement xmi:type="uml:Class" xmi:id="idmyRental" name="myRental">
      <ownedAttribute xmi:type="uml:Property" xmi:id="iddiscount" name="discount" type="idInteger" aggregation="composite"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="id_reservationDate" name="reservationDate" type="idInteger" aggregation="composite"/>
      <ownedAttribute xmi:type="uml:Property" xmi:id="id_startDate" name="startDate" type="idInteger" aggregation="composite"/>
    </packagedElement>
  </uml:Package>
</xmi:XMI>

Przy tak upakowanym kodzie istnieje problem odczytu takiego schematu w programie Strelka. Problem leży w zredukowanym fragmencie „notation:Diagram”. Efekt widoczny poniżej.

Problem interpretacji schematu Schemat URML

Tutaj kod R2ML wygenerowany na za pomocą Strelki z powyższego diagramu. Oczywiście kod w obu przypadkach jest identyczny.

<?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="myRental">
            <r2mlv:Attribute r2mlv:ID="discount">
                <r2mlv:range>
                    <r2mlv:Datatype r2mlv:ID="xs:integer"/>
                </r2mlv:range>
            </r2mlv:Attribute>
            <r2mlv:Attribute r2mlv:ID="reservationDate">
                <r2mlv:range>
                    <r2mlv:Datatype r2mlv:ID="xs:integer"/>
                </r2mlv:range>
            </r2mlv:Attribute>
            <r2mlv:Attribute r2mlv:ID="startDate">
                <r2mlv:range>
                    <r2mlv:Datatype r2mlv:ID="xs:integer"/>
                </r2mlv:range>
            </r2mlv:Attribute>
        </r2mlv:Class>
    </r2mlv:Vocabulary>
    <r2ml:ProductionRuleSet>
        <r2ml:ProductionRule r2ml:ruleID="myPR1">
            <r2ml:conditions>
                <r2ml:ObjectClassificationAtom r2ml:classID="myRental" r2ml:isNegated="false">
                    <r2ml:ObjectVariable r2ml:name="myRental"/>
                </r2ml:ObjectClassificationAtom>
                <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="5"/>
                        <r2ml:DatatypeFunctionTerm r2ml:datatypeFunctionID="numeric-substract">
                            <r2ml:dataArguments>
                                <r2ml:AttributeFunctionTerm r2ml:attributeID="reservationDate">
                                    <r2ml:contextArgument>
                                        <r2ml:ObjectVariable r2ml:name="myRental" r2ml:classID="myRental"/>
                                    </r2ml:contextArgument>
                                </r2ml:AttributeFunctionTerm>
                                <r2ml:AttributeFunctionTerm r2ml:attributeID="startDate">
                                    <r2ml:contextArgument>
                                        <r2ml:ObjectVariable r2ml:name="myRental" r2ml:classID="myRental"/>
                                    </r2ml:contextArgument>
                                </r2ml:AttributeFunctionTerm>
                            </r2ml:dataArguments>
                        </r2ml:DatatypeFunctionTerm>
                    </r2ml:dataArguments>
                </r2ml:DatatypePredicateAtom>
            </r2ml:conditions>
            <r2ml:producedAction>
                <r2ml:AssignActionExpression r2ml:propertyID="discount">
                    <r2ml:contextArgument>
                        <r2ml:ObjectVariable r2ml:name="myRental"/>
                    </r2ml:contextArgument>
                    <r2ml:TypedLiteral r2ml:datatypeID="xs:integer" r2ml:lexicalValue="10"/>
                </r2ml:AssignActionExpression>
            </r2ml:producedAction>
        </r2ml:ProductionRule>
    </r2ml:ProductionRuleSet>
</r2ml:RuleBase>
pl/miw/miw08_xtt_r2ml.1212133347.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