OWL2:复杂的类表达式+两个日期的比较



OWL2中有没有一种方法可以定义一个涉及两个文字值比较的类?假设我有一个类Person,它有两个数据属性:

  • 日期A:Person->xsd:date
  • 日期B:Person->xsd:date

我想定义类Person:的两个子类

  • PersonWithEarlierDateA=患有dateA < dateB的人员
  • PersonWithEarlierDateB=具有dateB < dateA的人员

以下定义在Protege 5.5.0中似乎不起作用:PersonWithEarlierDateA Equivalent To "dateA some xsd:date[ < dateB ]"+PersonWithEarlierDateB Equivalent To "dateB some xsd:date[ < dateA ]"(当我试图推断个体的类别时,Protege崩溃(。

在OWL2中是否可能?

您可以使用SHACL定义与Person匹配的NodeShape,其中dateA<日期B。使用SHACL的高级功能,你可以让NodeShape实际上构建一个三元组,声明一个dateA<dateB实际上是PersonWithEarlierDateA类型。

这可能类似于使用SWIRL,但SHACL最近的使用得更广泛(我猜,但我认为这是真的(。

最新更新