【问题标题】:Jena; listDeclaredProperties semantics耶拿; listDeclaredProperties 语义
【发布时间】:2015-03-03 20:55:13
【问题描述】:

让我们考虑一个

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

使用 Jena,我试图列出 CSub 的声明属性。我相信P 不能被列为CSub 的声明属性。我的理由:PCSub 的声明属性,iff CSubP 的域,来自 (1) CSuperP 的域不要暗示CSub 也是一个域; (1) 表示如果(x, y)P,那么xCSuper,显然x 可能(不)CSub

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

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

【问题讨论】:

    标签: jena owl pellet


    【解决方案1】:

    你想要:

    theClass.listDeclaredProperties(false);
    

    来自the documentation

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

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

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

    A > B > C
    

    还有:

    P domain B
    

    所有BsCs 都可能具有P 属性——这并不矛盾。但是,并非所有As 都可能拥有P 属性——not-Bs 是问题所在。

    【讨论】:

    • 嗯,这似乎很清楚。但是,某个类的声明属性是什么意思?这是否意味着属性是它们的域的类?如果这是真的,那么所有的 As 和 Bs 都会有 P,即不是所有的 Bs 和 Cs!
    • 我认为,在 RDF 模式中,它仅表示域。 (我不确定它是否包含没有明确域的属性)OWL 可能更复杂,我不记得了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-07
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    相关资源
    最近更新 更多