To jest stara wersja strony!


Opis

Michał, Rogula, michal.rogula@wp.pl

  1. Porównać i omówić metody reprezentowania atrybutów w językach:
  • RDF
  • OWL
  • RIF
  • R2ML
  • RuleML

oraz metody reprezentowania reguł w:

  • RIF
  • R2ML
  • RuleML

Projekt

Jeżeli dzień=poniedziałek wtedy temp=20st

mamy 2 atrybuty:

  • dzień, przyjmuje wart symboliczne ze zb: pon-niedz
  • temp, jest liczbą, np. float, z zakresu, np. 0-20st

Rozważania na temat zapisu powyższej reguły za pomocą:

SPOTKANIA

Sprawozdanie

1. RIF(Rule Interchange Format) jest stworzonym przez W3C (Word Wide Web Consorcium) formatem reguł pozwalających na ich wymianę dla różnych języków reguł w sieciach semantycznych (RDF, OWL). Format RIF jest ciągle w fazie rozwoju, jedyne dostępne dokumenty są to szkice specyfikacji poszczególnych modułów (Working Draft). Do rozwijanych dokumentów należą m.in. RIF Framework for Logic Dialects oraz RIF Basic Logic Dialect

Atrybuty w RIF + RDF oraz OWL Kompatybilność

Dokładny opis specyfikacji RIF można znaleźć w projekcie XTT_RIF. Dla mnie istotna, z punktu widzenia projektu, jest wiedza jak zapisywać typowe dla reguł elementy tj:

  • wartosc logiczna: np: B
<Var> B </Var>
  • stałe argumenty: np: 300
<arg><Const type="rds:long"> 300 </Const></arg>
  • suma: n+1
<Uniterm>
<op><Const type="rif:iri"> op:numeric-add </Const></op>
<arg><Const type=""> 1 </Const></arg>
<arg><Var> n </Var></arg>
</Uniterm>
  • różnica: n-1
<Uniterm>
<op><Const type="rif:iri"> op:numeric-subtract </Const></op>
<arg><Const type=""> 1 </Const></arg>
<arg><Var> n </Var></arg>
</Uniterm>
  • równość: (wyr_1) = (wartosc)
<Equal>
<arg> wyr_1 </arg>
<arg> wartosc </arg>
</Equal>
  • nierówność: n > 0
<Uniterm>
<op><Const type="rif:iri"> op:numeric-greater-than </Const></op>
<arg><Var> n </Var></arg>
<arg><Const type="xsd:decimal"> 0 </Const></arg>
</Uniterm>
  • nierówność: n ⇐ 1
<Uniterm>
<op><Const type="rif:iri"> op:numeric-less-or-equal-than </Const></op>
<arg><Var> n </Var></arg>
<arg><Const type="xsd:decimal"> 0 </Const></arg>
</Uniterm>
  • suma logiczna : (wyr_1) and (wyr_2)
<And>
<formula>
(wyr_1)
</formula> 
<formula>
(wyr_2)
</formula>
</And>
  • warunek if : (conclusion) if (conditions)
<Implies>
<if>
(conditions)
</if>
<then>
(conclusion)
</then>
</Implies>

Teraz, na podstawie powyższej wiedzy, możemy spróbować zapisać nasz przykład (Jeżeli dzień=poniedziałek wtedy temp=20st) za pomocą RIF:

<?xml version="1.0" encoding="UTF-8"?>
 
<Ruleset>
<rule>
  <declare><Var> day </Var></declare> 
  <formula>
   <Implies>
    <if>
      <formula>
        <Equal>
         <arg><Var> day </Var></arg>
         <arg><Const type="xsd:string">Monday</Const></arg>
        </Equal>
      </formula> 
    </if>
    <then>
      <Uniterm>
       <op><Const type="rif:local">temp</Const></op>
       <arg><Const type="rds:positiveInteger">20</Const></arg>
      </Uniterm>
    </then>
   </Implies>
  </formula>
 </rule>
</Ruleset>

W analogiczny sposób możemy zapisać większość reguł. Przykładem może być tu całość HeKatE Case Thermostat którego reguły przedstawione w RIF wyglądają nastepująco: therm in RIF.

2. R2ML – Reverse Rule Markup Language powstał z inicjatywy REWERSE Working Group I1, w celu ułatwienia wymiany reguł między różnymi systemami oraz narzędziami, wzbogacenia ontologii o reguły oraz możliwości łączenia systemów regułowych z narzedziami R2ML do wizualizacji, weryfikacji, walidacji oraz werbalizacji. R2ML wspiera Integrity Rules, Derivation Rules, Production Rules oraz Reaction Rules. R2ML integruje Object Constraint Language (OCL), Semantic Web Rule Language (SWRL) oraz Rule Markup Language (RuleML).

