Datetime 在SPARQL中按日期范围筛选
我正在使用Jena的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。有关此格式的详细信息
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