Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime 在SPARQL中按日期范围筛选_Datetime_Rdf_Sparql_Jena - Fatal编程技术网

Datetime 在SPARQL中按日期范围筛选

Datetime 在SPARQL中按日期范围筛选,datetime,rdf,sparql,jena,Datetime,Rdf,Sparql,Jena,我正在使用Jena的SPARQL引擎,并试图编写一个查询来筛选日期范围,因为我需要在固定日期后查找属性的值 “我的日期”属性的格式如下: Fri May 23 10:20:13 IST 2014 如何编写SPARQL查询以获取日期大于此值的其他属性?如果数据采用该格式,则如果不向ARQ(适用于高级用户)添加自定义,则无法对其范围进行筛选,因为您需要解析和解释日期时间字符串 您应该做的是将数据转换为所有SPARQL实现都需要支持的标准日期时间格式xsd:dateTime。有关此格式的详细信息

我正在使用Jena的SPARQL引擎,并试图编写一个查询来筛选日期范围,因为我需要在固定日期后查找属性的值

“我的日期”属性的格式如下:

 Fri May 23 10:20:13 IST 2014 

如何编写SPARQL查询以获取日期大于此值的其他属性?

如果数据采用该格式,则如果不向ARQ(适用于高级用户)添加自定义,则无法对其范围进行筛选,因为您需要解析和解释日期时间字符串

您应该做的是将数据转换为所有SPARQL实现都需要支持的标准日期时间格式
xsd:dateTime
。有关此格式的详细信息,请参见规范

您的具体示例日期翻译如下:

2014-05-23T10:20:13+05:30
在数据和查询中使用它时,必须确保将其声明为类型为
xsd:dateTime
的类型化文本。例如,在可读RDF语法中:

@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix : <http://example.org> .

:subject :date "2014-05-23T10:20:13+05:30"^^xsd:dateTime .
@前缀xsd:。
@前缀:。
:主题:日期“2014-05-23T10:20:13+05:30”^^xsd:dateTime。
然后,您可以编写SPARQL查询,按日期范围进行筛选,如下所示:

PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX : <http://example.org>

SELECT *
WHERE
{
  ?s :date ?date .
  FILTER (?date > "2014-05-23T10:20:13+05:30"^^xsd:dateTime)
}
前缀xsd:
前缀:
挑选*
哪里
{
s:日期?日期。
过滤器(?日期>“2014-05-23T10:20:13+05:30”^^xsd:dateTime)
}

这将查找
?date
在给定日期之后的所有记录,假设我只想在过滤器中应用范围,属性类型为string,假设存储为string。那么?评论是为了澄清具体问题,如果你有单独的问题,那么你应该这样问。如果您还没有准备好,请阅读SPARQL规范。当我编写上述查询时,它会给出错误:未解析的前缀名称:xsd:dateTime,当我不再指定它时,它会给出错误:Datatype格式异常:“2014-06-08T14:26:39+0530”^^xsd:dateTime。我应该怎么做?首先显示确切的查询字符串,试图通过猜测进行调试通常是无用的。然而,我的猜测是您没有在查询中包含
前缀
声明。我有include PREFIX,但仍然会出现此警告,并且输出仍然为空。警告:WARN[main](Log.java:78)-数据类型格式异常:“2014-06-11T12:44:22+0530”^^xsd:dateTime