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はそれほど重要ではないので_、頭と体の両方で置き換えることはできますか?

フィードバックは大歓迎です!

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 に答える