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

从SPARQL中的字符串值查找日期范围,sparql,rdf,jena,sparqlwrapper,geosparql,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" 我想我需

我有三个这样的组织

<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"
我想我需要编写一个SPARQL查询,如下所示:

SELECT ?date WHERE{
 ?person nc:hasdate ?date.FILTER(?)
}
我不确定我需要写什么过滤条件。您能告诉我如何将字符串解析为日期并查找日期范围吗?先谢谢你

所以我对它进行了测试(只是为了确定),上面的例子中使用了直接字符串比较:

SELECT ?date
WHERE {
  ?person nc:hasDate ?date .
  FILTER( (?date > "201702") && (?date < "201707") )
}
SELECT?日期
在哪里{
?人员编号:hasDate?日期。
过滤器((?日期>“201702”)和(?日期<“201707”))
}
请注意,这仅适用于符合ISO标准的日期字符串。其他格式可能会失败。

因此我对其进行了测试(只是为了确定),并对上面的示例进行了直接字符串比较:

SELECT ?date
WHERE {
  ?person nc:hasDate ?date .
  FILTER( (?date > "201702") && (?date < "201707") )
}
SELECT?日期
在哪里{
?人员编号:hasDate?日期。
过滤器((?日期>“201702”)和(?日期<“201707”))
}

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

我认为您不需要解析它。对于ISO格式的日期字符串,直接比较就足够了。谢谢您的回复。您能告诉我如何编写筛选条件吗?我不知道您为什么不使用正确的日期文字,但字典比较可能适用于您类型的日期字符串:
filter(?date>=“201703”&&?date我认为您不需要解析它。对于ISO格式的日期字符串,直接比较就足够了。谢谢您的回复。您能告诉我如何编写筛选条件吗?我不知道您为什么不使用正确的日期文字,但字典式比较可能适用于您类型的日期字符串:
筛选(?date>=“201703”&&?日期