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

因为在这里并不重要,我可以在头部和身体上替换它r1吗?r2_

欢迎任何反馈!

4

1 回答 1

1

使用下划线代替逻辑右侧的 rollno 是正确的。

我会选择一种稍微不同的谓词样式来保存结果。我在工作用 Datalog 的 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.
于 2011-12-16T02:53:05.173 回答