問題タブ [pellet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jena - イエナ; listDeclaredProperties セマンティクス
考えてみましょう
Jena を使用して、 の宣言されたプロパティを一覧表示しようとしていますCSub
。私が信じているのはP
、 の宣言されたプロパティとしてリストされてはならないということですCSub
。私の正当化:P
は の宣言されたプロパティでCSub
あり、は のドメインであり 、(1)はドメインでもあることを意味しないドメインです。(1) である場合は、明らかに である可能性がある(ない)ことを意味します。CSub
P
CSuper
P
CSub
(x, y)
P
x
CSuper
x
CSub
驚くべきは、Jena がOntModelSpec.OWL_DL_MEM_RULE_INF や Pellet を使用したメソッドを使用する場合P
の宣言されたプロパティとしてリストされていることです! 何か不足していますか?CSub
listDeclaredProperties
更新: 一部のクラスの宣言されたプロパティとはどういう意味ですか? プロパティがそれらのドメインであることは、クラスを意味しますか!
java - イエナ; プロパティのドメインと範囲は、選択した Reasoner によって異なります
Jena を使用して、プロパティのドメインと範囲を取得しようとしています。
次のオントロジーを考えてみましょう
ご覧のとおり、A1 は P のドメインであり、B1 はその範囲です。OWLセマンティクスによれば、AはPのドメインでもあり、Bは範囲でもあると推測できます。こちらを参照してください。
ただし、推論で Jena を使用すると、常に期待どおりの動作が得られるとは限りません。2 つの状況を区別してみましょう。1 つ目はペレット推論を使用しており、2 つ目は OWL_DL_MEM_RULE_INF を使用しています。
コード
ペレットの使用: これにより、次の出力が得られます。
OWL_DL_MEM_RULE_INF を使用: これにより、次の出力が得られます。
質問:
1-この違いはなぜ起こっているのですか?
2- 正しい結論は?
3- OWL_DL_MEM_RULE_INF と同様の結果が得られるようにペレットを強制する方法はありますか?
jena - OWL-API 4.0.1対応ペレット推理器?
以下の pom ファイルから抽出された maven 依存関係セクションに見られるように、私は OWL-API バージョン 4.0.1 を Pellet reasoner バージョン 2.3.6 と一緒に使用していました。
プロジェクトをコンパイルすると、次のようなエラーが見つかりました。
org.semanticweb.owlapi.OWLAPIServiceLoaderModule.loadFactories(OWLAPIServiceLoaderModule.java:99) のスレッド「メイン」 java.lang.AbstractMethodError の例外 com.google. inject.AbstractModule.configure(AbstractModule.java:62) at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:230) at com.google.inject.spi.Elements.getElements(Elements.java: 103) com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:136) で com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104) で com.google.inject.Guice .createInjector(Guice.java:96) at com.google.inject.Guice.createInjector(Guice.java:73) at com.google.inject.Guice.createInjector(Guice.java:62) org.semanticweb.owlapi.apibinding.OWLManager.(OWLManager.java:43) で sematicdm.parser.CreateIndividualsClass.main(CreateIndividualsClass.java:73)
クラス createIndividualsClass で、エラーが発生する行は次のとおりです。
互換性の問題ですか?もしそうなら、どのバージョンのペレットレゾナーをpomファイルに含めるべきですか?
performance - 推論器を使用するアルゴリズムのパフォーマンスを評価する
私は、OWL-DL オントロジー内の 2 つの指定されたクラス間の特定のパス (プロパティ チェーン) を見つけるアルゴリズム (Java コード) を開発しました。オントロジーはこちら
実際、Pellet reasoner はクエリに応答するのに時間がかかりすぎます。クラスがプロパティを介してF
クラスに対 1 で関連付けられているかどうかを確認するのに約 5 ~ 7 秒かかります。ただし、このクエリは私のアルゴリズムでは反復的です。同様のクラスで再実行すると、はるかに高速に実行されます(インメモリモデルまたはRAMメモリキャッシングに関連していると思います...)。ただし、初回は約 4 ~ 5 分かかります (実行されるチェックの数によって異なります)。D
r
このボトルネックは、オントロジーと推論自体に関連しています: (推論なしで実行すると、すぐに実行されます!)
質問:
1-推論時間を無視してパフォーマンスを評価できますか? つまり、次のようなものです: 推論にかかる時間を無視すれば、その実行は即時です!
2-この状況でパフォーマンスを改善する方法はありますか?