Nie musimy być zaznajomieni ze wszystkimi elementami języka R2ML w celu wykorzystania jej wydajnością. Aby można było użyć R2ML’a do przedstawiania reguł potrzebna jest wiedza jak zapisywać typowe dla nich elementy. Poniżej przedstawiam kilka takich elementów zapisanych w R2ML ver.0.4:

  • wartość logiczna: np: B
<r2ml:GenericVariable r2ml:name="B"/>
  • stałe argumenty: np: 300
<r2ml:TypedLiteral r2ml:lexicalValue="300" r2ml:datatype="xs:integer"/>
  • suma: n+1
<r2ml:DatatypeFunctionTerm r2ml:datatypeFunction="op:numeric-add">
   <r2ml:dataArguments>
   <r2ml:GenericVariable r2ml:name="n"/>
      <r2ml:TypedLiteral r2ml:lexicalValue="1" r2ml:datatype="xs:integer"/>
   </r2ml:dataArguments>
</r2ml:DatatypeFunctionTerm>
  • różnica: n-1
<r2ml:DatatypeFunctionTerm r2ml:datatypeFunction="op:numeric-subtract">
  <r2ml:dataArguments>
   <r2ml:GenericVariable r2ml:name="n"/>
       <r2ml:TypedLiteral r2ml:lexicalValue="1" r2ml:datatype="xs:integer"/>
  </r2ml:dataArguments>
</r2ml:DatatypeFunctionTerm>
  • równość: (wyr_1) = (wartosc)
<r2ml:EqualityAtomr2ml:isNegated="false">
   <r2ml:ObjectVariabler2ml:name="wyr_1"/>
   <r2ml:ObjectVariabler2ml:name="wartosc"/>
</r2ml:EqualityAtom>
  • nierówność: n > 0
<r2ml:DatatypePredicateAtomr2ml:datatypePredicateID="swrlb:greaterThan">
  <r2ml:dataArguments>
  <r2ml:GenericVariable r2ml:name="n"/>
    <r2ml:TypedLiteral r2ml:lexicalValue="1" r2ml:datatype="xs:integer"/>
  </r2ml:dataArguments>
</r2ml:DatatypePredicateAtom>
  • nierówność: n ⇐ 1
<r2ml:DatatypePredicateAtomr2ml:datatypePredicateID="swrlb: lessThanOrEqual ">
  <r2ml:dataArguments>
  <r2ml:GenericVariable r2ml:name="n"/>
     <r2ml:TypedLiteral r2ml:lexicalValue="1" r2ml:datatype="xs:integer"/>
  </r2ml:dataArguments>
</r2ml:DatatypePredicateAtom>
  • suma logiczna : (wyr_1) and (wyr_2)
<r2ml:GenericAtom r2ml:isNegated="false" r2ml:predicateID="wyr_1">
  <r2ml:arguments>
  </r2ml:arguments>
  </r2ml:GenericAtom>
  <r2ml:GenericAtom r2ml:isNegated="false" r2ml:predicateID="wyr_2">
  <r2ml:arguments>
  </r2ml:arguments>
</r2ml:GenericAtom>
  • warunek if : (conclusion) if (conditions)
<r2ml:DerivationRule>
<r2ml:conditions>
     (conditions)
</r2ml:conditions>
<r2ml:conclusion>
     (conclusion)  
</r2ml:conclusion>
</r2ml:DerivationRule>
  • funkcje: fun_name(B)
<r2ml:GenericFunctionTermr2ml:genericFunctionID=" fun_name ">
  <r2ml:arguments>
  <r2ml:GenericVariabler2ml:name="B"/>
  </r2ml:arguments>
</r2ml:FunctionTerm>

Teraz możemy spróbować zapisać nasz przykład (Jeżeli dzień=poniedziałek wtedy temp=20st) za pomocą R2ML. Przedstawmy go w postaci:

	temp = 20    if    day = monday

wówczas zapis w R2ML wyglada następująco:

