如何使用 SPARQL 从 Wikidata 获取值的单位?
How do I get the unit of a value from Wikidata using SPARQL?
我是 SPARQL 的新手,我想从维基数据中获取化学物质的沸点。但是,当我以乙醇为例尝试 this query 时,我得到两个数字,一个是华氏度的沸点,另一个是摄氏度的沸点,但无法分辨哪个是哪个。
理想情况下,我只想过滤到 return 摄氏度值,但如果我能得到每个值的单位,然后我可以稍后将其整理出来,我也会很高兴(那是到目前为止我已经尝试过,作为第一步)。
我试过这个:
SELECT
?temperature ?temperatureLabel ?unitLabel
WHERE {
wd:Q153 p:P2102 ?statement.
?statement ps:P2102 [
wikibase:quantityAmount ?temperature;
wikibase:quantityUnit ?unit;
].
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
还有这个:
SELECT
?temperature ?temperatureLabel ?unitLabel
WHERE {
wd:Q153 p:P2102 ?statement.
?statement ps:P2102 ?temperature.
?temperature wikibase:quantityUnit ?unit.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
...除其他事项外,但未收到匹配结果。几个小时以来,我一直在用头撞墙,非常感谢任何帮助。
ps:
将语句链接到简单值。对于数量,这意味着没有单位、下限和上限的值。
要获取单位,您首先需要使用 psv:
从语句访问值节点。从值节点中,您可以使用 wikibase:quantityUnit
和 wikibase:quantityAmount
.
获取单位和金额
SELECT ?temperature ?unitLabel WHERE {
wd:Q153 p:P2102 ?statement .
?statement psv:P2102 ?valuenode.
?valuenode wikibase:quantityAmount ?temperature.
?valuenode wikibase:quantityUnit ?unit.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
我是 SPARQL 的新手,我想从维基数据中获取化学物质的沸点。但是,当我以乙醇为例尝试 this query 时,我得到两个数字,一个是华氏度的沸点,另一个是摄氏度的沸点,但无法分辨哪个是哪个。
理想情况下,我只想过滤到 return 摄氏度值,但如果我能得到每个值的单位,然后我可以稍后将其整理出来,我也会很高兴(那是到目前为止我已经尝试过,作为第一步)。
我试过这个:
SELECT
?temperature ?temperatureLabel ?unitLabel
WHERE {
wd:Q153 p:P2102 ?statement.
?statement ps:P2102 [
wikibase:quantityAmount ?temperature;
wikibase:quantityUnit ?unit;
].
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
还有这个:
SELECT
?temperature ?temperatureLabel ?unitLabel
WHERE {
wd:Q153 p:P2102 ?statement.
?statement ps:P2102 ?temperature.
?temperature wikibase:quantityUnit ?unit.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
...除其他事项外,但未收到匹配结果。几个小时以来,我一直在用头撞墙,非常感谢任何帮助。
ps:
将语句链接到简单值。对于数量,这意味着没有单位、下限和上限的值。
要获取单位,您首先需要使用 psv:
从语句访问值节点。从值节点中,您可以使用 wikibase:quantityUnit
和 wikibase:quantityAmount
.
SELECT ?temperature ?unitLabel WHERE {
wd:Q153 p:P2102 ?statement .
?statement psv:P2102 ?valuenode.
?valuenode wikibase:quantityAmount ?temperature.
?valuenode wikibase:quantityUnit ?unit.
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}