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):

  • wartosc logiczna: B
<Var> B </Var>
  • stałe argumenty: 20
<Data xsi:type = "xs:integer"> 20 </Data>
  • suma: n+1
<Expr>
<Fun in="yes"> add </Fun>
    <Var> n </Var>
    <Ind> 1 </Ind>
</Expr>
  • różnica: n-1
<Expr>
<Fun in="yes"> subtract </Fun>
   <Var> n </Var>
   <Ind> 1 </Ind>
</Expr>
  • równość: (wyr_1) = (wartosc)
<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)

  • nierówność: n > 0
<Rel> greaterThan </Rel>
    <Var>n</Var>
    <Ind>0</Ind>
  • nierówność: n ⇐ 1
<Rel> lessThanorEqual </Rel>
    <Var>n</Var>
    <Ind>0</Ind>
  • suma logiczna : (wyr_1) and (wyr_2)
<And>
  <Atom>
       (wyr_1)
  </Atom>
  <Atom>
       (wyr_2)
  </Atom>
</And>
  • warunek if : (conclusion) if (conditions)
<Implies>
  <head>
    (conclusion)
  </head>
  <body>
    (conditions)
  </body>	
</Implies>
  • funkcje: fun_name(B)
<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

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/

pl/miw/miw08_hml_rules/ruleml.txt · ostatnio zmienione: 2017/07/17 08:08 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0