журнал данных для нахождения того же значения атрибутов из модели - PullRequest
1 голос
/ 10 декабря 2011

Я новичок в даталоге и хочу решить следующее:

У меня есть 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 не имеют большого значения, могу ли я заменить его на _ как в голове, так и в теле?

Любые отзывы приветствуются!

1 Ответ

1 голос
/ 16 декабря 2011

Правильно использовать подчеркивание вместо роли в правой части вашей логики.

Я бы выбрал немного другой стиль предикатов для хранения результатов. Я пишу в варианте 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.
...