耶拿;列表声明的属性语义



让我们考虑一个

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

使用耶拿,我正在尝试列出CSub的声明属性。我认为P不能被列为CSub的声明财产。我的理由:PCSub的声明属性,iff CSubP的域,来自(1(CSuperP的域,这并不意味着CSub也是一个域;(1(意味着如果(x, y)P,那么xCSuper的,显然x可以(不(CSub

令人惊讶的是,耶拿将P列为CSub的声明属性,即使使用OntModelSpec.OWL_DL_MEM_RULE_INF或Pellet listDeclaredProperties方法也是如此!我错过了什么吗?

更新:某个类的声明属性是什么意思?这是否意味着该属性是它们的域的类!

你需要:

theClass.listDeclaredProperties(false);

从文档中:

listDeclaredProperties() 等效于调用默认值 direct = false 的 listDeclaredProperties(boolean(。

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

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

A > B > C

以及:

P domain B

所有的BsCs都可能有属性P——那里没有矛盾。然而,并非所有As都有财产P - not-Bs是问题所在。

相关内容

  • 没有找到相关文章

最新更新