2

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

4

1 に答える 1

4

クラス を変更せずにそのまま使用していると仮定しますDLQueryExample

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

修正方法:

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

OWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();

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

于 2013-05-23T20:38:22.260 に答える