如何在Sparql中的多个列上选择distinct? query1: 前缀rdf: 前缀rdfs: 前缀: 选择不同的y作为r1不同的x0作为r0,其中{ ?x1?x0:m.0qj89jg。 ?x1?y?x2。 过滤器正则表达式(?x0,“http://rdf.freebase.com/ns/") 过滤正则表达式(?y,“http://rdf.freebase.com/ns/") } 问题2: 前缀rdf: 前缀rdfs: 前缀: 选择不同的y作为r1?x0作为r0,其中{ ?x1?x0:m.0qj89jg。 ?x1?y?x2。 过滤器正则表达式(?x0,“http://rdf.freebase.com/ns/") 过滤正则表达式(?y,“http://rdf.freebase.com/ns/") }

如何在Sparql中的多个列上选择distinct? query1: 前缀rdf: 前缀rdfs: 前缀: 选择不同的y作为r1不同的x0作为r0,其中{ ?x1?x0:m.0qj89jg。 ?x1?y?x2。 过滤器正则表达式(?x0,“http://rdf.freebase.com/ns/") 过滤正则表达式(?y,“http://rdf.freebase.com/ns/") } 问题2: 前缀rdf: 前缀rdfs: 前缀: 选择不同的y作为r1?x0作为r0,其中{ ?x1?x0:m.0qj89jg。 ?x1?y?x2。 过滤器正则表达式(?x0,“http://rdf.freebase.com/ns/") 过滤正则表达式(?y,“http://rdf.freebase.com/ns/") },sparql,rdf,semantic-web,Sparql,Rdf,Semantic Web,第一个查询出现语法错误,第二个查询返回所有不同的(y,x0)对。我想要的是得到y的所有不同值和x0的所有不同值(不是(y,x0)的不同对,因为它们是独立考虑的)。我相信这应该不难,但我找不到解决办法。这是不可能的(或者至少我不知道怎么做)-你应该换一种方式,使用联合,然后使用第二个标记变量,表示它是关于?x0还是?y@AKSW谢谢!您知道在给定实体的2个跃点内获得所有相邻关系(考虑两个方向)的最佳方法是什么吗?现在,我需要运行对应于4种情况的不同查询(即,in-relation和out-rela

第一个查询出现语法错误,第二个查询返回所有不同的(y,x0)对。我想要的是得到y的所有不同值和x0的所有不同值(不是(y,x0)的不同对,因为它们是独立考虑的)。我相信这应该不难,但我找不到解决办法。

这是不可能的(或者至少我不知道怎么做)-你应该换一种方式,使用
联合
,然后使用第二个标记变量,表示它是关于
?x0
还是
?y
@AKSW谢谢!您知道在给定实体的2个跃点内获得所有相邻关系(考虑两个方向)的最佳方法是什么吗?现在,我需要运行对应于4种情况的不同查询(即,in-relation和out-relation、in-and-in、out-and-out、out-and-in),您是否可以使用4个
UNION
子句将所有查询包装在一个查询中?对于给定的资源
:x
query1:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <http://rdf.freebase.com/ns/> 
SELECT distinct ?y as ?r1 distinct ?x0 as ?r0 WHERE {
      ?x1 ?x0 :m.0qj89jg. 
      ?x1 ?y ?x2 .
      FILTER regex(?x0, "http://rdf.freebase.com/ns/")
      FILTER regex(?y, "http://rdf.freebase.com/ns/")
 }

query2:
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX : <http://rdf.freebase.com/ns/> 
SELECT distinct ?y as ?r1 ?x0 as ?r0 WHERE {
      ?x1 ?x0 :m.0qj89jg. 
      ?x1 ?y ?x2 .
      FILTER regex(?x0, "http://rdf.freebase.com/ns/")
      FILTER regex(?y, "http://rdf.freebase.com/ns/")
 }