Группировка данных по месяцам в SPARQL?

Можно ли извлечь элемент месяца из даты с помощью SPARQL и сгруппировать по нему результаты. Я использую онтологию времени W3 для определения дат в формате "2009-12-31"^^xsd:date.

Итак, в случае "2009-12-31"^^xsd:date я хотел бы извлечь 12.

Это вообще возможно. Если да, то как это сделать?


person gintas    schedule 08.03.2012    source источник


Ответы (1)


В 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)

Единственная небольшая проблема заключается в том, что системы SPARQL не обязаны обрабатывать типы данных xsd:date, а только xsd:dateTime, но многие из них обрабатывают это правильно.

person Steve Harris    schedule 08.03.2012