SPARQL 中的 For 循环

For Loop in SPARQL

我有一个简单的问题。当我 运行 在 DBpedia SPARQL 端点上进行此查询时,我得到了 5 部电影 URI 的列表:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

select ?film {
?film rdf:type <http://schema.org/Movie>.

}
limit 5

我正在尝试访问列表中每部电影的所有谓词和对象。我试过了,但没有用。

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

select ?film ?p ?o {
?film rdf:type <http://schema.org/Movie>;
      ?p ?o.
}
group by ?film
limit 5

有什么建议吗?

SPARQL 本质上是递归的,因此不需要 for 循环。这意味着,关于您的第二个示例,它将匹配电影是一种电影的所有谓词和对象。我相信您可能认为您的查询实际上不起作用,但返回的答案数量限制掩盖了这一点。

我建议检索单部电影 -

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
select ?s ?o ?o where {
 ?s ?p ?o .
 FILTER (?s = ?film)
 {
  select ?film {
   ?film rdf:type <http://schema.org/Movie> .
  }
  group by ?film
  limit 1
 }
}