如果我有两个这样的规则:
`import pandas as pd`
data=pd.read_csv("C:\\Users\\hp\\Desktop\\py\\p1.txt",delimiter=',')
df=pd.DataFrame(data)
print(df)
emp_id emp_name months_worked total_sal jan feb mar apr may \
0 1 aaa 4 NaN 2000 1 2.0 3 4.0
1 2 bbb 3 NaN 1 2 NaN 4 5.0
2 3 bbb 7 NaN 1 2 34343.0 4 NaN
3 4 bbb 12 NaN 1 2 33434.0 4 5.0
jun jul aug sep oct nov dec
0 5555.0 NaN 74343.0 8 9 10.0 NaN
1 643.0 7.0 NaN 9343 10 13431.0 12.0
2 6343.0 7.0 NaN 9 1043 11.0 12.0
3 NaN 7.0 8.0 9 1 NaN 12.0
我怎么问-X可能具有哪些属性,所以它是湿的。 在示例中,我想要得到的是:was_in_rain并洗净。
9月12日的澄清:我对找到所有具有湿性的X都不感兴趣。想象没有进一步的规则或事实定义。 我感兴趣的是: 在hasproperty(X,Y)中给我可能的Y,通过序言规则,您可以推断hasproperty(X,wet)。 在给定示例中,结果为Y = was_in_rain和Y = washed
基本上,我想知道是否可以进行查询来分析规则本身。
答案 0 :(得分:0)
您可以使用findall/3查找谓词的所有解。在这种情况下,看来hasproperty(X, wet)
始终为假。
:- initialization(main).
main :-
findall(X,hasproperty(X,wet),Z),
writeln(Z). % there are no solutions, so Z is an empty list
hasproperty(X, wet) :- hasproperty(X, was_in_rain).
hasproperty(X, wet) :- hasproperty(X, washed).