2014-06-28 131 views
1

有沒有一種方法可以將SPARQL中的當前時間作爲持續時間(以秒或毫秒爲單位)?該標準包括now(),它返回一個xsd:dateTime,以及用於提取xsd:dateTimes部分的各種函數,但沒有將整個dateTime轉換爲秒的功能。我錯過了什麼嗎?使用SPARQL獲取當前時間(以秒/毫秒爲單位)?

+0

你想象什麼樣的轉換爲秒/毫秒?日期是特定的時間點。 n秒是兩個時間點之間的持續時間。將日期轉換爲持續時間沒有意義。在某些情況下,通常將時間測量爲來自某個着名「時代」的秒數。例如,在Common Lisp中,自1900年以來,[通用時間](秒)(http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_u.htm#universal_time)是以秒計算的。在Unix系統中,[time(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

嗯,這是一個解決方法;實現不需要像這樣支持日期運算,所以它不是可移植的。在不支持它的實現中,你只會得到一個錯誤值。 –

相關問題