首页 > 笔记, 逻辑, 语义网 > 重读RIF-PRD:语法

重读RIF-PRD:语法

我读的是wiki版本(http://www.w3.org/2005/rules/wiki/PRD)。这次读,主要在加深对操作语义(operational semantics)的理解。同时在看其他几个production rule的论文,今天要第次笔记。

对RIF的语法解析,可以参考我的PHP-RIF Parser——目前还只支持了RIF-Core,不过PRD的基本框架和Core相去不远。

首先,上RIF-PRD的语法图

基本总结如下:

  • 一个文档(Document)包括一个或多个规则组(Group)。
  • Group有什么用?是一种组织的单元,它本身并没有逻辑的语义,但是可以用来声明规则或者组的优先级。一个组包含若干规则(Rule),或者其他的组。RIF里的组是没有名字的,所以不存在递归包含问题。
  • 每条规则,分为条件部分(可以为空)和结论部分(if … then)。全称量词(forall)作用在整个规则上

条件(if部分)

  • 规则的条件部分,是Formula(公式),可用通过各种逻辑构造符从原子公式(atomic formula)构造而来。可用的构造符是And, Or, Not(非单调逻辑非), Exists(存在量词)和External(外部过程调用)
  • 所以,存在量词只能用在规则的if部分,全称量词只能用在规则的整体上,也即,可以做这样的表达 ∀x (∃y R(x,y))->C(x).
  • 为什么要有External?因为一些条件的判断不是逻辑的,要调用一个外部的过程来决定(比如数值计算)。External可以用来支持外部函数。从逻辑的角度,RIF-PRD是function-free的。
  • 原子公式是由Term(项)构成的。Term可以是常量Const,变量Var,列表List(含空列表;如List(t1…tn))和命题项(propositional term;如t(t1…tn)其中t是常量)。命题项必须用External标识。
  • 原子公式有下面这些种
    • 命题原子公式(propositional atomic formula) t(t1…tn)
    • 等式(equality)t1=t2
    • 类成员关系(class membership)t#s
    • 子类关系(subclass) t##s
    • 框架关系(Frame) t[p->v] 也就是三元组 t p v, 或者用谓词形式写是p(t,v)
    • 外部原子公式External,,代表一个外部过程的调用

动作(then部分)

  • 规则的结论部分,是动作(action)
  • 基本的动作,有Assert(声明)和Retract(取消)两种。Modify(修改)是它们的组合。Execute 做一个外部过程调用。
  • 动作也可以有变量声明,例如Do(?x ?t[v->?x] Modify(?t[v->func:numeric-multiply(?x 2)]))。
    • 可以用New()来建新的变量,如(?o New())。

规则要满足安全性(safeness),大意是if部分的变量必须是在匹配中可以绑定的(bound by pattern matching)。暂不表。

PRD和RIF-BLD, RIF-Core的关系,看这个图

RIF-Core是没有逻辑非的霍恩规则Horn Rule),或者数据逻辑(Datalog)。PRD对RIF-Core的扩展,核心就是iNeg——一种特殊的逻辑非,还有Retract动作,不但可以加事实(fact),可以删去一些fact。

【待续】

Advertisements
分类:笔记, 逻辑, 语义网
  1. XIng
    2013/06/30 @ 20:01

    你好西瓜丸子汤。我最近的研究也涉及到RIF,对RIF中优先级(priority)具体使用时的语法格式有些困惑。请问汤,PRD中的优先级具体是如何使用的,可以举个使用MPS(Mixed Presentation Syntax)的例子吗?

  1. 2011/04/24 @ 16:02
  2. 2011/04/25 @ 03:14
  3. 2011/12/07 @ 05:35
  4. 2012/04/16 @ 01:32

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: