Pyke 逻辑编程入门(14):知识库之“事实库”

来源:互联网 发布:ubuntu安装后的20件事 编辑:程序博客网 时间:2024/05/16 18:39

事实库


Pyke 把事实陈述保存在事实库里。存入的事实组织成结构化的,并且不限数量。事实库按照断言的新事实的需要,自动创建。

事实

设想一个事实陈述语句。它有个名字和一组参数。参数可以是:

  • 字符串
    • 标示符不需要引号,例如 Fred 与 'Fred' 相同。
  • 数字
  • None, True, False
  • 以上各种参数组成的元组。元组可以嵌套。
    • 单个成员的元组,不需要逗号,(1) 与 (1,) 相同。

不允许存在重复的事实。断言已有事实的试图,自动忽略。但要注意,只有参数全部相同的,才是重复的事实。

目前,事实被看做固定不变、不可撤销。因此建议不要用字典、列表和自定义的对象当做事实的参数。

具体事实

大多数事实是具体的。推理引擎重启做下次运行时,会删除这些事实。具体事实的断言方法是:

some_engine.assert_(kb_name, fact_name, arguments)some_engine.add_case_specific_fact(kb_name, fact_name, arguments)

正向推理规则也可以断言事实。

通用事实

通用事实永不删除,即使引擎重启。可以在 .kfb 文件中指定通用事实,或者通过调用以下函数,加入它们:

some_engine.add_universal_fact(kb_name, fact_name, arguments)

一般在程序启动时,把通用事实一次性加入。


原创粉丝点击