在SPARQL中按月分组数据?

gin*_*tas 5 rdf date sparql

是否可以使用SPARQL从日期中提取月份元素并按其分组结果.我正在使用W3时间本体来定义格式的日期"2009-12-31"^^xsd:date.

所以如果"2009-12-31"^^xsd:date我想提取12.

这甚至是可能的吗?如果是这样,怎么办呢?

Ste*_*ris 6

在SPARQL 1.1中有一个month()函数(http://www.w3.org/TR/sparql11-query/#func-month),它从ISO日期中提取月份.

您可以使用GROUP BY关键字按月分组,如下所示:

SELECT ?mon SUM(?val)
WHERE {
  ?x :date ?date ;
     :value ?val .
}
GROUP BY (month(?date) AS ?mon)
Run Code Online (Sandbox Code Playgroud)

唯一的小问题是SPARQL系统不需要处理xsd:date数据类型,只需要xsd:dateTime,但是许多系统会正确处理它.