SPARQL 的 BIND 年份函数是否适用于 xsd:datetimestamp?
Does SPARQL's BIND year function work for xsd:datetimestamp?
所以我可以使用这个查询:
SELECT ?year
WHERE {
?timeInt :hasStartTime ?StartT .
BIND(year(?StartT) AS ?year)
}
得到 2022 的输出。这是我的 RDF 数据(海龟语言):
:Interval1 :hasStartTime "2022-03-11"^^xsd:date .
但是当我使用这个时:
:Interval1 :hasStopTime "2022-03-11T21:01:23Z"^^xsd:dateTimeStamp .
我的查询无法输出任何内容。那么这是否意味着 BIND 为 xsd:date 工作的方式与 xsd:datetimestamp 的工作方式不同,或者我错过了什么?是否有其他选项可以使用 BIND 到 select 在 xsd:date 时间戳中的更具体时间而不仅仅是年份?谢谢。
这将取决于引擎是否支持该数据类型。有些会,有些不会。它不是 SPARQL 规范所要求的。 xsd:dateTime 为必填项。
有需要的可以投。最便携的方式是写
strdt(str("2022-03-11T21:01:23Z"^^xsd:dateTimeStamp), xsd:dateTime)
它只依赖于基本规范。
所以我可以使用这个查询:
SELECT ?year
WHERE {
?timeInt :hasStartTime ?StartT .
BIND(year(?StartT) AS ?year)
}
得到 2022 的输出。这是我的 RDF 数据(海龟语言):
:Interval1 :hasStartTime "2022-03-11"^^xsd:date .
但是当我使用这个时:
:Interval1 :hasStopTime "2022-03-11T21:01:23Z"^^xsd:dateTimeStamp .
我的查询无法输出任何内容。那么这是否意味着 BIND 为 xsd:date 工作的方式与 xsd:datetimestamp 的工作方式不同,或者我错过了什么?是否有其他选项可以使用 BIND 到 select 在 xsd:date 时间戳中的更具体时间而不仅仅是年份?谢谢。
这将取决于引擎是否支持该数据类型。有些会,有些不会。它不是 SPARQL 规范所要求的。 xsd:dateTime 为必填项。
有需要的可以投。最便携的方式是写
strdt(str("2022-03-11T21:01:23Z"^^xsd:dateTimeStamp), xsd:dateTime)
它只依赖于基本规范。