如何显示不同的一对学生?
How to display distinct pair of students?
如果我的图表中有这样的关系,我如何显示不同的学生对:
:ST1 :read :BOOK1,:BOOK2,:BOOK3.
:ST2 :read :BOOK1,:BOOK2.
:ST3 :read :BOOK2.
在我的 select 中,我有这样的东西:
SELECT DISTINCT ?x ?book ?y
{
?x :read ?book.
?book ^:read ?y.
FILTER(?x != ?y).
}
但是对于我的图表数据,输出将是:
:ST1 :BOOK1 :ST2
:ST2 :BOOK1 :ST1 ... etc
我只想显示 :ST1 :BOOK1 :ST2
关系。
你的问题是你把 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
如果我的图表中有这样的关系,我如何显示不同的学生对:
:ST1 :read :BOOK1,:BOOK2,:BOOK3.
:ST2 :read :BOOK1,:BOOK2.
:ST3 :read :BOOK2.
在我的 select 中,我有这样的东西:
SELECT DISTINCT ?x ?book ?y
{
?x :read ?book.
?book ^:read ?y.
FILTER(?x != ?y).
}
但是对于我的图表数据,输出将是:
:ST1 :BOOK1 :ST2
:ST2 :BOOK1 :ST1 ... etc
我只想显示 :ST1 :BOOK1 :ST2
关系。
你的问题是你把 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