You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Wikidata SPARQL查询中关联p[s[n]]与w[d[t]]属性并获取单位

获取维基数据指定条目的量化值及单位详情

需求:获取指定维基数据条目(如wd:Q1726)的所有量化值及其声明详情,重点是单位(数值无单位则失去意义)。

原查询说明

第一个查询用于获取所有量化值及属性基本信息:

SELECT ?p ?property ?propertyLabel ?propertyDescription ?v WHERE {
  wd:Q1726 ?p ?v.
  ?property wikibase:propertyType wikibase:Quantity;
    wikibase:directClaim ?p.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
ORDER BY ?v

该查询能返回类似310 km²的数值及属性的标签、描述,但缺少单位的结构化信息。

第二个查询针对单个属性(如wdt:P2046)获取最优声明的数值与单位:

SELECT ?statement ?value ?valueLabel ?unit ?unitLabel WHERE {
  wd:Q1726 p:P2046 ?statement.
  ?statement psn:P2046 ?valuenode.
  ?valuenode wikibase:quantityAmount ?value.
  ?valuenode wikibase:quantityUnit ?unit.
  ?statement a wikibase:BestRank.
  SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}

但无法批量关联所有量化属性的数值与单位。

合并后的解决方案

通过属性的元数据关联直接声明、声明节点与标准化数值,实现批量获取所有量化值的单位信息:

SELECT ?p ?property ?propertyLabel ?propertyDescription ?v ?quantityValue ?unit ?unitLabel WHERE {
  # 获取条目所有量化属性的直接显示值
  wd:Q1726 ?p ?v.
  
  # 筛选量化类型属性,并关联对应的声明属性、标准化值属性
  ?property wikibase:propertyType wikibase:Quantity;
            wikibase:directClaim ?p;
            wikibase:claim ?claimProperty;
            wikibase:statementValueNormalized ?psnProperty.
  
  # 获取该属性的最优声明节点
  wd:Q1726 ?claimProperty ?statement.
  ?statement a wikibase:BestRank.
  
  # 提取标准化数值与单位(OPTIONAL处理无单位的情况)
  ?statement ?psnProperty ?valuenode.
  ?valuenode wikibase:quantityAmount ?quantityValue.
  OPTIONAL { ?valuenode wikibase:quantityUnit ?unit. }
  
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
}
ORDER BY ?v

关键逻辑说明

  1. 关联直接值与声明节点:通过属性?property作为中间桥梁,利用wikibase:directClaim关联直接声明(wdt:Pxxx),wikibase:claim关联声明节点属性(p:Pxxx),从而把条目上的直接值?v和对应的声明?statement绑定。
  2. 标准化数值与单位:使用wikibase:statementValueNormalized获取标准化值属性(psn:Pxxx),提取的?quantityValue是统一格式的数值,?unit是标准化的单位实体;用OPTIONAL包裹单位部分,避免因部分量化值无单位导致数据丢失。
  3. 属性过滤:通过?property wikibase:propertyType wikibase:Quantity确保只处理量化类型的属性,排除非数值类属性。

内容的提问来源于stack exchange,提问作者Sebastian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 21:01:36