prolog中的关联继承

时间:2016-04-03 17:03:43

标签: inheritance prolog rules

我试图让一个对象的关联适用于赋值的后代对象。

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).

0 个答案:

没有答案