2016-04-17 12 views
0

一般的にSPARQLで数字を増やすにはどうしたらいいですか?具体的には、今日生まれた人だけを私に迎えるためのフィルターがあります: FILTER (STRLEN(STR(?born)) > 6 && (SUBSTR(STR(?born),6)=SUBSTR(STR(bif:curdate('')),6))。 このフィルタをどのように拡張すると、今後2日間に生まれた人もいますか?SPARQLで日付を増やす方法は?

(私は受け入れる/使用にプライベート機能を無視するか、修正することができる)

UPDATE

提案された解決策は、DBpediaの上で動作しなかったので、私はヴィルトゥオーゾプライベート機能とそれを実装しますが、私は持っていますUNIONを使用することから離れて、フィルタを変更する方法、または今日、明日、明後日に生まれた人々を得るために、別のエレガントなソリューションを見つける方法はありません。現在、クエリのこの部分は、次のようになります?tday1?tday2'?tdayの交換

BIND ((SUBSTR(STR(?born),6)=SUBSTR(STR(now()),6,5)) as ?tday) 
BIND ((SUBSTR(STR(?born),6)=SUBSTR(STR(bif:dateadd("day", 1, now())),6,5)) as ?tday1) 
BIND ((SUBSTR(STR(?born),6)=SUBSTR(STR(bif:dateadd("day", 2, now())),6,5)) as ?tday2) 

FILTER (STRLEN(STR(?born)) > 6) 
FILTER (?tday) . 

が正常に動作しますが、どのようにすべての3つの日付の結果では?

+0

エンドポイントでデュレーションリテラルがサポートされている場合、日付に2日間の期間を追加することができます...名人を使用していますか? –

+0

はい、Virtuoso。私は今日それを実行する場合、私は04-17、-18、-19を取得したい。しかし、29日にそれを実行すると、もちろん、04-29、04-30、および05-01が必要です。私は、他のケースでは 'op:numeric-add'を使うことを考えましたが、日付はありません。 –

+1

日付と日付の時刻はxsd:durationにすることができます。 – AndyS

答えて

0

を、私が見つかりました。私のためにうまく動作するソリューション。今日は生まれてから次の7日間です:

values ?d {0 1 2 3 4 5 6 7} 

BIND ((SUBSTR(STR(?born),6) as ?bornSTR)) 
BIND ((SUBSTR(STR(bif:dateadd("day", ?d, now())),6,5)) as ?day) 

FILTER (STRLEN(STR(?born)) > 6 && STR(?bornSTR) = STR(?day)) 
2

エンドポイントで期間計算をサポートしている場合は、期間に期間を追加できます。例えば、ここで我々はこれまでに2日間の期間を追加し、終了日が翌月にラップアラウンド正しい動作を確認できます。いくつかの試みの後

prefix xsd: <http://www.w3.org/2001/XMLSchema#> 

select ?begin ?end where { 
    values ?begin { "2005-02-28T00:00:00Z"^^xsd:dateTime } 
    values ?duration { "P2DT0H0M0.000S"^^xsd:duration } 
    bind((?begin + ?duration) as ?end) 
} 
----------------------------------------------------------------------------------- 
| begin        | end          | 
=================================================================================== 
| "2005-02-28T00:00:00Z"^^xsd:dateTime | "2005-03-02T00:00:00.000Z"^^xsd:dateTime | 
----------------------------------------------------------------------------------- 
+0

私はDBpediaを使用していますが、 'xsd:duration'では動作しません。 –

関連する問題