【发布时间】:2018-10-25 12:12:58
【问题描述】:
我正在编写一个查询来计算知道某人的出生日期和死亡日期的年龄。我想询问某个艺术家(在这种情况下是迈克尔杰克逊)。问题是我不能在以下查询中重用生日和死亡日期:
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)
}
有人知道如何解决这个问题吗?
【问题讨论】:
-
错误是
Virtuoso 22003 Error SR586: Incomplete RDF box as argument 0 for year().- 我猜这是因为日期文字的词法形式错误 -
您说您“不能重复使用生日和死亡日期。”为什么不?请发布您收到的任何错误消息,因为我看到的内容与 @AKSW 不同。
-
@TallTed 由于某些语法错误,问题中的查询失败,但由于我在上面的评论中显示的错误,正确的查询失败:
select ?artist ?age where { values ?artist {dbr:Michael_Jackson} ?artist dbo:birthDate ?birthdate . ?artist 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) }
标签: sparql owl ontology dbpedia