维基数据 SPARQL 查询限定符值
Wikidata SPARQL Query Qualifier Value
对于熟悉 SPARQL 的人(我不是),这应该相当容易。我正在尝试在此查询中 return "score_by" 的 qualifier/property 值,但它显示为空白:
SELECT ?item ?itemLabel ?IMDb_ID ?_review_score ?_score_by WHERE {
?item wdt:P345 "tt3315342".
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
OPTIONAL { ?item wdt:P345 ?IMDb_ID. }
OPTIONAL { ?item wdt:P444 ?_review_score. }
OPTIONAL { ?item ps:P447 ?_score_by. }
}
'Score by' 是一个棘手的事情,因为它符合分数。
分数是复杂的东西:它们不仅仅是一个值,而且是由评分者(烂番茄、IMDB 等)确定的。如果您的查询有效,答案会产生误导,因为不清楚 ?_review_score
是否对应于 ?_score_by
,即评论分数是否对应于评论。
(你可能会问为什么 P444 - 分数 - 在那里,因为没有审阅者信息不完整。这是一个公平的问题。实际的 属性 是 wdt:P444
,一个 wikidata 直接属性。这意味着 属性 是为了方便而创建的快捷方式,但代价是丢失了一些上下文。它们就像数据库视图。)
他们实际工作的方式是 'reifying' 将复杂的评论分数作为一个事物、一个对象 'the review',然后将信息 - 分数、评论者等 - 挂在上面。
例如:
select * where {
wd:Q24053263 p:P444 ?review . # Get reviews for wolverine
?review ?p ?o # Get all info from the review
}
这里可以看到评分在p:statement/P444
下面,还有'qualifier'p:qualifier/P447
,也就是审稿人
本质上,维基数据中的属性可以以多种形式出现,并在前缀中进行编码。
回答你的问题:
OPTIONAL { ?item wdt:P444 ?_review_score. }
OPTIONAL { ?item ps:P447 ?_score_by. }
应该是
OPTIONAL {
?item p:P444 ?review .
?review pq:P447 ?_score_by ; ps:P444 ?_review_score
}
即将评论视为一件事情,然后从中获得分数和相应的评论者。
(如果您担心可能会有没有审稿人的分数,您可以在其中添加另一个选项)
对于熟悉 SPARQL 的人(我不是),这应该相当容易。我正在尝试在此查询中 return "score_by" 的 qualifier/property 值,但它显示为空白:
SELECT ?item ?itemLabel ?IMDb_ID ?_review_score ?_score_by WHERE {
?item wdt:P345 "tt3315342".
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
OPTIONAL { ?item wdt:P345 ?IMDb_ID. }
OPTIONAL { ?item wdt:P444 ?_review_score. }
OPTIONAL { ?item ps:P447 ?_score_by. }
}
'Score by' 是一个棘手的事情,因为它符合分数。
分数是复杂的东西:它们不仅仅是一个值,而且是由评分者(烂番茄、IMDB 等)确定的。如果您的查询有效,答案会产生误导,因为不清楚 ?_review_score
是否对应于 ?_score_by
,即评论分数是否对应于评论。
(你可能会问为什么 P444 - 分数 - 在那里,因为没有审阅者信息不完整。这是一个公平的问题。实际的 属性 是 wdt:P444
,一个 wikidata 直接属性。这意味着 属性 是为了方便而创建的快捷方式,但代价是丢失了一些上下文。它们就像数据库视图。)
他们实际工作的方式是 'reifying' 将复杂的评论分数作为一个事物、一个对象 'the review',然后将信息 - 分数、评论者等 - 挂在上面。
例如:
select * where {
wd:Q24053263 p:P444 ?review . # Get reviews for wolverine
?review ?p ?o # Get all info from the review
}
这里可以看到评分在p:statement/P444
下面,还有'qualifier'p:qualifier/P447
,也就是审稿人
本质上,维基数据中的属性可以以多种形式出现,并在前缀中进行编码。
回答你的问题:
OPTIONAL { ?item wdt:P444 ?_review_score. }
OPTIONAL { ?item ps:P447 ?_score_by. }
应该是
OPTIONAL {
?item p:P444 ?review .
?review pq:P447 ?_score_by ; ps:P444 ?_review_score
}
即将评论视为一件事情,然后从中获得分数和相应的评论者。
(如果您担心可能会有没有审稿人的分数,您可以在其中添加另一个选项)