Wie kann ich Zahlen im Allgemeinen und Datumsangaben insbesondere in SPARQL erhöhen? Konkret habe ich einen Filter, um mir nur heute geborene Menschen zu bringen: FILTER (STRLEN(STR(?born)) > 6 && (SUBSTR(STR(?born),6)=SUBSTR(STR(bif:curdate('')),6))
. Wie kann ich diesen Filter erweitern, damit ich auch in den nächsten zwei Tagen Menschen geboren bekomme?Wie kann man Daten in SPARQL inkrementieren?
(kann ich akzeptieren/ignorieren oder die Verwendung der privaten Funktion korrigieren)
UPDATE
Da die vorgeschlagene Lösung nicht auf DBpedia funktionierte, ich habe es mit Virtuoso private Funktion implementiert, aber ich habe keine Ahnung, außer der Verwendung von UNION
, wie man den Filter auswechselt oder eine andere elegante Lösung findet, damit ich heute, morgen und übermorgen Menschen geboren bekomme. Derzeit ist dieser Teil der Abfrage sieht wie folgt aus:
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) .
Ersetzen ?tday
mit ?tday1
und ?tday2'
funktioniert gut, aber wie alle drei Tage, im Ergebnis?
Wenn Ihr Endpunkt Dauer Literale unterstützt, können Sie nur in der Lage sein, eine zweitägige Dauer auf das Datum hinzufügen ... verwenden Sie Virtuose? –
Ja, Virtuose. Wenn ich heute laufe, möchte ich 04-17, -18, -19 bekommen. Aber dann, wenn ich es am 29. fahre, möchte ich natürlich 04-29, 04-30 und 05-01. Ich dachte, in anderen Fällen 'op: numeric-add' zu verwenden, aber mit Daten ... keine Ahnung. –
Datum und DatumTimes können xsd: duration sein. – AndyS