从SPARQL中的字符串值查找日期范围

时间:2017-11-19 17:58:34

标签: sparql rdf jena sparqlwrapper geosparql

我有三倍组织如下。

<nc:person1> <nc:hasDate> "201701"
<nc:person2> <nc:hasDate> "201703"
<nc:person3> <nc:hasDate> "201705"
<nc:person4> <nc:hasDate> "201706"
<nc:person5> <nc:hasDate> "201606"

此处三元组的对象部分包含字符串格式的日期信息。首先,日期的四位数表示年份,最后两位数字表示月份。例如,在“201701”中,2017年是年份,01表示1月份。

我需要编写一个SPARQL查询来查找2017年3月到2017年6月的所有日期。我的结果应如下所示。

"201703"
"201705"
"201706"

我想我需要写一个SPARQL查询,如下所示:

SELECT ?date WHERE{
 ?person nc:hasdate ?date.FILTER(?)
}

我不确定我需要写什么过滤条件。能告诉我如何解析字符串作为日期并查找日期范围吗?先感谢您。

1 个答案:

答案 0 :(得分:2)

所以我测试了它(只是为了确定)并且直接字符串比较适用于上面的例子:

SELECT ?date
WHERE {
  ?person nc:hasDate ?date .
  FILTER( (?date > "201702") && (?date < "201707") )
}

请注意,这仅适用于符合ISO标准的日期字符串。其他格式可能会失败。