2014-06-28 5 views
1

Есть ли способ получить текущее время в SPARQL как длительность в секундах или миллисекундах с некоторой эпохи? Стандарт включает в себя now(), который возвращает xsd: dateTime и множество функций для извлечения частей xsd: dateTimes, но ничего не преобразует весь период времени в секундах. Я что-то упускаю?Получение текущего времени в секундах/миллисекундах с помощью SPARQL?

+0

Какое преобразование в секунды/миллисекунды вы представляете? Дата - это конкретный момент времени. n секунд - это продолжительность между двумя точками времени. Не имеет смысла преобразовывать дату в продолжительность. В некоторых контекстах обычно измеряется время как количество секунд от известной «эпохи». Например, в Common Lisp [19] в течение нескольких секунд измеряется [универсальное время] (http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_u.htm#universal_time). В системах Unix [время (2) ] (http://linux.die.net/man/2/time) возвращает секунды с 1970-01-01 00:00:00 +0000 (UTC). –

+0

@JoshuaTaylor Отвечено Обновлено. Это то, что я имел в виду, извините, не упомянув об этом. –

+0

Итак, вы просто хотите вычислить * продолжительность * между двумя точками времени? Все в порядке, если вы сами укажете? Например, если вы укажете эпоху, так как нет общепринятого? –

ответ

2

К сожалению, SPARQL 1.1 не требуется для поддержки арифметики дат, хотя возможны некоторые реализации. Например, в конечной точке DBpedia, вы можете выполнить запрос так:

select (NOW() - ?epoch as ?time) where { 
    values ?epoch { "1970-01-01T00:00:00"^^xsd:dateTime } 
} 

SPARQL results

Более подробную информацию о том, что SPARQL 1.1 не требуется, чтобы поддержать это, наряду с некоторыми более портативными обходными (например, извлечение компонентов даты и выполнения арифметических действий с теми), можно найти в ответах на некоторые вопросы, связанные:

+0

Большое спасибо за ответ, славное обходное решение. –

+1

Ну, это обходной путь; реализации не требуется для поддержки арифметики даты, как это, поэтому она не переносима. В реализациях, которые его не поддерживают, вы получите только значение ошибки. –

Смежные вопросы