Журнал данных для нахождения того же значения атрибутов из модели
Я новичок в даталоге и хочу решить следующее:
у меня есть 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 ответ
Решение
Правильно использовать подчеркивание вместо Rollno в правой части вашей логики.
Я бы выбрал немного другой стиль предикатов для хранения результатов. Я пишу в варианте LogicBlox Datalog для работы, и я думаю, что наша запись немного отличается от вашей, но вот как я бы это сделал...
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.