摘要

本文档是关于RuleML 1.0的入门(Rule Markup Language,他也是一种规则建模语言Rule Modeling Language或叫做 规则元逻辑Rule MetaLogic)。RuleML被用于在web上共享和发布基于XML的规则。 RuleML构成一个分层的规则子语言(rule sublanguages)家族,本入门的焦点主要集中在Datalog和Horn logic。这些子语言的XML可以通过OrdLab trees可视化的呈现,例如:商业策略领域、折扣策略等。

RuleML组织

RuleML作为一个非营利组织,一直驱动着web规则的研究,建立互通其他Web规则语言之间的桥梁,与标准合作,并与落实到行业实践中。

RuleML作为一个事实上的语言标准包括:慎重的RuleML V1.0,其中:Datalog和子语言Horn logic将在这里着重介绍。

Datalog

Datalog[CGT89] 是一种轻量级推演数据库系统,是许多规则语言的核心,是最接近带有递归视图的关系数据库。这里介绍的是RuleML中的Datalog。

  • (Function-free)Horn logic子语言
  • SQL和Prolog语言的交集
  • 程序逻辑能够代表关系数据库中信息,包括(递归的)视图
  • (fact)事实:关系数据库中的表的行
  • (rule)规则:用视图隐含表的定义

Datalog 的Horn logic (function-free)子语言是RuleML的语义基础。Datalog是SQL与Prolog的交集的语言。因此,它被看作是程序逻辑能够代表关系数据库中信息,包括(递归的)视图。也就是说,在Datalog中,我们可以定义事实,对应明确的关系数据库中的表的行(客观事实的定义),以及规则,对应于用视图(内在的定义)隐含表的定义。

顾客花费的事实 – OrdLab Tree

"Peter Miller spent at least 5000 euros in the previous year."

Peter在去年至少花了5000欧元

Datalog RuleML,作为一种标记语言,可以方便地进行序列化相关信息,其中所有的列内容都是自然语言的短语。为了解释Datalog功能,我们将开发一个小例子,以真实的自然语言的业务规则在RuleML中描述。这个例子对应Terry Moriarty的业务规则分类中的「资格」类别。

这种自然语言句子的结构可以用可视化的一种解析树语言,称之为OrdLab Tree (Order-Labeled)。在图中有标签(tags)和标注(label)他们都是内部节点(椭圆形,类似RDF里面那种匿名资源),例如:'Atom'(Atom公式);叶子节点(矩形,类似RDF里的那种文字,含PCDATA),例如:'Rel'(关联常量),'Ind'(独立常量),或'Data'(数据常量)。"Atom"节点连接到"Rel"节点的线条被标记为'op',这样与参数区分开来。其中间操作的顺序是模仿原来自然语言的排序。

OrdLab trees 介绍在:"A Web Data Model Unifying XML and RDF" http://www.dfki.uni-kl.de/~boley/xmlrdf.html

RuleML Datalog 事实(Fact)

<Atom>
  <Ind>Peter MillerInd>
  <op><Rel>至少花费Rel>op>
  <Ind>5000欧元Ind>
  <Ind>在去年Ind>
Atom>

 

"至少花费"与以下三种发生关联: Peter Miller、5000欧元、去年(时间参考),他们可以被记录成为一个Datalog RuleML事实。在这里,XML标签 - 类似于非终端的语言 - 直接在句子上标注PCDATA(Parsed Character Data) - 类似语言的最终形式:

从外到内的标签,我们发现"至少花费"是标注成关系名(表名):至少花费。在同一级,有三个短语"Peter Miller"、"5000欧元"、"在去年"是标注成独立常量。关系有三个参数(列),顺序如下:Peter Miller, 5000欧元, 和去年。整个应用程序的关系构成了一个Atom公式,标记由...

Datalog特性

  • 查询必须保证参数和关系描述的精确
  • 短语细化需要Horn logic RuleML
  • 关系有一个变量(有限的)是数字型的参数(可以是多个)
  • RDF和OWL的二元情况
  • RuleML结合SWRL中的OWL
  • OrdLab图的每条边可以看作是一个二元描述语
  • SQL风格的null可以通过表示

在上述Datalog的标记,这三个顶级"至少花费"的参数没有进一步分析,他们只是被视为独立常量。用于识别目的,它们和关系本身,将需要由一个精确的查询,它要能够检索上述的事实(如下图所示,这查询如果是规则的一部分)。每个步骤都使用RuleML标记,逐步的细化分析,可以表现出内部结构、自然语言中关系的意义,从Datalog至Hornlog (function-ful) RuleML他们都有三个基本参数为进一步使用:辅助、参数、处理。

请注意,Datalog RuleML中的一个关系可以是n元(多价),即可以是变量,但参数的个数是有限的,如n= 0,1,2,3,...一个Datalog仅允许一元(一价的)和二元(二价的)的关系是一个重要的特殊情况,例如为RuleML结合SWRL中的OWL。虽然上面的标记使用一个三元"至少花费"关系,它也可以被减少到3个二元关系,他们从独立变量分离出来的,这就代表了一个三元关系,所建议的上述RDF面向XML的可视化和解释可查询W3C Working Group Note。然而,为了保持对数据库和SQL的关系模型的表现力,以及Prolog语言中,Datalog RuleML允许直线表示n元关系,如可视化管理hyperarcs 在GrailogGraph inscribed logic)。此外,Datalog RuleML提供SQL风格的null通过独立的标记。

Datalog Rule 例子

Implies:推断

"A customer is premium if they spent at least 5000 euros in the previous year."

如果他们在去年至少花费了5000欧元,那么他们是优质的顾客

<Implies closure="universal">
  <then>
    <Atom>
      <Var>顾客Var>
      <Rel>是优质的Rel>
    Atom>
  then>
  <if>
    <Atom>
      <Var>顾客Var>
      <Rel>至少花费Rel>
      <Ind>5000欧元Ind>
      <Ind>去年Ind>
    Atom>
  if>
Implies>

 

看看这些标记,请注意RuleML标签与Java类与方法命名约定一样,是区分大小写的。Atom公式由以下几个元素构成之前讨论的事实,其中包含:,不同的是的Peter Miller被换成了顾客,顾客是一个变量标记。这个变量也发生在的标签内,它适用于一元关系顾客是优质的