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.
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):
<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>
Powrót
Materiały