2011-12-10 49 views
1

我是新來的數據記錄和發現的屬性相同的值要解決以下幾個:數據記錄從模型

我有一個student模型

student(name, rollno, city) 

現在我想寫一個數據記錄程序找到來自同一城市的這對學生。如果我按以下方式編寫程序,這是否正確?

result(n1, r1, c1, n2, r2, c2) :- student(n1, r1,c1) AND student(n2,r2,c2) AND c1= c2 

由於r1r2是沒有多大意義在這裏我可以在頭部和身體代替它由_

歡迎任何反饋!

回答

1

在邏輯的右側使用下劃線代替rollno是正確的。

我會選擇一個稍微不同的謂詞風格來保存結果。我在DatalogLogic的LogicBlox變體中寫作工作,我認爲我們的符號與您的有所不同,但這裏是我如何去做的...

student(name, rollno, city) -> string(name), string(rollno), string(city). 

studentsPairsFromSameCity(nameA, nameB, city) -> string(nameA), string(nameB), string(city). 

studentPairsFromSameCity(nameA, nameB, city) 
<- 
    student(nameA, _, cityA), 
    student(nameB, _, cityB), 
    nameA != nameB, 
    cityA = cityB.