【问题标题】:Protégé Date filter not workingProtégé 日期过滤器不起作用
【发布时间】:2015-01-01 15:56:25
【问题描述】:

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

初始查询和结果:

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é。

我错过了什么吗? 谢谢

【问题讨论】:

  • 如果您能提供样本数据以便我们可以尝试重现数据,这将有所帮助。查询是否使用 Protege 之外的 SPARQL 引擎工作?
  • 我认为&lt; SPARQL 运算符是为xsd:dateTimes 定义的,但不是为xsd:dates 定义的。

标签: sparql


【解决方案1】:

这行得通:

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

谢谢你的帮助

【讨论】:

    【解决方案2】:
    SPARQL 1.1 标准的

    § 17.3 Operator Mapping 指定了

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

    【讨论】:

    • @MusicAndCode 您可能应该将您的工作查询作为答案发布并将其标记为已接受。
    • 这实际上是一个非常有效的答案。根据我的经验,在 SPARQL 中,xsd:dates 在过滤时通常会出现不可预知的行为。
    猜你喜欢
    • 1970-01-01
    • 2013-11-08
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多