1

我用一些 xsd:duration 数据类型制作了一个 OWL 本体。然后我使用 Thea 将其转换为 prolog 事实。

我有以下 xsd:duration 结构PnYnMnDTnHnMnS。如何编写序言规则来比较两个持续时间,以确定哪一个更大?

当我从我的 prolog 事实中检索数据时,它具有以下形式:

literal(type('http://www.w3.org/2001/XMLSchema#duration', Value))

我设法使用以下方法提取价值:

extractDuration(Literal, Result):-arg(1,Literal,Out1),arg(2,Out1,Result).

这导致(例如):

'P5D', 'PT10H', or 'P3DT15H32M'

仍然不知道如何比较它们。

4

1 回答 1

0

这种表示并不容易。为什么不是更传统的东西?

理想情况下,您将在内部将持续时间表示为秒(浮点数)(取决于您认为需要的粒度)。然后比较或计算是微不足道的。您可以使用日期/时间库将其转换为人类可读的格式。

或者,您可以使用类似YYYY-MM-DDTHH:MM:SS. 这比较正确(因此,0001-12-30T00:00:00小于0002-00-00T00:00:00);但这有一个问题,您总是必须对其进行规范化,这根本不是微不足道的。

于 2021-02-16T08:20:46.973 回答