OpenCyc:CycL Syntax(CycL语法)

来源:互联网 发布:china linux 编辑:程序博客网 时间:2024/05/18 02:40

CycL语法主要由以下几个部分构成:

常量(Constants

常量用来表示特定的个体和集合,CycL常量都由#$(读hash-dollar)为前缀。CycL用常量来表示个体、集合、关系和属性值。

公式(Formulas

公式用来描述参数间的关系,由圆括弧包围。例如:

(#$isa #$GeorgeWBush #$Person)

(#$likesAsFriend #$GeorgeWBush #$AlGore)

(#$BirthFn #$JacquelineKennedyOnassis)

上述前两个实例称为CycL的句子,后一个称为非原子项。

句子(Sentence

CycL中,句子用来形成断言(assertions,告诉Cyc某些事实)和查询(query,问Cyc某些事)。

每个句子都由真值函数开头(在参数0的位置),每个句子都返回一个真假值(true或者false)。真值函数总由小写字母开头,真值函数的类型包括谓词、逻辑连接词和量词。谓词型句子总是由一个谓词打头,并将谓词应用于其后的参数,如:

(#$isa #$GeorgeWBush #$Person)

(#$likesAsFriend #$GeorgeWBush #$AlGore)

至于逻辑连接词和量词型的真值函数我们随后再谈。

非原子项(Non-Atomic Terms

非原子项总是由函数标示开头。函数获得其参数并得到一个新值。在CycL中,函数通常由Fn结尾。因此,非原子项总是返回一个项,它可以象其它项一样用在CycL需要使用项的地方。

复杂公式(Complex Formulas

通过应用逻辑连接词,量词和变量,可以构成复杂的公式。

CycL中的变量是以?开头的,变量名应该是唯一的。并且没有被量词修饰的变量称为自由变量。以下是几个例子:

(#$thereExists ?PLANET

       (#$and

              (#$isa ?PLANET #$Planet)

              (#$orbits ?PLANET #$Sun)))

该实例表明至少存在一颗行星围绕太阳转。

(#$forAll #$PERSON1

       (#$implies

              (#$isa ?PERSON1 #$Person)

              (#$thereExist ?PERSON2

                     (#$and

                            (#$is ?PERSON2 #$Person)

                            (#$loves ?PERSON1 ?PERSON2)))))

该实例表明每个人总会爱至少一个人。