首页 文章

Wikidata SPARQL查询限定符值

提问于
浏览
1

对于熟悉SPARQL的人来说,这应该是相当容易的(我不是这样) . 我试图在此查询中返回“score_by”的限定符/属性值,它显示为空白:

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. }
}

Here is a link to this query

1 回答

  • 3

    '得分'是一个棘手的事情,因为它有资格得分 .

    分数是复杂的:他们不清楚 ?_review_score 是否对应 ?_score_by ,即评论得分是否与评论相对应 .

    (你可能会问为什么P444 - 得分 - 存在,因为没有评论者的信息不是't complete. It'是一个公平的问题 . 实际的属性是 wdt:P444 ,一个wikidata直接属性 . 这意味着该属性是为了方便而创建的快捷方式,以牺牲一些上下文为代价 . 它们就像数据库视图一样 . )

    他们实际工作的方式是将复杂的评论评分作为一个事物,一个对象“评论”,然后悬挂信息 - 评分,评论者等 - 将其复原 .

    例如:

    select * where {
        wd:Q24053263 p:P444 ?review . # Get reviews for wolverine
        ?review ?p ?o                 # Get all info from the review
    }
    

    Link

    你可以在这里看到得分在 p:statement/P444 下,并且's a '限定符' p:qualifier/P447 ,即评论者 .

    wikidata中的基本属性可以出现在前缀中编码的许多伪装中 .

    回答你的问题:

    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
    }
    

    Link

    即将评论视为一件事,然后从中获得评分和相应的评论者 .

    (如果您担心没有评论者可能会有分数,您可以在其中添加另一个可选项)

相关问题