<?xml version="1.0" encoding="UTF-8" ?>
<r2ml:RuleBase xmlns:r2ml="http://www.rewerse.net/I1/2006/R2ML"
          xmlns:r2mlv="http://www.rewerse.net/I1/2006/R2ML/R2MLV"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns:xs="http://www.w3.org/2001/XMLSchema" 
          xmlns:userv="http://www.businessrulesforum.com/2005/userv#" 
          xmlns:swrlb="http://www.w3.org/2003/11/swrlb"
          xsi:schemaLocation="http://oxygen.informatik.tu-cottbus.de/R2ML/0.5/R2ML.xsd">
 
<r2ml:DerivationRuleSet>
<r2ml:DerivationRule r2ml:ruleID="Rule" xmlns:swrlb="http://www.w3.org/2003/11/swrlb" xmlns:srv="http://www.services.org/EU-Rent/">
   <r2ml:Documentation>
    <r2ml:RuleText r2ml:textFormat="plain"  r2ml:ruleDiagram="examples:DR_scheduledService.gif">
      If day is a monday then temp is equal to 20 degrees.
    </r2ml:RuleText>
   </r2ml:Documentation>
   <r2ml:conditions>
     <r2ml:ObjectClassificationAtom r2ml:classID="monday">
      <r2ml:ObjectVariable r2ml:name="day"/>
     </r2ml:ObjectClassificationAtom>
   </r2ml:conditions>
   <r2ml:conclusion>
    <r2ml:DatatypePredicateAtom r2ml:datatypePredicateID="swrlb:equal">
     <r2ml:dataArguments>
      <r2ml:ObjectVariable r2ml:name="temp"/>
      <r2ml:TypedLiteral r2ml:lexicalValue="20" r2ml:datatypeID="xs:positiveInteger"/>
     </r2ml:dataArguments>
    </r2ml:DatatypePredicateAtom>
   </r2ml:conclusion>
  </r2ml:DerivationRule>
</r2ml:DerivationRuleSet>
</r2ml:RuleBase>

Inne przykłady przedstawienia reguł za pomocą R2ML można znaleźć na stronie: Rule Examples. Ciekawym przykładem może być również całość hekate_case_thermostat zapisana w R2ML: Therm in R2ML

Materiały

Strona domowa RIF http://www.w3.org/2005/rules/wiki/RIF_Working_Group

Więcej przykładów w RIF http://www.w3.org/2005/rules/wg/wiki/UC3_Worked_Example

Szczególnie przydatne do RIF http://www.w3.org/TR/2007/WD-rif-bld-20071030/

Cały thermostat w RIF https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_rif:thermostat

RIF Core Design http://www.w3.org/TR/2007/WD-rif-core-20070330/

Strona domowa R2ML http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/6

Szczególnie przydatne do R2ML http://www.w3.org/TR/xpath20/

Więcej przykładów w R2ML http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=node/49

Całość thermostat w R2ML https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_r2ml:thermostat

OWL RULES: A Proposal and Prototype Implementation http://www.cs.man.ac.uk/~horrocks/Publications/download/2005/HPBT05.pdf

SWRL: A Semantic Web Rule Language Combining OWL and RuleML http://www.daml.org/2003/11/swrl/

Strona domowa RuleML (http://www.ruleml.org/0.91/)

Szczególnie przydatne do RuleML http://www.ruleml.org/0.91/glossary/

Więcej przykładów w RuleML http://www.ruleml.org/0.91/exa/

Uniform Resource Identifier http://pl.wikipedia.org/wiki/Uniform_Resource_Identifier/

Representing Facts and Rules in RDF http://www.ninebynine.org/RDFNotes/RDFFactsAndRules.html

Struktura Opisu Zasobów (RDF) http://www.geocities.com/pan_andrew/ResourceDescriptionFramework.htm#ref-xhtml

Strona domowa RDF http://www.w3.org/RDF/

Polskie tłumaczenie specyfikacji RDF http://www.geocities.com/pan_andrew/ResourceDescriptionFramework.htm

Strona domowa ERDF http://oxygen.informatik.tu-cottbus.de/rewerse-i1/?q=ERDF

Szczególnie przydatne do ERDF http://oxygen.informatik.tu-cottbus.de/IT/Research/ERDF-JAIR-2008.pdf

Translator R2ML do SWRL(składnia alternatywna) http://oxygen.informatik.tu-cottbus.de/translator/R2MLtoSWRL/index.jsp

OWL Overview w języku polskim http://www.rax.pl/tlumaczenia/OWL-Web-Ontology-Language-Overview/index.htm

OWL Overview w języku angielskim http://www.w3.org/TR/2004/REC-owl-features-20040210/

pl/miw/miw08_hml_rules.1211387260.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