我试图让一个对象的关联适用于赋值的后代对象。
whatProperty(canary, X, Y).
生成颜色,黄色,但不生成应该从鸟类和动物继承的属性。
这部分代码应该表示如果X是Y,Y具有属性Z,则X具有属性Z'。但由于某种原因,它显然不起作用
hasproperty(X, Z, W) :-
isa(X, Y), hasproperty(Y, Z, W).
以下是完整的代码:
isa(bird, animal).
isa(canary, bird).
hasproperty(animal, covering, skin).
hasproperty(bird, covering, feathers).
hasproperty(bird, travel, fly).
hasproperty(canary, colour, yellow).
hasproperty(X, Z, W) :-
isa(X, Y), hasproperty(Y, Z, W).
whatProperty(Object, X, Y) :-
hasproperty(Object, X, Y).