Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:miw:miw08_hml_rules:rif [2008/04/21 21:23] miw |
pl:miw:miw08_hml_rules:rif [2019/06/27 15:50] (aktualna) |
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). | |
| **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]] |
| |
| [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules:rif:rifattribute|Atrybuty w RIF + RDF oraz OWL Kompatybilność]] |
| |
| 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, na podstawie powyższej wiedzy, 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> |
| |
| W analogiczny sposób możemy zapisać większość reguł. Przykładem może być tu całość [[https://ai.ia.agh.edu.pl/wiki/hekate:hekate_case_thermostat|HeKatE Case Thermostat]] którego reguły przedstawione w RIF wyglądają nastepująco: [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_xtt_rif:thermostat|therm in RIF]]. |
| |
| [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules|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/ |