我试图定义两个反向对象属性。
对象属性是:
hasChildhasParent很明显,如果是JOHN hasParent ANNA,那么是ANNA hasChild JOHN。这似乎是通过使用Protege的InverseOf来实现的,但是如果我们假设ANNA is Happy,下面的DL查询:
hasChild only Happy返回JOHN。推理者解释说,hasChild is inverseOf hasParent。有人能帮我把事情弄清楚吗?提前感谢!
发布于 2019-12-01 18:43:50
hasChild only Happy是一个普遍的限制,没有伴随的存在限制。在开放世界假设下,这些普遍的限制最终包括所有定义的个人,因为for all包含没有填充属性的情况。
要验证是否存在这种情况,请创建一个定义为hasChild only Happy的命名类,并检查哪些类与其等效。最有可能的是,您将在结果中找到owl:Thing。因此,所有个人都将回答该查询。
要避免这种情况,请将hasChild some Happy添加到查询中,以便在绘制推理之前必须有一个填充。
但是,请注意,您希望父母感到高兴。也许你是想倒转方向说hasParent only Happy
https://stackoverflow.com/questions/59127119
复制相似问题