从 SPARQL 中的字符串值查找日期范围
Finding Date Range from String Values in SPARQL
我有如下组织的三元组。
<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 表示一月份。
我需要编写一个 SPARQL 查询来查找 2017 年 3 月到 2017 年 6 月范围内的所有日期。我的结果应该如下所示。
"201703"
"201705"
"201706"
我想我需要像下面这样编写一个 SPARQL 查询:
SELECT ?date WHERE{
?person nc:hasdate ?date.FILTER(?)
}
我不确定我需要写什么过滤条件。你能告诉我如何将字符串解析为日期并找到日期范围吗?先感谢您。
所以我测试了它(只是为了确定)并且直接字符串比较适用于上面的例子:
SELECT ?date
WHERE {
?person nc:hasDate ?date .
FILTER( (?date > "201702") && (?date < "201707") )
}
请注意,这仅适用于符合 ISO 标准的日期字符串。其他格式可能会失败。
我有如下组织的三元组。
<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 表示一月份。
我需要编写一个 SPARQL 查询来查找 2017 年 3 月到 2017 年 6 月范围内的所有日期。我的结果应该如下所示。
"201703"
"201705"
"201706"
我想我需要像下面这样编写一个 SPARQL 查询:
SELECT ?date WHERE{
?person nc:hasdate ?date.FILTER(?)
}
我不确定我需要写什么过滤条件。你能告诉我如何将字符串解析为日期并找到日期范围吗?先感谢您。
所以我测试了它(只是为了确定)并且直接字符串比较适用于上面的例子:
SELECT ?date
WHERE {
?person nc:hasDate ?date .
FILTER( (?date > "201702") && (?date < "201707") )
}
请注意,这仅适用于符合 ISO 标准的日期字符串。其他格式可能会失败。