如何通过Wikidata SPARQL获取维基百科重定向URL的对应实体?
解决维基百科重定向URL关联Wikidata实体的问题
方法1:在SPARQL中直接处理重定向
Wikidata的SPARQL支持wikibase:redirect谓词来处理维基百科页面的重定向关系,通过路径表达式可以让查询自动遍历重定向链,匹配到最终目标页面对应的Wikidata实体。修改后的查询如下:
prefix schema: <http://schema.org/> prefix wikibase: <http://wikiba.se/ontology#> SELECT ?originalUrl ?item WHERE { VALUES ?originalUrl { <https://en.wikipedia.org/wiki/Peninsular_War> <https://en.wikipedia.org/wiki/Napoleon_I_of_France> } # 零或多个重定向步骤,兼容普通页面和重定向页面 ?originalUrl wikibase:redirect*/schema:about ?item. }
这个查询的逻辑是:
- 对于无重定向的URL(比如半岛战争的页面),直接通过
schema:about关联对应的Wikidata条目 - 对于重定向URL(比如拿破仑一世的页面),会自动跳转到最终的目标页面,再关联到对应的Wikidata实体
方法2:预解析重定向获取目标URL
如果偏好先处理URL再查询,可以通过维基百科的工具或内部接口获取每个重定向URL的最终目标地址,再将目标URL代入你原本的SPARQL查询。这种方式需要额外的步骤,但适合需要单独处理URL的场景。
内容的提问来源于stack exchange,提问作者geldbogen
相关产品推荐
相关产品推荐

