SPARQL筛选器xsd:Date失败

SPARQL筛选器xsd:Date失败,sparql,ontology,Sparql,Ontology,我有以下SPARQL查询 PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> SELECT DISTINCT ?d WHERE { GRAPH <https:/my/triples>{ ?s <http://my/ontology/v1.0#hasTimestamp> ?d . FILTER(?d > "1945-01-01"^^xsd:date) } }

我有以下SPARQL查询

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

SELECT DISTINCT ?d
WHERE { GRAPH <https:/my/triples>{
        ?s <http://my/ontology/v1.0#hasTimestamp> ?d . 
        FILTER(?d > "1945-01-01"^^xsd:date)
        }
}

有什么问题吗?

我尝试了评论中的所有建议,但无法使其正常工作

我偶然发现了一篇2011年的帖子(!!),它部分地给了我解决方案。 这篇文章是这样写的,它指出下面的解决方案(又名“严格化”日期)只适用于平等

FILTER(str(?d) >= "2018") .
并将其转换为xsd:dateTime进行比较


在我的例子中,第一个解决方案用于比较(包括相等),而cast失败得很惨。

我尝试了评论中的所有建议,但无法使其正常工作

我偶然发现了一篇2011年的帖子(!!),它部分地给了我解决方案。 这篇文章是这样写的,它指出下面的解决方案(又名“严格化”日期)只适用于平等

FILTER(str(?d) >= "2018") .
并将其转换为xsd:dateTime进行比较


在我的例子中,第一个解决方案用于比较(包括相等),而强制转换失败得很惨。

在这里看不到
xsd:date
。尝试在查询中将
?d
强制转换为
xsd:dateTime
,并与
“1945-01-01T00:00:00”进行比较^^xsd:dateTime
。你的三重表是什么?@StanislavKralin三重表是议会。我试着用这样的方式设置dateTime:FILTER(xsd:dateTime(?.d)>“1945-01-16T00:00:00Z”^^xsd:dateTime)但是在2.7.13中,您的查询对我来说仍然很好。确实,与其他SPARQL引擎进行比较对我来说也很好,即使使用不同的类型:
select*where{VALUES(?d?dt){(“2019-11-28”^^xsd:date“1945-01-01T00:00:00”^^xsd:dateTime)}FILTER(?d>“1945-01-01”^^xsd:date}
在没有过滤器的结果中,它显示:
“数据类型”:“xsd:date”
——在JSON语法中,数据类型是一个完整的URI“”,表明数据包含一个URI
(不是前缀名)。在这里看不到
xsd:date
。请尝试在查询中将
?d
转换为
xsd:dateTime
,并与
1945-01-01T00:00:00进行比较“^^xsd:dateTime
。你的三重唱是什么?@StanislavKralin三重唱是议会。我试图用这样的方式来播放dateTime:FILTER(xsd:dateTime(?d)>'1945-01-16T00:00:00Z'^^xsd:dateTime)但是在2.7.13中,您的查询对我来说仍然很好。确实,与其他SPARQL引擎进行比较对我来说也很好,即使使用不同的类型:
select*where{VALUES(?d?dt){(“2019-11-28”^^xsd:date“1945-01-01T00:00:00”^^xsd:dateTime)}FILTER(?d>“1945-01-01”^^xsd:date}
在没有过滤器的结果中,它显示:
“数据类型”:“xsd:date”
——在JSON语法中,数据类型是一个完整的URI“”,表示数据包含一个URI
(不是前缀名)。