知识库
知识库是有名称的、存储结构化知识的“仓库”。知识库象硬盘上的文件目录,但知识库结构不能嵌套。因此,知识库里的知识单元,有两层结构的名称:知识库名.知识单元名。
在某一 web 服务器程序里,可能看到一些事实的例子:
header.cookie('session=123456789;remember=the_alamo') cookie.session(123456789) cookie.remember(the_alamo) header.accept_encoding(gzip) header.accept_encoding(deflate) request.path('/my/site.html') request.path_segment(0, my) request.path_segment(1, 'site.html') request.path_segment(-2, my) request.path_segment(-1, 'site.html')
注意,在此有三个不同的知识库(都是事实库),分别名叫 header, cookie, request,各有一些事实陈述。
知识库名字的第二部分,是知识单元名称。可把知识单元看成事实陈述的类型或者主题:
- request: 知识库名称。
- request.path_segment:
- 知识单元或事实主题的名称。
- request.path_segment(-1, 'site.html'):
- 有关知识单元主题 request.path_segments 的具体陈述。
知识库的用途
说到底,Pyke 是为了证明事实陈述的真伪,比如回答这样的问题:“某一陈述是真的吗?”。有几种不同类型的知识库,用法也不相同:
- 如上例所见,由一系列简单事实陈述组成的,称作事实库。
- 它们是一种已知事实,可作检验其他陈述是否真实的证据。
- 由 if-then 规则构成的规则库。
- 运行它们的 if-then 规则,以确定某一陈述是否真实。
- 规则库中可含正向推理规则,和反向推理规则。
- 有可能需要以其他形式的知识库,确定陈述的真实性。Pyke 为此有两种对策:
- “问题库”,其中是向最终用户提问的语句。
- 特殊知识库,内含一些一次性使用的知识单元,做些特殊的事情。例如,运行底层系统命令,检查它的输出数据和退出后的状态。
- 这种知识库,只给出一个叫做 special 的示例。
注 意
知识库名称是专用的,无论是否相同类型,每个知识库必须单独使用一个名称。