查询sparql中的年龄

时间:2018-10-25 12:12:58

标签: sparql owl ontology dbpedia

我正在写一个查询,该查询计算知道某人的生日和死亡日期的年龄。我想请一位特定的艺术家(在本例中为迈克尔·杰克逊)。问题是我无法在以下查询中重用生日和死亡日期:

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 :(得分:0)

我稍微修改了查询以获取the values you're calculating against-

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位数字。

此数据问题已在Wikipedia和DBpedia-Live等上得到修复,您的查询在此工作,如you can see。 DBpedia-Live数据还有其他问题(例如,当您只想查看最新的摘要时,将显示多个版本的摘要),但这也许可以解决您的迫切需求。