如何通过SPARQL查询Wikidata中指定实体的所有关联实体(以Matthew Effect为例)
在Wikidata中查询某实体的关联实体(以Matthew Effect为例)
首先确定目标实体的Wikidata ID,Matthew Effect对应的是Q162246(这个ID可从Wikidata页面的URL中获取)。以下是通用SPARQL查询,能找出所有与该实体存在属性关联的其他实体,同时返回关联所用的属性及对应可读标签:
SELECT ?relatedEntity ?relatedEntityLabel ?property ?propertyLabel WHERE { # 匹配目标实体作为主语,关联到其他实体的情况 { wd:Q162246 ?property ?relatedEntity } UNION # 匹配其他实体作为主语,关联到目标实体的情况 { ?relatedEntity ?property wd:Q162246 } # 获取实体和属性的多语言标签,[AUTO_LANGUAGE]会优先匹配当前语言,可添加zh、en等指定语言 SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],zh,en" } } ORDER BY ?propertyLabel ?relatedEntityLabel
关键部分说明
UNION:同时覆盖两种关联方向——目标实体指向其他实体、其他实体指向目标实体,避免遗漏任何关联关系。SERVICE wikibase:label:自动拉取实体和属性的人类可读标签,不用直接处理晦涩的ID字符串。ORDER BY:按属性标签、关联实体标签排序,让结果更易浏览。
进阶调整方案
如果需要更精准的查询,可添加过滤条件:
- 仅保留特定类型的关联实体:比如只看“人类”,就在WHERE子句中加入
?relatedEntity wdt:P31 wd:Q5(Q5是Wikidata中“人类”的ID)。 - 仅查看指定属性的关联:比如只看“实例属于”关系,将
?property替换为wdt:P31即可。 - 仅保留单向关联:去掉UNION中的任意一个分支,就能只查目标实体指向其他实体,或其他实体指向目标实体的情况。
内容的提问来源于stack exchange,提问作者olo
相关产品推荐
相关产品推荐

