我正在研究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
必须是不同的资源?
提前感谢您的回答!