5

ウィキデータ クエリ サービスの Web インターフェイスで実行した次のクエリがあります。

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   wdt:P2237 ?mass_unit.

しかし、予想通り、これは機能しません。なぜなら、?massは整数であり、地球の質量を参照するオブジェクトではないからです。プロパティ自体をサブジェクトとして使用しても機能しません。

?object wdt:P2067 ?mass.
wd:P2067 wdt:P2237 ?massUnit.

これにより、使用可能なすべてのユニットを含むすべてのタプルが返されます。(地球は 5972.37 キログラム、5972.37 ヨッタグラム、5972.37 太陽質量などに関連付けられています)

また、プロパティをチェーンしても結果はありません:

?object wdt:P2067/wdt:P2237 ?massUnit.

プロパティ自体ではなく、地球とその質量を表す整数を具体的にリンクするインスタンスを使用する必要があると思います。

ユニット情報へのアクセス方法 (地球の場合、ヨッタグラム)

4

2 に答える 2

0

RDF リテラルは XSD データ型によって型付けされ、SPARQLdatatype()を使用して型を見つけることができます。したがって、SELECTステートメントでこれを試して、のタイプを見つけて?massください。

SELECT ?objectLabel ?mass (datatype(?mass) AS ?masstype)
....
于 2016-04-13T03:42:35.310 に答える