问题描述
让我们考虑一个
(1) P Domain CSuper
(2) CSub subClassOf CSuper
使用耶拿(Jena),我试图列出CSub
的声明属性.我认为不能将P
列为CSub
的声明属性.我的理由是:P
是CSub
的声明属性, iff CSub
是P
的域,而(1)CSuper
是P
的域并不暗示CSub
也是一个域; (1)表示如果(x, y)
是P
,那么x
是CSuper
,显然x
可能(不是)是CSub
.
Using Jena, I'm trying to list the declared properties for CSub
. What I believe is that P
mustn't be listed as a declared property for CSub
. My justification: P
is a declared property for CSub
, iff CSub
is a domain for P
, from (1) CSuper
is a domain for P
which doesn't imply that CSub
is also a domain; (1) means that if (x, y)
is P
, then x
is CSuper
, clearly x
may (not) be CSub
.
令人惊讶的是,即使使用OntModelSpec.OWL_DL_MEM_RULE_INF或Pellet,使用listDeclaredProperties
方法时,耶拿仍将P
列为CSub
的声明属性! 我想念什么吗?
The surprising thing is that Jena is listing P
as a declared property for CSub
when using listDeclaredProperties
method even using OntModelSpec.OWL_DL_MEM_RULE_INF or Pellet! Am I missing something?
更新:某个类的声明属性是什么意思?这是否意味着该类是该属性的类!
Update:What does a declared property for some class mean? Does it mean the classes that the property is a domain of them!
推荐答案
您要:
theClass.listDeclaredProperties(false);
来自文档:
direct
-如果为true,则将返回的属性限制为直接与此类关联的属性.如果为false,则不会在此类的已声明属性中列出此类的超类的属性.
direct
- If true, restrict the properties returned to those directly associated with this class. If false, the properties of super-classes of this class will not be listed among the declared properties of this class.
我认为您误解了声明的属性.这将返回类可能(或必须)具有的属性.假设我们有一个类层次结构:
I think you've misunderstood declared properties. This returns properties that a class may (or must) have. Suppose we have a class hierarchy:
A > B > C
还有:
P domain B
所有Bs
和Cs
可能都具有属性P
-那里没有矛盾.但是,并非所有As
都可能具有属性P
-问题是not-Bs
.
All Bs
and Cs
may have property P
-- no contradiction there. However it's not true that all As
may have property P
-- the not-Bs
are the problem.
这篇关于耶拿; listDeclaredProperties语义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!