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最近的和使用得更广泛(我猜,但我认为这是真的(。