我有一个简单的查询结果,但是当我尝试在日期上应用过滤器时,我没有得到任何结果。
初始查询和结果:
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é。
我错过了什么吗? 感谢
答案 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)
§ 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")