2

如果我的图表中有这样的关系,我如何显示不同的学生对:

: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显示关系。

4

1 回答 1

1

您的问题是您将 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
于 2020-05-25T21:28:47.147 回答