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
}
}
我有一个简单的问题。当我 运行 在 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
}
}