给定一个谓词,计算每个主题的对象数量?

Given a predicate, count number of objects for each subject?

我正在尝试编写一个 SPARQL 查询,它将 return 一个主题及其针对特定谓词的对象数量。这是我拥有的,但它不起作用。

SELECT ?quote (COUNT(?quotedBy) AS ?no) WHERE {
  ?quote <http://scta.info/property/quotationType> <http://scta.info/resource/quoteType/Biblical> . 
  ?quote <http://scta.info/property/quotedBy> ?quotedBy .
} 

您的查询不合法。如果您在 sparql.org's query validator 检查,您将得到响应:

Syntax error:

Non-group key variable in SELECT: ?quote

您需要 一个或多个变量进行分组。在这种情况下,您想计算 ?quotedBy 值的数量 per?quote,所以 你需要 group by ?quote:

select ?quote (count(?quotedBy) AS ?no) where {
  ?quote <http://scta.info/property/quotationType> <http://scta.info/resource/quoteType/Biblical> . 
  ?quote <http://scta.info/property/quotedBy> ?quotedBy .
} 
group by ?quote