RDF 的 SPARQL 日期过滤器查询

SPARQL date filter query for RDF

我正在使用 SPARQL 进行查询,它工作正常。但是,当我添加数据过滤器时,它不会引发错误,但也不会执行过滤器。最后一部分是我应该能够在两个日期之间查询:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX hotel: <http://users.jyu.fi/~mimomuki/everything/hotel#>

SELECT *
    WHERE { ?room  hotel:hasCity ?sender; hotel:hasFirstDay ?Firstday
        FILTER ( ?Firstday >= "2016-09-01"^^xsd:date )      
        }

SPARQL FILTER 用作正过滤器。如果表达式对于任何匹配项都为真,则该匹配项成立。否则匹配将被丢弃并且 ?room ?sender?Firstday 不会有任何绑定。不会抛出任何错误,因为查询正确 returns 没有匹配项。

如果要比较日期,可能需要确保筛选表达式中操作数的数据类型正确。您可以通过将两个值都转换为 xsd:dateTime

来实现
FILTER ( xsd:dateTime(?Firstday) >= xsd:dateTime("2016-09-01") )

这个过滤器对我有用:

FILTER (?FirstDay>= "2016-09-01T00:00:00Z"^^xsd:dateTime)