访问 属性 的 属性
Access the property of a property
我有以下查询,我 运行 在 wikidata query service web interface:
SELECT ?objectLabel ?mass
WHERE {
?object wdt:P397 wd:Q525. # the object should have the sun as parent astronomical body
?object wdt:P31 ?status.
?object wdt:P2067 ?mass.
# Here are the accepted object status
VALUES ?status {wd:Q128207 wd:Q121750 wd:Q1319599}. # terrestrial planet, gas giant, ice giant
# automatically use the english label for ?xLabel variables
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
我发现 mass value is given in a specific unit,地球的 yottagram。
我如何访问此信息?
我尝试添加如下内容:
?mass wdt:P2237 ?mass_unit.
但是,不出所料,这不起作用,因为 ?mass
是一个整数,而不是引用地球质量的对象。
使用 属性 本身作为主题也不起作用:
?object wdt:P2067 ?mass.
wd:P2067 wdt:P2237 ?massUnit.
这 returns 所有具有所有可用单位的元组。 (地球与 5972.37 千克、5972.37 yottagrams、5972.37 太阳质量等有关)
此外,链接属性会导致 no results:
?object wdt:P2067/wdt:P2237 ?massUnit.
我想我需要使用的不是 属性 本身,而是它的一个具体链接地球和描述其质量的整数的实例。
如何获取单位信息? (如果是地球,Yottagram)
RDF 文字由 XSD 数据类型分类,SPARQL 的 datatype()
可用于查找类型。所以在你的 SELECT
语句中试试这个来找到 ?mass
:
的类型
SELECT ?objectLabel ?mass (datatype(?mass) AS ?masstype)
....
MediaWiki.org 页 Wikibase/Indexing/RDF Dump Format.
描述了维基数据如何以 RDF(以及 SPARQL)表示
相关的部分是,在你的情况下,wdt:P2067
直接给你值,但如果你改为使用 p:P2067
,你会得到整个 语句。从那里,您可以使用 psv:P2067
获得 值节点 。从那里,您可以使用 wikibase:quantityAmount
获取质量(就像使用 wdt:P2067
一样),但您也可以使用 wikibase:quantityUnit
获取表示单位的实体。
因此,整个查询可能如下所示:
SELECT ?objectLabel ?mass ?massUnitLabel
WHERE {
?object wdt:P397 wd:Q525. # the object should have the sun as parent astronomical body
?object wdt:P31 ?status.
?object p:P2067/psv:P2067 ?massValue.
?massValue wikibase:quantityAmount ?mass.
?massValue wikibase:quantityUnit ?massUnit.
# Here are the accepted object status
VALUES ?status {wd:Q128207 wd:Q121750 wd:Q1319599}. # terrestrial planet, gas giant, ice giant
# automatically use the english label for ?xLabel variables
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
如果需要,可以使用以下代码删除 ?massValue
变量:
?object p:P2067/psv:P2067 [
wikibase:quantityAmount ?mass;
wikibase:quantityUnit ?massUnit ]
我有以下查询,我 运行 在 wikidata query service web interface:
SELECT ?objectLabel ?mass
WHERE {
?object wdt:P397 wd:Q525. # the object should have the sun as parent astronomical body
?object wdt:P31 ?status.
?object wdt:P2067 ?mass.
# Here are the accepted object status
VALUES ?status {wd:Q128207 wd:Q121750 wd:Q1319599}. # terrestrial planet, gas giant, ice giant
# automatically use the english label for ?xLabel variables
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
我发现 mass value is given in a specific unit,地球的 yottagram。 我如何访问此信息?
我尝试添加如下内容:
?mass wdt:P2237 ?mass_unit.
但是,不出所料,这不起作用,因为 ?mass
是一个整数,而不是引用地球质量的对象。
使用 属性 本身作为主题也不起作用:
?object wdt:P2067 ?mass.
wd:P2067 wdt:P2237 ?massUnit.
这 returns 所有具有所有可用单位的元组。 (地球与 5972.37 千克、5972.37 yottagrams、5972.37 太阳质量等有关)
此外,链接属性会导致 no results:
?object wdt:P2067/wdt:P2237 ?massUnit.
我想我需要使用的不是 属性 本身,而是它的一个具体链接地球和描述其质量的整数的实例。
如何获取单位信息? (如果是地球,Yottagram)
RDF 文字由 XSD 数据类型分类,SPARQL 的 datatype()
可用于查找类型。所以在你的 SELECT
语句中试试这个来找到 ?mass
:
SELECT ?objectLabel ?mass (datatype(?mass) AS ?masstype)
....
MediaWiki.org 页 Wikibase/Indexing/RDF Dump Format.
描述了维基数据如何以 RDF(以及 SPARQL)表示相关的部分是,在你的情况下,wdt:P2067
直接给你值,但如果你改为使用 p:P2067
,你会得到整个 语句。从那里,您可以使用 psv:P2067
获得 值节点 。从那里,您可以使用 wikibase:quantityAmount
获取质量(就像使用 wdt:P2067
一样),但您也可以使用 wikibase:quantityUnit
获取表示单位的实体。
因此,整个查询可能如下所示:
SELECT ?objectLabel ?mass ?massUnitLabel
WHERE {
?object wdt:P397 wd:Q525. # the object should have the sun as parent astronomical body
?object wdt:P31 ?status.
?object p:P2067/psv:P2067 ?massValue.
?massValue wikibase:quantityAmount ?mass.
?massValue wikibase:quantityUnit ?massUnit.
# Here are the accepted object status
VALUES ?status {wd:Q128207 wd:Q121750 wd:Q1319599}. # terrestrial planet, gas giant, ice giant
# automatically use the english label for ?xLabel variables
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" }
}
如果需要,可以使用以下代码删除 ?massValue
变量:
?object p:P2067/psv:P2067 [
wikibase:quantityAmount ?mass;
wikibase:quantityUnit ?massUnit ]