在维基数据中使用SPARQL获取实体标签数据



我使用维基数据查询服务获取数据:https://query.wikidata.org/

我已经设法使用实体的标签使用两个方法:

  1. 使用wikibase标签服务。例如:
SELECT ?spouse ?spouseLabel WHERE {
   wd:Q1744 wdt:P26 ?spouse.
   SERVICE wikibase:label {
     bd:serviceParam wikibase:language "en" .
   }
}
  • 使用rdfs:label属性:
  • SELECT ?spouse ?spouseLabel WHERE {
       wd:Q1744 wdt:P26 ?spouse.
       ?spouse rdfs:label ?spouseLabel. filter(lang(?spouseLabel) = "en").
    }
    

    然而,对于复杂的查询,第二种方法似乎执行得更快,这与MediaWiki用户手册所说的相反:

    当您想要检索标签时,该服务非常有用降低了SPARQL查询的复杂性以达到相同的效果。

    (https://www.mediawiki.org/wiki/Wikidata_query_service/User_Manual # Label_service)

    维基百科添加了什么我不能只用rdfs:label实现?这看起来很奇怪,因为它们似乎都实现了相同的目的,但rdfs:label方法似乎更快(这是合乎逻辑的,因为查询不需要连接来自外部源的数据)。

    谢谢!

    我从文档中了解到,wikibase标签服务通过删除显式搜索标签的需要来简化查询。在这方面,它减少了你需要编写的查询的复杂性,在语法方面。

    我假设在实际解析之前,查询被扩展到另一种表示形式,可能使用第二个选项中的rdfs名称空间。

    根据第二个选项更快,您是否进行了系统的基准测试?在我的几次尝试中,第一个选项更快。我假设公共端点的性能无论如何都会受到基于需求,缓存等的波动的影响,因此对类似查询的性能得出结论可能会很棘手。

    最新更新