|
|
pl:miw:miw08_hml_rules:ruleml [2008/05/19 17:56] miw |
pl:miw:miw08_hml_rules:ruleml [2019/06/27 15:50] |
**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. | |
| |
Aby można było użyć RuleML do przedstawiania reguł potrzebna jest wiedza jak zapisywać typowe dla nich elementy. | |
| |
Przykłady składni (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> | |
| |
====== Materiały ====== | |
| |
** Więcej na stronie domowej** (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/ | |
| |
[[https://ai.ia.agh.edu.pl/wiki/pl:miw:miw08_hml_rules|Powrót]] | |