2014-06-05 11 views
6

Korzystam z silnika SPARQL Jeny i próbuję napisać zapytanie do filtrowania w zakresie dat, ponieważ potrzebuję znaleźć wartość nieruchomości po ustalonej dacie.Filtruj według zakresu dat w SPARQL

Moja data nieruchomość znajduje się w następującym formacie:

Fri May 23 10:20:13 IST 2014 

Jak mogę napisać zapytanie sparql aby uzyskać inne właściwości z datami większe niż to?

Odpowiedz

13

Za pomocą danych w tym formacie nie można filtrować w zakresie tego zakresu bez dodawania niestandardowego extension function do ARQ (przeznaczonego dla użytkowników zaawansowanych), ponieważ trzeba przeanalizować i zinterpretować ciąg daty.

Zamiast tego należy przetłumaczyć dane na format daty standardowej xsd:dateTime, aby wszystkie implementacje SPARQL były wymagane do obsługi. Szczegółowe informacje na temat tego formatu można znaleźć w specyfikacji XML Schema Part 2: Datatypes.

Twój konkretna data Przykładem może tłumaczyć następująco:

2014-05-23T10:20:13+05:30 

I należy upewnić się, że można zadeklarować, że jest to wpisane dosłowna typu xsd:dateTime kiedy go używać w danych i zapytań. Dla przykładu, w czytelnej Turtle RDF składnię:

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

:subject :date "2014-05-23T10:20:13+05:30"^^xsd:dateTime . 

Następnie można napisać zapytanie sparql że filtruje przez zakres dat tak:

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) 
} 

Znajduje wszystkie rekordy gdzie ?date jest po danym terminie

+0

i przypuśćmy, że chcę po prostu zastosować zakres w filtrze z właściwością typu ciąg, przypuśćmy, że wiek zapisany jest jako ciąg znaków. następnie? – cooljohny

+1

Komentarze dotyczą wyjaśnień dotyczących konkretnego pytania, jeśli masz osobne pytanie, powinieneś je zadać jako takie. Przeczytaj także [Wyrażenia i wartości testowe] (http://www.w3.org/TR/sparql11-query/#expressions) w specyfikacji SPARQL, jeśli jeszcze nie masz – RobV

+0

Kiedy piszę powyższe zapytanie, pojawia się błąd: Nierozwiązany prefiksowana nazwa: xsd: dateTime i kiedy nie określiłem jej ponownie, pojawia się błąd: wyjątek formatu danych: "2014-06-08T14: 26: 39 + 0530" ^^ xsd: dateTime. Co powinienem zrobić? – cooljohny

Powiązane problemy