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:

<Var> B </Var>
<arg><Const type="rds:long"> 300 </Const></arg>
<Uniterm>
<op><Const type="rif:iri"> op:numeric-add </Const></op>
<arg><Const type=""> 1 </Const></arg>
<arg><Var> n </Var></arg>
</Uniterm>
<Uniterm>
<op><Const type="rif:iri"> op:numeric-subtract </Const></op>
<arg><Const type=""> 1 </Const></arg>
<arg><Var> n </Var></arg>
</Uniterm>
<Equal>
<arg> wyr_1 </arg>
<arg> wartosc </arg>
</Equal>
<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>
<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>
<And>
<formula>
(wyr_1)
</formula> 
<formula>
(wyr_2)
</formula>
</And>
<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

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

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

Szczególnie przydatne 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/