查询SPARQL中的日期范围

Mat*_*inn 0 semantic-web sparql

我在语义数据库中有一些数据如下所示,其中第一列是对象的ID,第二列是最后修改日期,如xsd:dateTime.

?s                                  ?last_mod_date
http://company.com/custom.xml#obj1, 2016-08-30T08:44:49.000-04:00
http://company.com/custom.xml#obj2, 2016-08-30T17:24:21.000-04:00
http://company.com/custom.xml#obj3, 2016-08-30T09:03:57.000-04:00
http://company.com/custom.xml#obj4, 2016-07-27T03:26:44.000-04:00
http://company.com/custom.xml#obj5, 2016-08-11T03:23:53.000-04:00
http://company.com/custom.xml#obj6, 2016-07-19T03:05:03.000-04:00
Run Code Online (Sandbox Code Playgroud)

我正在尝试按日期将此对象列表过滤到一个项目; 遗憾的是,我的查询输入只是精确到分钟,因此我尝试使用日期范围来查找对象,如下所示:

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
prefix cust: <http://company.com/custom.xml#>

SELECT ?s ?date WHERE
{
  ?s cust:last_mod_date ?date.
  BIND("2016-08-30T09:03:00.000-0400"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?minDate).
  BIND("2016-08-30T09:04:00.000-0400"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?maxDate).
  FILTER(?date > ?minDate && ?date < ?maxDate)
}
Run Code Online (Sandbox Code Playgroud)

上面的查询应该找到obj3,但它找不到任何东西.这是一个芝麻语义数据库.任何想法为什么会这样?

Wil*_*nly 5

您在SPARQL查询中的日期时间格式不正确:

 BIND("2016-08-30T09:03:00.000-0400"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?minDate).
  BIND("2016-08-30T09:04:00.000-0400"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?maxDate).
Run Code Online (Sandbox Code Playgroud)

应该

BIND("2016-08-30T09:03:00.000-04:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?minDate).
  BIND("2016-08-30T09:04:00.000-04:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?maxDate).
Run Code Online (Sandbox Code Playgroud)

时区修饰符是第一个BIND语句缺少冒号.