在另一个选择内选择

问题描述 投票:0回答:1

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

select * from <mygraph2#> where {
  ?s ?p ?id in {select ?id from <mygraph1#> where { ?id ?t "MyService" }
} 
sparql
1个回答
5
投票

您不选择来自子选择。您只需执行子选择,它就为封闭查询提供了一些变量。我不确定您在哪里找到了与问题中所显示内容类似的示例。这不是标准中的任何示例(请参见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" }
}
© www.soinside.com 2019 - 2024. All rights reserved.