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 natomiast 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.

Powrót

Materiały

pl/miw/miw08_hml_rules/rif.txt · ostatnio zmienione: 2019/06/27 15:50 (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