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