Sparql 如何选择在同一家公司工作并相互了解的每一对人员?

Sparql 如何选择在同一家公司工作并相互了解的每一对人员?,sparql,Sparql,我正在尝试构造一个SPARQL查询,它返回在同一家公司工作并且彼此认识的每一对人员 我试过: SELECT distinct ?x ?y ?z WHERE { ?x ex:knows ?y . {?x ex:worksFor ?z}} ORDER BY (?z) 这给了我两列员工和一列公司。每个公司有3个人。它应该返回“pairs”。有人知道我可以如何改进查询吗?这里需要一些东西。首先,您还需要确保?y为?z工作。然后,如果您只需要ex:knows中的配对,请仅选择?x和?y: SELECT

我正在尝试构造一个SPARQL查询,它返回在同一家公司工作并且彼此认识的每一对人员

我试过:

SELECT distinct ?x ?y ?z
WHERE { ?x ex:knows ?y . {?x ex:worksFor ?z}} ORDER BY (?z)

这给了我两列员工和一列公司。每个公司有3个人。它应该返回“pairs”。有人知道我可以如何改进查询吗?

这里需要一些东西。首先,您还需要确保?y为?z工作。然后,如果您只需要ex:knows中的配对,请仅选择?x和?y:

SELECT DISTINCT ?x ?y
WHERE {
   ?x ex:knows ?y .
   ?x ex:worksFor ?z .
   ?y ex:worksFor ?z .
} ORDER BY ?z

也许还可以过滤?y!=?z既然
?y
是个人而
?z
是公司,我们为什么要添加此过滤器?哦,AKSW。非常感谢。我以前看不到逻辑。过滤器是不必要的-除非人也是公司。