我想写一个一般的类公理
如果某个值(属性)来自类{A,B,C,D}中的一个,则它不能有不同于其他类的hasValue。
&;hasValue some {A,B,C,D} disjointWith hasValue some ({A,B,C,D} - X)&;其中X是disjointWith之前的类之一。
基本上是以下4个语句的并集,但在一个语句中。
- "hasValue some A与hasValue some {B,C,D}">
- "hasValue some B disjointWith hasValue some {A,C,D}">
- "hasValue some C disjointWith hasValue some {A,B,D}">
- "hasValue some D disjointWith hasValue some {A,B,C}">
正如@UninformedUser已经评论的那样,您在问题的第一部分中描述的内容在OWL中是不可能的(不支持根据另一个属性的填充符限制一个属性断言)。
然而,在第二部分中,你列出了四个类的限制,并询问如何在一个语句中做到这一点——你可以交叉这四个类表达式,尽管这并不能达到你的主要目标。
另一个部分解决方案:声明A, B, C, D个不联合的成员,并声明一个不联合的属性为范围,基数限制为1,这样只能做出一个属性断言。两个属性断言将强制填充符是相同的个体,如果填充符属于,例如,A和B,