我有以下查询,我试图使用一个图形中的元素的id来检索另一个图形中的某些值。但是这不起作用:
select * from <mygraph2#> where {
?s ?p ?id in {select ?id from <mygraph1#> where { ?id ?t "MyService" }
}
答案 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" }
}