在另一个选择内选择

时间:2015-09-15 14:01:35

标签: sparql

我有以下查询,我试图使用一个图形中的元素的id来检索另一个图形中的某些值。但是这不起作用:

select * from <mygraph2#> where {
  ?s ?p ?id in {select ?id from <mygraph1#> where { ?id ?t "MyService" }
} 

1 个答案:

答案 0 :(得分:5)

您不能从子选择中选择。您只需执行子选择,它为封闭查询提供一些变量。我不知道你在哪里找到了一个像你在问题中所展示的那样的例子。它不是标准中的任何示例(参见Section 12, Subqueries)的样子。您的查询将是:

select * from <mygraph2#> where {
  ?s ?p ?id
  { select ?id from <mygraph1#>
    where { ?id ?t "MyService" } }
} 

但是,您选择的图表可用作数据集中的命名图表,此处不需要进行子选择。你可以做到

select * where {
  graph <mygraph2#> { ?s ?p ?id }
  graph <mygraph1#> { ?id ?t "MyService" }
}