Вау, спасибо за тщательное обновление вашего ответа, это действительно помогает!

аюсь получить данные о продолжительности жизни определенных людей. Это проблематично в случае людей, которые жили некоторое время назад. Набор данных, например, дляПифагор кажется, есть так называемый «пустой узел» дляdate of birth (P569), Но этот пустой узел ссылается на другой узелearliest date (P1319) у которого есть данные, с которыми я мог бы работать очень хорошо.

Но по какой-то причине я не могу получить этот узел.Моя первая попытка выглядела так, но как-то это приводит к совершенно пустому набору результатов:

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
}

Затем я нашел другой синтаксис, который предложил использовать?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. 
}

Итак, как мне получить доступ к узлу, на который ссылается пустой узел (в моем случае именно к самой ранней дате рождения) в Викиданных?

Ответы на вопрос(1)

Решение Вопроса

Вещи немного разные.earliest date собственность не является собственностью_:t550690019, а скорее является собственностьюзаявление wd:Q10261 wdt:P569 _:t550690019.

В Викиданныхмодель данныхэти аннотации выражаются с помощьюклассификаторы.

Ваш запрос должен быть:

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")
}

Попробуй!

Кстати,точность времени (который используется, когда дата рождения известна) является еще одним определителем:

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" }
}

Попробуй!

 Marcus Riemer13 сент. 2017 г., 14:09
Я чувствую себя глупо, но не могу сразу заметить: это работает, но чем отличается ваш запрос?FILTER а такжеVALUES кажется, только ограничить это больше.
 Marcus Riemer13 сент. 2017 г., 14:13
Ах, вы используете разные префиксы дляP569 а такжеP1319Я был бы рад иметь хорошие ссылки для этого!
 Stanislav Kralin13 сент. 2017 г., 14:12
Смотри внимательно :). Я объясню через несколько минут, сейчас я ищу хорошие ссылки.
 Marcus Riemer14 сент. 2017 г., 07:34
Вау, спасибо за тщательное обновление вашего ответа, это действительно помогает!

Ваш ответ на вопрос