计算每部电影的演员
在问题的原始表述中,您似乎正在尝试计算每部电影的演员人数。查询实际上非常接近,但我不确定您从哪里获得属性 URI,但它是不正确的。例如,如果您查看http://data.linkedmdb.org/page/film/1并右键单击该movie:actor
属性,您可以看到它的 URI 是http://data.linkedmdb.org/resource/movie/actor
. 因此,您的查询可能是:
SELECT ?film (count(*) as ?nActors) WHERE {
?film <http://data.linkedmdb.org/resource/movie/actor> ?actor .
}
group by ?film
limit 10
计算演员
现在,您可以通过运行相同的三元组模式来修改此查询以计算演员,但不是按电影分组并计算演员,而是只计算所有电影中不同的演员:
select(count(distinct ?actor) as ?nActors) where {
[] <http://data.linkedmdb.org/resource/movie/actor> ?actor .
}
现在,这似乎提供了 162 的答案,这似乎相当低,但在其他问题中,我们已经看到 LinkedMDB 的端点有一些奇怪的限制。可能是因为这些,但这也不是我们计算演员的唯一方法。您可以通过查看演员的页面(例如http://data.linkedmdb.org/page/actor/10)注意到每个演员都有 rdf:type http://data.linkedmdb.org/resource/movie/actor
,这意味着您可以只用它来询问和计算事物类型:
select(count(distinct ?actor) as ?nActors) where {
?actor a <http://data.linkedmdb.org/resource/movie/actor> .
}
该查询返回 2500,这似乎更合适(因为它可能在端点中达到了 2500 的限制)。