2016-09-09 3 views
0

시맨틱 데이터베이스에 다음과 같은 데이터가 있습니다. 첫 번째 열은 객체의 ID이고 두 번째 열은 마지막으로 수정 된 날짜입니다 (xsd : dateTime 's).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 문에 콜론이 누락입니다이어야한다.

관련 문제