2017-05-05 1 views
0

推論器を使用してオブジェクトプロパティの反転をクエリするにはどうすればよいですか?推論器を使用してInverseObjectPropertyを取得

例えば、人が銃を持つことができますし、その逆:簡単な公理があるので

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

、私はこれを処理するためにuncomplicatedstar機能を思い付くことを試みた:

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(); 
} 

この関数は逆のオブジェクトプロパティを取得する簡単で簡単な方法ですか?

答えて

1

reasoner.getInverseObjectProperties(relation).getEntities()によって返されたOWLObjectPropertyExpressionのインスタンスは、すでにrelationの逆です。それらのそれぞれはあなたの入力の逆であると推測されます - それらはお互いに同等であることができます。

関連する問題