耶拿; listDeclaredProperties语义

时间:2015-03-03 20:55:13

标签: jena owl pellet

让我们考虑一下

(1) P Domain CSuper
(2) CSub subClassOf CSuper

使用Jena,我试图列出CSub的声明属性。我认为P不能被列为CSub的声明属性。我的理由:PCSub的声明属性, iff CSubP的域,来自(1){{1} } CSuper的域名并不意味着P也是域名; (1)表示如果CSub(x, y),则Px,显然CSuper可能(不是)为{ {1}}。

令人惊讶的是,当使用x方法时,即使使用OntModelSpec.OWL_DL_MEM_RULE_INF或Pellet,Jena也会将CSub列为P的声明属性! 我错过了什么吗?

更新 某些类的声明属性是什么意思?它是否意味着属性属于它们的类!

1 个答案:

答案 0 :(得分:2)

你想:

theClass.listDeclaredProperties(false);

来自the documentation

  

listDeclaredProperties()相当于使用默认值direct = false调用listDeclaredProperties(boolean)。

     

direct - 如果为true,则将返回的属性限制为与此类直接关联的属性。如果为false,则此类的超类的属性将不会在此类的声明属性中列出。

我认为您误解了声明的属性。这将返回类可能(或必须)具有的属性。假设我们有一个类层次结构:

A > B > C

还有:

P domain B

所有BsCs都可能拥有P属性 - 在那里没有矛盾。但是,并非所有As都有P属性 - not-Bs是问题所在。