SPARQL 中的 year() 函数

year() function in SPARQL

我想在 SPARQL 中查询 returns 2007 年的项目。 我试过了:

    String requete7String = 
            "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> "
          + "PREFIX dc: <http://purl.org/dc/elements/1.1/> "
          + "PREFIX rss: <http://purl.org/rss/1.0/> "
          + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> "
          + "SELECT ?item "
          + "FROM <http://www.w3.org/2001/sw/SW-FAQ-feed.rdf> "
          + "WHERE { "
          + "  ?item rdf:type rss:item . "
          + "  ?item dc:date ?dateString ."
          + "  bind(strdt(?dateString, xsd:dateTime) as ?date) "
          + "  FILTER (year(?date) = 2007) "
          + "}";

但它returns没什么。 FILTER (year(?date) = 2007) 行不起作用。但是,我在 SPARQL 文档中看到函数 year() 接受日期时间和 returns 整数,所以你能告诉我为什么它可能不起作用吗?

2007-04-12T00:00+00:00"^^xsd:dateTime不合法xsd:dateTime(时间部分应该是00:00:00 , 不是 00:00。因此它不是合法值,年份(非法)是错误的,过滤器是错误的。