0

クエリを書き込もうとしています

病院と hasNameWithWords の値は "center"^^string

このクエリは、Protege 4.2 で名前に「センター」が含まれる病院を持つインスタンスを、FACT++ 推論器と Hermit 推論器で返します

しかし、ウェブサイトhttp://sourceforge.net/p/owlapi/code/ci/aef6981535f07a2d0d44c394b9f4d5415f36025a/tree/contract/src/test/java/org/で入手可能なOWL-APIのDLクエリ例に同じクエリを入力すると coode/owlapi/examples/DLQueryExample.java

結果が出ません。

しかし、次のような単純なクエリを書くと結果が得られます

病院

コード内の推論者が推論できないからでしょうか?

他にどんな推論が良いでしょうか?

4

1 に答える 1

3

例として使用するクラス ( ) は、OWL-API 組み込みの構造的推論( )DLQueryExample.javaに依存しています。OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();

このタイプの推論はかなり単純で、あなたのような複雑なクエリには適していません。ただし、クラス階層に関する回答を提供することはできます。これが、単純な query でいくつかの結果を取得する理由ですHospitals

Hermit または FACT++ を使用するようにコードを設定する必要があります。Hermitの例を示します。

  • HermiT jar ファイルをダウンロードして、プロジェクトのクラス パスに追加します。
  • OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();クラスで、行を次のように置き換えますOWLReasonerFactory reasonerFactory = new Reasoner.ReasonerFactory();org.semanticweb.HermiT.Reasoner機能させるには、インポートする必要があります。
  • デフォルトの推論を HermiT に置き換えただけです。コードの残りの部分は同じままで、クエリが機能するはずです。
  • FaCT++Pelletを試して、速度などを比較できます...
于 2013-01-16T10:24:05.147 に答える