【问题标题】:sparql wikidata identifiers referencesparql wikidata 标识符参考
【发布时间】:2016-09-26 01:36:39
【问题描述】:

我使用 KMDb 个人 ID 从 wikidata 数据库中检索信息。 结果是带有三个 IMDB 代码的三行。 如果我查看女演员 wikidata 网页 (https://www.wikidata.org/wiki/Q7496795),我可以看到其中只有一个有参考。

我怎样才能只选择这个项目?是否可以将引用显示为 sparql 查询的输出?

非常感谢

PREFIX wikibase: <http://wikiba.se/ontology#>
PREFIX wd:       <http://www.wikidata.org/entity/> 
PREFIX wdt:      <http://www.wikidata.org/prop/direct/>
PREFIX rdfs:     <http://www.w3.org/2000/01/rdf-schema#>
PREFIX p:        <http://www.wikidata.org/prop/>
PREFIX v:        <http://www.wikidata.org/prop/statement/>
PREFIX pr: <http://www.wikidata.org/prop/reference/>

SELECT ?wikidata ?imdb ?Q ?prop ?value
       WHERE {
   ?wikidata wdt:P345  ?imdb .
   ?wikidata wdt:P31   wd:Q5 .
    ?wikidata wdt:P1649 "00003964" . # KMDb person ID
}
LIMIT 10

【问题讨论】:

    标签: sparql wikidata


    【解决方案1】:

    References in Wikidata 使用属性prov:wasDerivedFrom 来表示关于语句的出处信息。在您的情况下,摆脱没有值的引用(值节点也是一个语句)的一种方法是为此添加一个三元组模式:

    SELECT ?wikidata ?imdb ?Q ?prop ?value
    WHERE
    {
      ?wikidata p:P345 ?statement. 
                ?statement ps:P345 ?imdb; 
                           prov:wasDerivedFrom ?ref .
      ?wikidata wdt:P31 wd:Q5.
      ?wikidata wdt:P1649 "00003964". # KMDb person ID
    }
    LIMIT 10
    

    但您根本不需要为语句添加变量。如suggested by @WikidataFacts,如果p:P345的对象直接是空白节点的描述会更高效:

    SELECT ?wikidata ?imdb ?Q ?prop ?value
    WHERE
    {
      ?wikidata p:P345 [ ps:P345 ?imdb; prov:wasDerivedFrom ?ref ].
      ?wikidata wdt:P31 wd:Q5.
      ?wikidata wdt:P1649 "00003964". # KMDb person ID
    }
    LIMIT 10
    

    还有更多选项,例如使用显式空白节点,或仅过滤具有至少一个值的节点。

    【讨论】:

    • 虽然这个答案在技术上是正确的,但我会警惕依赖于“从 xyz 维基百科导入”形式的任何参考。它确实没有任何参考价值。在返回的三个标识符中,一个显然是错误的,另外两个在 IMDb 中彼此重复。我不确定是否有一种好方法可以将这两种情况与单独的数据区分开来。
    猜你喜欢
    • 2016-07-09
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多