Запрос диапазона дат в SPARQL

У меня есть некоторые данные в семантической базе данных, которые выглядят следующим образом, где первый столбец — это идентификатор объекта, а второй столбец — дата последнего изменения, как 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

Я пытаюсь отфильтровать этот список объектов до одного элемента по дате; мой ввод запроса, к сожалению, точен только до минуты, поэтому я пытаюсь использовать диапазон дат, чтобы найти объект, например:

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)
}

Приведенный выше запрос должен найти obj3, но ничего не находит. Это с семантической базой данных Sesame. Любые идеи, почему это будет?


person Matt McMinn    schedule 09.09.2016    source источник


Ответы (1)


Ваши даты и время в запросе 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).

Должно быть

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).

Модификатор часового пояса — это первые операторы BIND, в которых отсутствует двоеточие.

person William Greenly    schedule 09.09.2016