sparql как фильтровать по диапазону дат

У меня есть следующие фильтры, которые отфильтровывают мои данные по элементу за последнюю неделю.

#just consider the likes in the last one week.
  filter (?ratingDate >= "2017-03-01T00:00:00"^^xsd:dateTime )

как вы видите, я установил дату и время последней недели в моей руке (жестко запрограммировано), есть ли способ установить эту дату автоматически?

Я ищу что-то вроде сейчас-7day


person Ania David    schedule 09.03.2016    source источник
comment
Существует функция now(): w3.org/TR/sparql11-query/# сейчас   -  person CaptSolo    schedule 09.03.2016
comment
@CaptSolo спасибо, это определенно полезно, я также хотел бы спросить, есть ли такая функция в owl, а не только в sparql?   -  person Ania David    schedule 09.03.2016
comment
@CaptSolo хорошо, но, пожалуйста, как я могу сказать сейчас - 7 дней?   -  person Ania David    schedule 09.03.2016
comment
OWL — это язык для моделирования данных, в котором нет концепции функций.   -  person UninformedUser    schedule 09.03.2016
comment
@AKSW, что я знаю, и я хотел сказать, но я забыл, я имел в виду, что если есть способ поставить ограничение, используя сейчас или год текущей даты, похоже, что его нет, и это хорошо, я просто хочу знать, как сделать это в sparql, now() это (я думаю) хорошо, но как я могу его использовать, пожалуйста, скажите now()-7days или если есть какой-либо другой способ проверить, находится ли дата предоставления в пределах диапазона максимум 7 дней сегодня   -  person Ania David    schedule 09.03.2016
comment
@Ania некоторые конечные точки sparql могут поддерживать арифметические функции для дат. Я не помню, является ли это обязательным в спецификации, но я думаю, что jena это поддерживает. Но это все еще на уровне sparql. Как сказал капсоло, в сове нет функций, это не тот язык   -  person Joshua Taylor    schedule 10.03.2016
comment
Сравнение xsd:dateTime требуется спецификацией SPARQL, хотя нет других типов, связанных с датой или временем, и нет полной арифметики. . Чтобы сделать now()-7 дней, требуется xsd:durations. Apache Jena 3 имеет довольно полный набор типов данных xsd и операций F&O для атомарных значений (без последовательностей XML), включая дату и время — продолжительность. то есть now()-"P7D"^^xsd:duration.   -  person AndyS    schedule 10.03.2016
comment
@JoshuaTaylor, не могли бы вы взглянуть на это, когда у вас будет свободное время, пожалуйста? stackoverflow.com/questions/35914679/   -  person Ania David    schedule 10.03.2016


Ответы (1)


(обобщая комментарии)

сейчас – 7 дней требуется ряд условий:

В SPARQL есть функция на текущий момент времени: now()

"7 дней" – это xsd:duration, "P7D"^^xsd:duration.

«-» — это арифметика, включающая xsd:dateTime и xsd:duration — операция op:subtract-yearMonthDuration-from-dateTime (из «Функций и операторов XPath и XQuery») — а также перегрузка операции «-» для отправки этой функции.

Вам необходимо проверить с помощью механизма SPARQL, который вы используете, поддерживаются ли расширение xsd:dateTime и арифметика xsd:duration.

После того, как вы вычислите xsd:dateTime для "сейчас - 7 дней", сравнение ">=" части стандартного SPARQL:

FILTER ( ?ratingDate >= (now()-"P7D"^^xsd:duration) )
person AndyS    schedule 10.03.2016