事实库
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)
一般在程序启动时,把通用事实一次性加入。