Как отобразить четкую пару учеников? - PullRequest
2 голосов
/ 25 мая 2020

Как я могу отобразить отдельные пары студентов, если у меня есть отношение на моем графике, например:

:ST1 :read :BOOK1,:BOOK2,:BOOK3.
:ST2 :read :BOOK1,:BOOK2.
:ST3 :read :BOOK2.

И в моем выборе у меня есть что-то вроде этого:

SELECT DISTINCT ?x ?book ?y
{
   ?x :read ?book.
   ?book ^:read ?y.
   FILTER(?x != ?y).
}

Но с моими данными графика вывод будет:

 :ST1 :BOOK1 :ST2
 :ST2 :BOOK1 :ST1 ... etc

И я хочу, чтобы отображалось только отношение :ST1 :BOOK1 :ST2.

1 Ответ

1 голос
/ 26 мая 2020

Ваша проблема в том, что вы помещали DISTINCT там, где его нельзя применить к одной переменной, только когда вы отображаете более одной, вместо этого вы можете сделать это:

SELECT (SAMPLE(?x) as ?xx) ?book (SAMPLE(?y) as ?yy)
 {
   ?y :read ?book.
   ?book ^:read ?x.
   FILTER(?x != ?y).
}
GROUP BY ?book

Вывод:

:ST1 :BOOK1 :ST2
...