【问题标题】:Query for age in sparql在 sparql 中查询年龄
【发布时间】: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)&lt;month(?birthdate) || (month(?deathdate) &lt; month(?birthdate) &amp;&amp; day(?deathdate)&lt; day(?birthdate)),1,0) as ?age) }

标签: sparql owl ontology dbpedia


【解决方案1】:

我稍微编辑了查询以获得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 数据还有其他问题(例如显示多个版本的摘要,而您真的只想看到最新的),但这也许可以解决您的迫切需求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 2022-01-19
    • 2011-02-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多