3

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

4

0 回答 0