Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_hml_rules:rif [2008/05/19 11:09] miw |
pl:miw:miw08_hml_rules:rif [2008/05/19 12:19] miw |
| |
**RIF(Rule Interchange Format)** jest stworzonym przez W3C [[http://www.w3.org/|(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. [[http://www.w3.org/2005/rules/wg/draft/rif-fld/|RIF Framework for Logic Dialects ]] oraz [[http://www.w3.org/2005/rules/wg/draft/rif-bld/|RIF Basic Logic Dialect]] | |
| |
Dokładny opis specyfikacji RIF można znaleźć w projekcie [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_rif|XTT_RIF]]. Dla mnie natomiast istotna, z punktu widzenia projektu, jest wiedza jak zapisywać typowe dla reguł elementy tj: | |
| |
* wartosc logiczna: np: B | |
| |
<code xml> | |
<Var> B </Var> | |
</code> | |
| |
* stałe argumenty: np: 300 | |
| |
<code xml> | |
<arg><Const type="rds:long"> 300 </Const></arg> | |
</code> | |
| |
* suma: n+1 | |
| |
<code xml> | |
<Uniterm> | |
<op><Const type="rif:iri"> op:numeric-add </Const></op> | |
<arg><Const type=""> 1 </Const></arg> | |
<arg><Var> n </Var></arg> | |
</Uniterm> | |
</code> | |
| |
* różnica: n-1 | |
| |
<code xml> | |
<Uniterm> | |
<op><Const type="rif:iri"> op:numeric-subtract </Const></op> | |
<arg><Const type=""> 1 </Const></arg> | |
<arg><Var> n </Var></arg> | |
</Uniterm> | |
</code> | |
| |
* równość: (wyr_1) = (wartosc) | |
| |
<code xml> | |
<Equal> | |
<arg> wyr_1 </arg> | |
<arg> wartosc </arg> | |
</Equal> | |
</code> | |
| |
* nierówność: n > 0 | |
| |
<code xml> | |
<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> | |
</code> | |
| |
* nierówność: n <= 1 | |
| |
<code xml> | |
<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> | |
</code> | |
| |
* suma logiczna : (wyr_1) and (wyr_2) | |
| |
<code xml> | |
<And> | |
<formula> | |
(wyr_1) | |
</formula> | |
<formula> | |
(wyr_2) | |
</formula> | |
</And> | |
</code> | |
| |
* warunek if : (conclusion) if (conditions) | |
| |
<code xml> | |
<Implies> | |
<if> | |
(conditions) | |
</if> | |
<then> | |
(conclusion) | |
</then> | |
</Implies> | |
</code> | |
| |
Teraz możemy spróbować zapisać nasz przykład (Jeżeli dzień=poniedziałek wtedy temp=20st) za pomocą RIF: | |
| |
<code xml> | |
<?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> | |
</code> | |
| |
| |
* Strona domowej: 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 | |
| |
[[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules|Powrót]] | |