Both sides previous revision
Poprzednia wersja
|
|
pl:miw:miw08_hml_rules:ruleml [2008/05/19 19:00] miw |
pl:miw:miw08_hml_rules:ruleml [2019/06/27 15:50] (aktualna) |
| **RuleML - Rule Markup Language** jest językiem powstałym w ramach inicjatywy [[http://www.w3.org/2001/sw/|Semantic Web]], służącym do zapisywania reguł logicznych na bazie składni języka XML. W istocie, język RuleML rozszerza język OWL o dynamiczne aspekty modelowania wiedzy. RuleML obejmuje m.in. |
| |
| *Mathematical Markup Language (MathML) |
| *DARPA Agent Markup Language (DAML) |
| *Predictive Model Markup Language (PMML) |
| *Gramatyke atrybutów w XML (AG-znaczników): |
| *Transformacje XSL (XSLT) |
| |
| Podobnie jak to było w przypadku R2ML, nie musimy być zaznajomieni ze wszystkimi elementami języka RuleML w celu jego wykorzystania. Aby można było użyć RuleML do przedstawiania reguł potrzebna jest wiedza jak zapisywać typowe dla nich elementy. |
| |
| Przykłady takich elementów (RuleML ver. 0.91): |
| |
| * wartosc logiczna: B |
| |
| <code xml> |
| <Var> B </Var> |
| </code> |
| |
| * stałe argumenty: 20 |
| |
| <code xml> |
| <Data xsi:type = "xs:integer"> 20 </Data> |
| </code> |
| |
| * suma: n+1 |
| |
| <code xml> |
| <Expr> |
| <Fun in="yes"> add </Fun> |
| <Var> n </Var> |
| <Ind> 1 </Ind> |
| </Expr> |
| </code> |
| |
| * różnica: n-1 |
| |
| <code xml> |
| <Expr> |
| <Fun in="yes"> subtract </Fun> |
| <Var> n </Var> |
| <Ind> 1 </Ind> |
| </Expr> |
| </code> |
| |
| * równość: (wyr_1) = (wartosc) |
| |
| <code xml> |
| <Equal oriented="yes"> |
| <lhs> |
| (wyr_1) |
| </lhs> |
| <rhs> |
| (wartosc) |
| </rhs> |
| </Equal> |
| </code> |
| |
| Atrybut ‘oriented’ przyjmuje wartość ‘yes’ (directed equation) lub ‘no’ (undirected equation, default) |
| (<lhs> (left hand side) i <rhs> (right hand side) moga być pominiete, pomagaja w okresleniu orientacji) |
| |
| * nierówność: n > 0 |
| |
| <code xml> |
| <Rel> greaterThan </Rel> |
| <Var>n</Var> |
| <Ind>0</Ind> |
| </code> |
| |
| * nierówność: n <= 1 |
| |
| <code xml> |
| <Rel> lessThanorEqual </Rel> |
| <Var>n</Var> |
| <Ind>0</Ind> |
| </code> |
| |
| * suma logiczna : (wyr_1) and (wyr_2) |
| |
| <code xml> |
| <And> |
| <Atom> |
| (wyr_1) |
| </Atom> |
| <Atom> |
| (wyr_2) |
| </Atom> |
| </And> |
| </code> |
| |
| * warunek if : (conclusion) if (conditions) |
| |
| <code xml> |
| <Implies> |
| <head> |
| (conclusion) |
| </head> |
| <body> |
| (conditions) |
| </body> |
| </Implies> |
| </code> |
| |
| * funkcje: fun_name(B) |
| |
| <code xml> |
| <Fun in="…" val="…"> fun_name </Fun> |
| <Var> B </Var> |
| </code> |
| |
| Atrybut ‘in’ przyjmuje wartości “yes”(uninterpreted functions – nie uzywaja definicji funkcji) lub “no”(interpreted functions – uzywaja definicji funkcji), in=”semi” to wartość domyślna (neutralna). Atrybut ‘val’ określa czy funkcja jest determistyczna czy nie determistyczna; dopuszczalne wartości „1”- dokładnie jeden , „0…” – zero lub wiecej, „2”, „0…3” itp. |
| |
| |
| Teraz możemy spróbować zapisać nasz przykład (Jeżeli dzień=poniedziałek wtedy temp=20st) za pomocą RuleML. Przedstawmy go w postaci: |
| |
| temp = 20 if day = monday |
| |
| wówczas w RuleML zapis bedzie wyglądał następująco: |
| |
| <code xml> |
| <?xml version="1.0" encoding="UTF-8"?> |
| |
| <RuleML xmlns=http://www.ruleml.org/0.91/xsd |
| xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://www.ruleml.org/0.91/xsd http://www.ruleml.org/0.91/xsd/hornlogeq.xsd"> |
| <Implies> |
| <head> |
| <Equal oriented="yes"> |
| <lhs> |
| <Var> day </Var> |
| </lhs> |
| <rhs> |
| <Data xsi:type="xs:dateTime">monday</Data> |
| </rhs> |
| </Equal> |
| </head> |
| <body> |
| <Atom> |
| <Rel> temp </Rel> |
| <Data xsi:type = "xs:float"> 20 </Data> |
| </Atom> |
| </body> |
| </Implies> |
| </RuleML> |
| </code> |
| |
| |
| [[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules|Powrót]] |
| |
| |
| ====== Materiały ====== |
| |
| ** Więcej na stronie domowej RuleML** (http://www.ruleml.org/0.91/) |
| |
| ** Szczególnie przydatne** http://www.ruleml.org/0.91/glossary/ |
| |
| ** Więcej przykładów** http://www.ruleml.org/0.91/exa/ |
| |
| |