如何使用SPARQL从Wikidata查询数值对应的单位(以沸点为例)
解决方法
错误原因
你之前的查询失败核心是属性误用:ps:P2102仅返回沸点的纯数值字面量,不包含单位等元数据。需要使用psv:P2102(属性声明值)获取完整的数量结构体节点,才能读取wikibase:quantityAmount(数值)和wikibase:quantityUnit(单位)属性。
方案1:返回所有沸点值及对应单位
SELECT ?temperature ?unit ?unitLabel WHERE { wd:Q153 p:P2102 ?statement. ?statement psv:P2102 ?quantityNode. ?quantityNode wikibase:quantityAmount ?temperature; wikibase:quantityUnit ?unit. SERVICE wikibase:label { bd:serviceParam wikibase:language "zh,en". } }
运行后会返回两条结果:
- 数值78.0,单位对应摄氏度
- 数值173.0,单位对应华氏度
方案2:仅筛选摄氏度单位的沸点值
如果只需摄氏度结果,直接在查询中增加单位匹配规则即可,摄氏度对应的Wikidata实体ID为wd:Q25267:
SELECT ?temperature WHERE { wd:Q153 p:P2102 ?statement. ?statement psv:P2102 ?quantityNode. ?quantityNode wikibase:quantityAmount ?temperature; wikibase:quantityUnit wd:Q25267. }
运行后直接返回乙醇的摄氏度沸点78.0。
内容的提问来源于stack exchange,提问作者RosA
相关产品推荐
相关产品推荐

