2016-09-09 40 views
0

意味データベースの中に、最初の列がオブジェクトのIDで、2番目の列が最後の変更日であるxsd:dateTimeのようなデータがあります。SPARQLの日付範囲のクエリ

?s         ?last_mod_date 
http://company.com/custom.xml#obj1, 2016-08-30T08:44:49.000-04:00 
http://company.com/custom.xml#obj2, 2016-08-30T17:24:21.000-04:00 
http://company.com/custom.xml#obj3, 2016-08-30T09:03:57.000-04:00 
http://company.com/custom.xml#obj4, 2016-07-27T03:26:44.000-04:00 
http://company.com/custom.xml#obj5, 2016-08-11T03:23:53.000-04:00 
http://company.com/custom.xml#obj6, 2016-07-19T03:05:03.000-04:00 

このリストのオブジェクトを日付順にフィルタリングしようとしています。私のクエリの入力は残念ながら分にのみ正確であるので、私はこのように、オブジェクトを見つけるために、日付範囲を使用しようとしている:

prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
prefix cust: <http://company.com/custom.xml#> 

SELECT ?s ?date WHERE 
{ 
    ?s cust:last_mod_date ?date. 
    BIND("2016-08-30T09:03:00.000-0400"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?minDate). 
    BIND("2016-08-30T09:04:00.000-0400"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?maxDate). 
    FILTER(?date > ?minDate && ?date < ?maxDate) 
} 

上記のクエリはobj3を見つける必要がありますが、その代わりに、それは何も見つかっていません。これはゴマセマンティックデータベースを使用しています。なぜこのようなアイデアですか? SPARQLクエリで

答えて

5

あなたの日付時刻は、不正な形式です:

BIND("2016-08-30T09:03:00.000-0400"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?minDate). 
    BIND("2016-08-30T09:04:00.000-0400"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?maxDate). 

BIND("2016-08-30T09:03:00.000-04:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?minDate). 
    BIND("2016-08-30T09:04:00.000-04:00"^^<http://www.w3.org/2001/XMLSchema#dateTime> as ?maxDate). 

タイムゾーンの修飾子は最初のBIND文はコロンが不足しているであるべき。