我只是想知道,序言中的“事实”和“谓词”部分有什么区别?
“single”和“determ”关键字有什么区别?
序言中的事实是 db Table(Column1,Column2, ...)中的谓词表的替换确实Facts
采用了这样的形式,它只为“()”Fact(Arg1,Arg2)
中提到的特定常量提供 {true,false} 值
所以事实确实是一个复杂的术语或参数谓词,Args
不是变量,是单个常量。
例子
father(fathername,childname).
规则也是谓词的替换形式
rule_type1(+In_Args,?Out_Args) :- body .
rule_type2(+In_Args) :- body . % (true,false)
rule_type3 :- body .
它命令从事实或通过查询派生到正文的逻辑规则生成数据
例子
max(X,Y,Z) :- X>=Y -> Z=X ; Z=Y .
?- max(3,5,Z). /* give us */ Z=5
在 visual-prologFacts
中可以用几个可选关键字声明:
用关键字 determ 声明的事实。
关键字determ
决定事实数据库只能包含一个事实(数据库谓词)fact_N(...) 的实例。因此,如果您尝试将assert
一个然后第二个这样的事实写入数据库,Visual Prolog 引擎将产生运行时错误。(1041 断言声明为确定的事实,但事实已经存在)。
例子
用关键字 single 声明的事实。
事实 fact_N 声明之前的关键字single
确定必须始终存在一个且只有一个事实实例:
由于在程序调用 Goal 时必须已经知道单个事实;因此,必须在程序源代码的子句部分中初始化单个事实。
例如:
FACTS
single singleFact(STRING, STRING)
CLAUSES
singleFact("","").
明确指出:“事实部分”用于事实,事实是始终为真的谓词,用于描述某些属性。
Single
并且determ
是“事实模式”,在事实声明中可选地使用,Single
意味着事实总是只有一个值,determ
意味着事实可以有零或一个值。