我正在使用Wikidata的查询服务来获取数据:https ://query.wikidata.org/
我已经设法通过两种方法使用实体的标签:
Run Code Online (Sandbox Code Playgroud)SELECT ?spouse ?spouseLabel WHERE { wd:Q1744 wdt:P26 ?spouse. SERVICE wikibase:label { bd:serviceParam wikibase:language "en" . } }
rdfs:label属性:Run Code Online (Sandbox Code Playgroud)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)
wikibase补充了我仅使用rdfs:label无法实现的功能?这似乎很奇怪,因为它们看起来都达到了相同的目的,但是rdfs:label方法似乎更快(这是合乎逻辑的,因为查询不需要联接来自外部源的数据)。
谢谢!