这是从 Ivan Bratko 的书“Prolog Programming for人工智能 - 第 3 版 - 第 377 页”中获取的代码示例。它非常适合查询?-value(kiwi, active_at, night)。通过给出结果为true。
但它也给出了true查询的结果?- value(kiwi, active_at, daylight).,它应该是false.
我应该如何修改它,或者我错过了什么?
%--------Define frames
bird(a_kind_of, animal).
bird(active_at, daylight).
albatross(a_kind_of, bird).
albatross(colour, black).
albatross(size, 10).
kiwi(a_kind_of, bird).
kiwi(active_at, night).
kiwi(colour, brown).
kiwi(size, 24).
albert(instance_of, albatross).
albert(size, 10).
%--------Inference in Frames
value(Frame, Slot, Value):-
Query =.. [Frame, Slot, Value],
call(Query), !. %Value is directly retrieved
value(Frame, Slot, Value):-
parent(Frame, ParentName),
value(ParentName, Slot, Value). …Run Code Online (Sandbox Code Playgroud) prolog ×1