如何用SPARQL查询获取Wikidata条目的全部属性及对应ID
合并Wikidata属性查询:获取条目全部带ID的属性(一级+二级)
可以通过SPARQL的OPTIONAL子句结合属性ID绑定逻辑,一次性获取目标条目的一级属性(带ID)和二级属性(带ID),以下是完整的可复用查询示例:
# 替换wd:Q42为你要查询的目标条目ID BIND(wd:Q42 AS ?item) # 匹配一级属性及其对应的Pxxx格式ID ?item ?propID ?value. ?prop wdt:P31 wd:Q18616576; # 限定为Wikidata属性类型 wikibase:directClaim ?propID. # 绑定属性的直接声明ID # 可选匹配二级属性及其ID(仅当属性值本身有属性时返回) OPTIONAL { ?value ?subPropID ?subValue. ?subProp wdt:P31 wd:Q18616576; wikibase:directClaim ?subPropID. } # 自动获取属性的多语言标签(可修改language参数切换语言,如"zh") SERVICE wikibase:label { bd:serviceParam wikibase:language "en,zh". }
核心逻辑说明:
- 属性ID绑定:通过
wikibase:directClaim谓词,将属性实体(如wd:P31)与它的Pxxx格式直接声明ID关联,确保拿到你需要的属性标识符。 - 二级属性兼容:用
OPTIONAL包裹二级属性匹配逻辑,避免因部分一级属性值无二级属性而丢失有效结果。 - 标签本地化:修改
wikibase:language的参数值(如改为"zh")即可获取中文属性标签。
灵活调整提示:
- 若仅需一级属性,直接删除
OPTIONAL块即可。 - 若要过滤特定类型的属性值,可添加条件(如
?value wdt:P31 wd:Q35120限定属性值为人类实体)。
内容的提问来源于stack exchange,提问作者Isabel
相关产品推荐
相关产品推荐

