我正在研究 SPARQL,但我对查询有疑问。
假设我有一个简单的本体,如下所示
:Jack a :Worker ; :worksAt :Project1,:Project2
:Bob a :Worker ; :worksAt :Project2,:Project3
:Mike a :Worker ; :worksAt :Project3,:Project1
现在我想问一下在同一个项目上工作的几个工人。如果我尝试类似
SELECT ?x,?y
WHERE
{
?x :worksAt ?p
?y :worksAt ?p
}
发生的情况是查询还分析了相同资源的情况?x
,?y
因此我[Jack,Jack]
在结果中有类似的东西。
如果我做
SELECT ?x,?y
WHERE
{
?x :worksAt ?p
?y :worksAt ?p
FILTER (?x != ?y)
}
查询工作正常,但对于非常复杂的查询,我发现自己做了数百个FILTERs
类似的查询。
有没有更好的方法来指定它?x
并且?y
必须是不同的资源?预先感谢您的回答!