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