GraphDB 中两个日期之间的天数差异
Difference in days between two dates in GraphDB
我需要一些帮助来计算 Ontotext GraphDB 中使用 SPARQL 的两个日期之间的差异。我知道 SPARQL 协议不支持日期的算术运算,但是一些 SPARQL 引擎支持它。
就像我能做的 Fuseki 中的例子。
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?duration
WHERE {
BIND (("2011-02-04T14:45:13.815-05:00"^^xsd:dateTime - "2011-02-
02T14:45:13.815-05:00"^^xsd:dateTime) AS ?duration)
}
结果是持续时间:"P2DT0H0M0.000S"^^xsd:duration
。然后我可以得到2天的差异,或者Virtuoso提供了一个内置函数bif:datediff
。
我的问题是,GraphDB 上是否有类似的东西可以解决这个简单的问题而无需大的解决方法。
提前致谢。
已在 8.7.0 中解决(9 月 28 日发布):
GDB-2887 As a GraphDB user I need support of “+” / “-” operations between xsd:dateTime and xsd:duration with SPARQL
现在您的查询应该 return "P2DT0H0M0.000S"^^xsd:dateTimeDuration
.
或者,可以对基于 Virtuoso、Blazegraph、Fuseki 等的 public 端点使用联合查询:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX bif: <bif:>
SELECT ?duration1 ?duration2 ?duration3 ?duration4 {
VALUES (?start ?end)
{("2011-02-02T14:45:14"^^xsd:dateTime "2011-02-04T14:45:13"^^xsd:dateTime)}
SERVICE <http://dbpedia.org/sparql> #-- Virtuoso
{ BIND ((?end - ?start)/86400.0 AS ?duration1) }
SERVICE <http://dbpedia.org/sparql> #-- Virtuoso
{ BIND (bif:datediff("day", ?start, ?end) AS ?duration2) }
SERVICE <https://query.wikidata.org/sparql> #-- Blazegraph
{ BIND ((?end - ?start) AS ?duration3) }
SERVICE <http://zbw.eu/beta/sparql/stw/query> #-- Fuseki
{ BIND (day(?end - ?start) AS ?duration4) }
}
我需要一些帮助来计算 Ontotext GraphDB 中使用 SPARQL 的两个日期之间的差异。我知道 SPARQL 协议不支持日期的算术运算,但是一些 SPARQL 引擎支持它。
就像我能做的 Fuseki 中的例子。
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?duration
WHERE {
BIND (("2011-02-04T14:45:13.815-05:00"^^xsd:dateTime - "2011-02-
02T14:45:13.815-05:00"^^xsd:dateTime) AS ?duration)
}
结果是持续时间:"P2DT0H0M0.000S"^^xsd:duration
。然后我可以得到2天的差异,或者Virtuoso提供了一个内置函数bif:datediff
。
我的问题是,GraphDB 上是否有类似的东西可以解决这个简单的问题而无需大的解决方法。
提前致谢。
已在 8.7.0 中解决(9 月 28 日发布):
GDB-2887 As a GraphDB user I need support of “+” / “-” operations between xsd:dateTime and xsd:duration with SPARQL
现在您的查询应该 return "P2DT0H0M0.000S"^^xsd:dateTimeDuration
.
或者,可以对基于 Virtuoso、Blazegraph、Fuseki 等的 public 端点使用联合查询:
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX bif: <bif:>
SELECT ?duration1 ?duration2 ?duration3 ?duration4 {
VALUES (?start ?end)
{("2011-02-02T14:45:14"^^xsd:dateTime "2011-02-04T14:45:13"^^xsd:dateTime)}
SERVICE <http://dbpedia.org/sparql> #-- Virtuoso
{ BIND ((?end - ?start)/86400.0 AS ?duration1) }
SERVICE <http://dbpedia.org/sparql> #-- Virtuoso
{ BIND (bif:datediff("day", ?start, ?end) AS ?duration2) }
SERVICE <https://query.wikidata.org/sparql> #-- Blazegraph
{ BIND ((?end - ?start) AS ?duration3) }
SERVICE <http://zbw.eu/beta/sparql/stw/query> #-- Fuseki
{ BIND (day(?end - ?start) AS ?duration4) }
}