在描述逻辑中,存在称为"rolification"的概念(OWL和Rules,Sec 3.2).它将概念(类)转换为角色(属性).例如,当我们滚动时R(x),我们得到r(x,x).该技术对于在DL中表达一些规则很有用.
我们如何在OWL 2中做到这一点?似乎在OWL 2规范中没有直接支持滚动.
如果他们有同一个父亲,我需要推断一个人是另一个人的兄弟.
所以,如果我有这个:
巴特有父亲.
丽莎有父亲.
因为Bart和Lisa父亲一样,我想推断:
丽莎有兄弟.
有没有任何方法可以使用任何属性特征?
此DL-Query不会返回任何个人:
hasPet exactly 1 DomesticAnimal这是本体的一部分:
:hasPet a owl:ObjectProperty;
rdfs:domain :Human;
rdfs:range :DomesticAnimal;
owl:inverseOf : petOf;
:Joe a :Human;
hasPet :Lassy.
:Bob a :Human;
hasPet :Sparkey, Lucky.
Run Code Online (Sandbox Code Playgroud)
查询:
petOf value Bob 回归Sparkey和LuckypetOf value Joe 回报 LassyhasPet exactly 1 没有回报.为什么不是最后一个查询返回Joe?我在使用Pellet,HermiT和FaCT ++的Protégé中尝试过它,但它没有用.
我需要在Protégé中实现一个OWL本体,它包含两个类:s1并且s2都是System类的实例.这两个类由连接类连接s1_s2,其中包含属性omega.该物业必须根据以下法律取值:
omega = 1*s1.complete
我怎样才能在Protégé中实现它,这样我将来可以在SWRL规则中使用它?
