首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问属性的属性

访问属性的属性
EN

Stack Overflow用户
提问于 2016-04-12 22:23:58
回答 2查看 307关注 0票数 5

我有以下查询,即我在wikidata查询服务web接口上运行

代码语言:javascript
复制
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" }
} 

我发现质量值在中给出了一个特定的 单元,在地球的情况下。我怎样才能访问这些信息?

我试着添加这样的东西:

代码语言:javascript
复制
?mass   wdt:P2237 ?mass_unit.

但是,预期的是,这是行不通的,因为?mass是一个整数,而不是一个引用地球质量的物体。将属性本身用作主题也不起作用:

代码语言:javascript
复制
?object wdt:P2067 ?mass.
wd:P2067 wdt:P2237 ?massUnit.

这个返回所有元组都有所有可用的单元。(地球与5972.37公斤,5972.37公象,5972.37太阳质量等有关)

此外,将属性链接到无结果

代码语言:javascript
复制
?object wdt:P2067/wdt:P2237 ?massUnit.

我想象我需要使用,不是属性本身,而是它的一个实例,具体连接地球和描述其质量的整数。

如何访问单位信息?(就地球而言,约塔格拉姆)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-17 18:49:48

MediaWiki.org页面https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format描述了维基数据是如何用RDF (因此用SPARQL)表示的。

相关的部分是,在您的示例中,wdt:P2067直接给出了值,但是如果您使用p:P2067,则会得到整个语句。从这里,您可以使用psv:P2067获取一个值节点。从这里,您可以使用wikibase:quantityAmount获得质量(就像使用wdt:P2067一样),但也可以使用wikibase:quantityUnit获取表示单元的实体。

因此,整个查询可能如下所示:

代码语言:javascript
复制
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变量:

代码语言:javascript
复制
?object p:P2067/psv:P2067 [
  wikibase:quantityAmount ?mass;
  wikibase:quantityUnit ?massUnit ] 
票数 5
EN

Stack Overflow用户

发布于 2016-04-13 03:42:35

RDF文本由XSD数据类型键入,SPARQL的datatype()可用于查找类型。因此,在您的SELECT语句中尝试使用以下方法来查找?mass的类型

代码语言:javascript
复制
SELECT ?objectLabel ?mass (datatype(?mass) AS ?masstype)
....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36585152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档