【问题标题】:Get InverseObjectProperty with a reasoner使用推理器获取 InverseObjectProperty
【发布时间】:2017-05-05 18:11:30
【问题描述】:

如何使用推理器查询对象属性的逆?

例如,一个人可以有一把枪,反之亦然:

<Declaration>
    <ObjectProperty IRI="#hasOwner"/>
</Declaration>
<Declaration>
    <ObjectProperty IRI="#hasGun"/>
</Declaration>
<InverseObjectProperties>
    <ObjectProperty IRI="#hasOwner"/>
    <ObjectProperty IRI="#hasGun"/>
</InverseObjectProperties>

因为有简单的公理,我试着想出一个简单的star函数来处理这个问题:

OWLObjectProperty getOWLInverseRelation(OWLReasoner reasoner, OWLObjectProperty relation) {
    Set<OWLObjectPropertyExpression> inverseRelationExprs = reasoner.getInverseObjectProperties(relation).getEntities();

    if (inverseRelationExprs.size() != 2) return null;

    Iterator<OWLObjectPropertyExpression> inverseRelationExprIter = inverseRelationExprs.iterator();

    OWLObjectPropertyExpression inverseRelationExpr = inverseRelationExprIter.next();

    if (inverseRelationExpr.getNamedProperty().getIRI().getShortForm().equals(relation.getIRI().getShortForm()))
        inverseRelationExpr = inverseRelationExprIter.next();

    return inverseRelationExpr.asOWLObjectProperty();
}

这个函数是获取逆对象属性的简单直接的方法吗?

【问题讨论】:

    标签: owl ontology protege owl-api reasoning


    【解决方案1】:

    reasoner.getInverseObjectProperties(relation).getEntities() 返回的OWLObjectPropertyExpression 实例已经是relation 的倒数。它们中的每一个都被推断为您输入的倒数 - 它们可以彼此等价。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      相关资源
      最近更新 更多