Запрос на возраст в sparql - PullRequest
       38

Запрос на возраст в sparql

0 голосов
/ 25 октября 2018

Я пишу запрос, который подсчитывает возраст кого-то, кто знает его дату рождения и дату смерти.Я хочу попросить определенного художника (в данном случае Майкла Джексона).Проблема в том, что я не могу повторно использовать дату рождения и дату смерти в следующем запросе:

select ?artist ?age  
where { 
  dbr:Michael_Jackson dbo:birthDate ?birthdate .

  dbr:Michael_Jackson dbo:deathDate ?deathdate . 

  bind( year(?deathdate) - year(?birthdate) - if(month(?deathdate)<month(?birthdate) || (month(?deathdate)=month(?birthdate) && day(?deathdate<day(?birthdate)),1,0) as ?age)
}

Кто-нибудь знает, как решить эту проблему?

1 Ответ

0 голосов
/ 25 октября 2018

Я немного отредактировал запрос, чтобы получить значения, по которым вы рассчитываете -

birthdate                                              deathdate
"1958-8-29"^^<http://www.w3.org/2001/XMLSchema#date>   "2009-6-25"^^<http://www.w3.org/2001/XMLSchema#date>

Ошибка, которую вы нажимаете, заключается в том, что они недействительны xsd:dateлитералы - для которых требуется 2 цифры в месяце.

Эта проблема с данными была исправлена ​​в Википедии и т. д. в DBpedia-Live, и ваш запрос работает там, как , который вы видите .Существуют и другие проблемы с данными DBpedia-Live (например, отображение нескольких версий аннотации, когда вы действительно хотите видеть только последние версии), но, возможно, это решает вашу насущную потребность.

...