ProtégéDate过滤器不起作用

时间:2014-11-05 12:44:42

标签: sparql

我有一个简单的查询结果,但是当我尝试在日期上应用过滤器时,我没有得到任何结果。

初始查询和结果:

SELECT DISTINCT ?projet ?date
   WHERE { teluq:Gilbert_Paquette foaf:pastProject ?projet.
   ?gilbert foaf:familyName ?paquette.
   ?projet db:projectEndDate ?date.
}

结果的格式为:“2012-06-30”^^< http://www.w3.org/2001/XMLSchema#date>

但是当我添加我的过滤器时,我什么都没得到。

SELECT DISTINCT ?projet ?date
    WHERE { teluq:Gilbert_Paquette foaf:pastProject ?projet.
    ?gilbert foaf:familyName ?paquette.
    ?projet db:projectEndDate ?date.
    FILTER (?date < "2014-11-04"^^xsd:date)
}

我在导入的海龟文件上使用Protégé。

我错过了什么吗? 感谢

2 个答案:

答案 0 :(得分:2)

这有效:

PREFIX teluq: <http://exemple.teluq.ca/ressources/> 
PREFIX db: <http://dbpedia.org/ontology/> 
PREFIX foaf: <http://xmlns.com/foaf/0.1/> 

SELECT DISTINCT ?collab ?projet ?date
WHERE { teluq:Gilbert_Paquette foaf:pastProject ?projet.
?gilbert foaf:familyName ?paquette.
?projet db:projectEndDate ?date.
?collab foaf:pastProject ?projet.
FILTER (?date < "2014-11-08"^^xsd:date)
}
ORDER BY ?projet

但感谢您的帮助

答案 1 :(得分:1)

SPARQL 1.1标准的

§ 17.3 Operator Mapping指定了&lt;运营商是 为SPARQL(模运算符扩展)定义,虽然它定义了xsd:dateTimes的行为,但它没有指定任何关于xsd:dates的内容,因此很可能过滤表达式只返回false。但是,xsd:date应该使用它们的词法形式进行比较,所以你应该能够做到

#-- when ?date is an xsd:date, compare its lexical form with "2014-11-04".
filter (datatype(?date) = xsd:date && str(?date) < "2014-11-04")