/ / Manchester SyntaxによるOWL APIの無名クラスの照会 - オントロジー、フクロウ、プロテージ、owl-api、マンチェスター構文

OWL APIの匿名クラスをマンチェスターでクエリする構文 - オントロジー、owl、protege、owl-api、manchester-syntax

Protegeで作成したオントロジーを推論するためにOWL APIを使用しています。OWLAPIの例DLクエリを処理しています。 http://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/coode/owlapi/examples/DLQueryExample.java。私はこの例が提供すると思いますProtegeのDL Queryタブと同等の機能。しかし実際にはいくつかの重要な違いがあります。私は匿名クラスの情報(サブクラス、スーパークラスなど)を取得する必要があります。これは個人の集合(ex {Member1、Member2 ...})によって定義されます。方法。 Protegeでは、このクエリは正しい結果を返しますが、OWL API D1クエリ例のそのようなクエリは[NOTHING]を返します。 OWL APIで無名クラスを操作する方法はありますか?ご回答ありがとうございます。

回答:

回答№1の場合は3

あなたが使用していると仮定 クラス DLQueryExample 変更なしでそのまま。

あなたはとは異なる推論を使用する必要がありますデフォルトのもの151行目を見てください。実装はOWL-APIに組み込まれた構造推論を使用します。この推論は制限されており、あなたのように複雑なクラス式を処理することはできません。

それを修正する方法:

のようなより高度な推論を使う 隠者。 jarをダウンロードしてクラスパスに配置してから、151行目のコードを次のように置き換えます。

OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();

パッケージをインポートする必要があります org.semanticweb.HermiT.Reasoner。これで、Hermitを使用してクエリを処理します。やってみる Pizza and (hasTopping some CheeseTopping)、それはうまくいくはずです!