2017-09-13 2 views
1

特定の人のライフスパンに関するデータを取得しようとしています。これはしばらく前に住んでいた人々の場合には問題である。例えば、 Pythagorasdate of birth (P569)のためのいわゆる "ブランクノード"を持っているようです。しかし、この空白のノードは、別のノードearliest date (P1319)を参照しています。このノードには、うまく動作するデータがあります。Wikidataの空きノードからデータを取得する

しかし、何らかの理由で私はそのノードを取得できません。 My first try looked like this、何とか結果はcompletly空の結果セットであること:

SELECT DISTINCT ?person ?name ?dateofbirth ?earliestdateofbirth WHERE { 
    ?person wdt:P31 wd:Q5.   # This thing is Human 
    ?person rdfs:label ?name.  # Name for better conformation 
    ?person wdt:P569 ?dateofbirth. # Birthday may result in a blank node 
    ?dateofbirth wdt:P1319 ?earliestdateofbirth # Problem: Plausbible Birth 
} 

私はその後、私はbut this also ends with a empty result set上でやった明示的なナビゲーションのための「ショートカット」-syntaxのいくつかの種類として?person wdt:P569/wdt:P1319 ?earliestdateofbirthを使用して提案し、別の構文を見つけました。

SELECT DISTINCT ?person ?name ?dateofbirth ?earliestdateofbirth WHERE { 
    ?person wdt:P31 wd:Q5.   # Is Human 
    ?person rdfs:label ?name.  # Name for better conformation 
    ?person wdt:P569/wdt:P1319 ?earliestdateofbirth. 
} 

は、どのように私は、ウィキデータに空白ノード(私の場合は特に早い誕生日)で参照されるノードにアクセスできますか?

答えて

2

しかし、この空白ノードが他のノードを参照...

物事は若干異なります。 earliest dateプロパティは_:t550690019のプロパティではなく、ステートメントwd:Q10261 wdt:P569 _:t550690019のプロパティです。

Wikidata data modelでは、これらの注釈はqualifiersを使用して表現されています。

Wikidata data model

あなたのクエリは次のようになります。

ところで
SELECT DISTINCT ?person ?name ?dateofbirth ?earliestdateofbirth WHERE { 
    VALUES (?person) {(wd:Q10261)} 
    ?person wdt:P31 wd:Q5.   # --Is human 
    ?person rdfs:label ?name.  # --Name for better conformation 
    ?person p:P569/pq:P1319 ?earliestdateofbirth. 
    FILTER (lang(?name) = "en") 
} 

Try it!


、(生年月日がわかっているときに使用されている)時間精度はまだあります別の修飾子:

SELECT ?person ?personLabel ?value ?precisionLabel { 
    VALUES (?person) {(wd:Q859) (wd:Q9235)} 
    ?person wdt:P31 wd:Q5 ; 
      p:P569/psv:P569 [ wikibase:timeValue ?value ; 
           wikibase:timePrecision ?precisionInteger ] 
    { 
    SELECT ?precision (xsd:integer(?precisionDecimal) AS ?precisionInteger) { 
    ?precision wdt:P2803 ?precisionDecimal . 
    } 
    } 
    SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } 
} 

Try it!

+0

私は愚かな感じが、私はすぐにそれを見つけることができません:それは作業を行いますが、あなたのクエリが異なる何をするのでしょうか? 'FILTER'と' VALUES'はそれをもっと制限しているようです。 –

+0

慎重に見てください:)。私はすぐに良いリンクを探しています、数分で説明します。 –

+0

ああ、あなたは 'P569'と' P1319'に異なるプレフィックスを使用しています。私はそのための良いリンクを持っているとうれしいです! –

関連する問題