用于从模型中查找相同属性值的数据记录

时间:2011-12-10 10:22:09

标签: database datalog

我是数据记录的新手,想要解决以下问题:

我有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 个答案:

答案 0 :(得分: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.