JenaのSPARQLエンジンを使用していて、固定日以降のプロパティの値を見つける必要があるため、日付範囲でフィルター処理するクエリを作成しようとしています。
私の日付プロパティは次の形式です。
Fri May 23 10:20:13 IST 2014
これより大きい日付を持つ他のプロパティを取得するためにSPARQLクエリを作成するにはどうすればよいですか?
その形式のデータでは、日時を解析して解釈する必要があるため、カスタム 拡張関数 をARQ(上級ユーザー向け)に追加せずにデータの範囲をフィルタリングすることはできません。ストリング。
代わりに行うべきことは、すべてのSPARQL実装がサポートする必要がある標準の日時形式xsd:dateTime
にデータを変換することです。この形式の詳細については、 XMLスキーマパート2:データ型 仕様を参照してください。
特定の日付の例は次のように変換されます。
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
が指定された日付より後のすべてのレコードが検索されます