RuleML - Rule Markup Language jest językiem powstałym w ramach inicjatywy 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.
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):
<Var> B </Var>
<Data xsi:type = "xs:integer"> 20 </Data>
<Expr> <Fun in="yes"> add </Fun> <Var> n </Var> <Ind> 1 </Ind> </Expr>
<Expr> <Fun in="yes"> subtract </Fun> <Var> n </Var> <Ind> 1 </Ind> </Expr>
<Equal oriented="yes"> <lhs> (wyr_1) </lhs> <rhs> (wartosc) </rhs> </Equal>
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)
<Rel> greaterThan </Rel> <Var>n</Var> <Ind>0</Ind>
<Rel> lessThanorEqual </Rel> <Var>n</Var> <Ind>0</Ind>
<And> <Atom> (wyr_1) </Atom> <Atom> (wyr_2) </Atom> </And>
<Implies> <head> (conclusion) </head> <body> (conditions) </body> </Implies>
<Fun in="…" val="…"> fun_name </Fun> <Var> B </Var>
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:
<?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>
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/