6
我正在使用Jena的SPARQL引擎並試圖編寫查詢以過濾日期範圍,因爲我需要在固定日期後查找屬性的值。在SPARQL中按日期範圍過濾
我的日期屬性是按以下格式:
Fri May 23 10:20:13 IST 2014
我怎樣寫一個SPARQL查詢來獲取比這更高的其他屬性的日期?
我正在使用Jena的SPARQL引擎並試圖編寫查詢以過濾日期範圍,因爲我需要在固定日期後查找屬性的值。在SPARQL中按日期範圍過濾
我的日期屬性是按以下格式:
Fri May 23 10:20:13 IST 2014
我怎樣寫一個SPARQL查詢來獲取比這更高的其他屬性的日期?
由於您需要解析和解釋日期時間字符串,所以使用該格式的數據無法在ARQ的某個範圍上過濾,因爲ARQ(專供高級用戶使用)不會自定義extension function。
您應該做的是將您的數據轉換爲所有SPARQL實施都需要支持的標準日期時間格式xsd:dateTime
。有關此格式的詳細信息,請參閱XML Schema Part 2: Datatypes規範。
你的具體例子日期將翻譯如下:
2014-05-23T10:20:13+05:30
而且你必須確保你聲明它是一個類型文字xsd:dateTime
型的,當你在數據和查詢使用。例如,在可讀Turtle RDF語法:
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix : <http://example.org> .
:subject :date "2014-05-23T10:20:13+05:30"^^xsd:dateTime .
然後,您可以編寫一個SPARQL查詢的日期範圍過濾器,像這樣:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX : <http://example.org>
SELECT *
WHERE
{
?s :date ?date .
FILTER (?date > "2014-05-23T10:20:13+05:30"^^xsd:dateTime)
}
此查找所有記錄,其中?date
是給定的日期之後
並假設我只想將範圍應用於字符串類型爲string的屬性的過濾器中。然後? – cooljohny
評論是澄清具體問題,如果你有一個單獨的問題,那麼你應該這樣問。如果還沒有,請閱讀SPARQL規範中的[Expressions and Testing Values](http://www.w3.org/TR/sparql11-query/#expressions) – RobV
當我編寫上述查詢時,它會給出錯誤:Unresolved前綴名稱:xsd:dateTime,當我不指定它再給出錯誤:數據類型格式異常:「2014-06-08T14:26:39 + 0530」^^ xsd:dateTime。我該怎麼辦? – cooljohny