我有以下查询,其中我试图使用一个图中的元素ID来检索另一个图中的某些值。但是,这不起作用:
select * from <mygraph2#> where {
?s ?p ?id in {select ?id from <mygraph1#> where { ?id ?t "MyService" }
}
您不选择来自子选择。您只需执行子选择,它就为封闭查询提供了一些变量。我不确定您在哪里找到了与问题中所显示内容类似的示例。这不是标准中的任何示例(请参见Section 12, Subqueries)。您的查询将是这样的(请注意,这实际上是不合法的,因为您不能在子查询中使用FROM):
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" }
}