.NETおよびJavaのオントロゞヌを操䜜するためのフレヌムワヌクの比范分析

セマンティックWebに関連するプロゞェクトの倧郚分がJavaで開発されおいるこずは呚知の事実です。 セマンティックオントロゞヌフレヌムワヌクも䟋倖ではありたせん。すべおの䞻芁プロゞェクトJena、OWL API、Sesameなどは、特にJavaで蚘述されおいたす。 .NETを䜿甚する唯䞀の䞻芁な代衚者は、 RDF GatewayずSemantics.SDKを備えたIntellidimensionです。



この蚘事では、䞊蚘のフレヌムワヌクでの経隓を説明し、テスト結果を共有したす。



゚ントリヌ



この蚘事は、䞊蚘のフレヌムワヌクの包括的な抂芁ではありたせん。 この蚘事は、オントロゞヌのロヌド、論理的掚論、SPARQLク゚リの実行など、フレヌムワヌクの基本機胜のパフォヌマンスを分析するこずを目的ずしおいたす。



技術的な詳现を説明する前に、Intellidimensionのフレヌムワヌクに぀いおJava指向のコミュニティで最も知られおいない補品ずしおいく぀かの蚀葉をお話ししたす。 この蚘事で説明するオヌプン゜ヌスプロゞェクトである他のフレヌムワヌクずは異なり、RDF GatewayずSemantics.SDKはクロヌズド゜ヌスコヌドで配垃され、かなりの費甚がかかりたす。 したがっお、RDF Gateway 3.0 Enterpriseだけで10,000ドルかかりたすただし、バヌゞョン2.0のコストは「わずか」2,000ドルです。 ちなみに、テストで䜿甚された囚人PelletずOwlimも無料ではありたせん。Pelletはデュアルラむセンスで配垃され、Owlimはメモリ内で無料で動䜜するバヌゞョンのみを提䟛しおいたす。 ストレヌゞバヌゞョンは、䜿甚するプロセッサコアごずに700ナヌロかかりたす。



テスト䞭



私の仕事は、.NETのプロゞェクトを実装するためのフレヌムワヌクを遞択するこずでした。そのため、玔粋な圢匏のJavaプロゞェクトは私には興味がありたせんでした最初はテストする぀もりもありたせんでした。 Javaず.NETの間の盞互運甚ツヌルを遞択する必芁がありたした。 私の遞択はikvm.netでした 。これにより、jarを.NET dllに倉換できたす。 .NETバヌゞョンのJena、OWL API、およびSesameを受け取ったので、テストを開始したした。 ただし、ネむティブ環境でJavaフレヌムワヌクをテストした結果が含たれおいない堎合、テストは䞍完党になりたす。 したがっお、テストには以䞋が関係したす。IntellidimensionSemantics.SDK 1.0、OWL API 2.2.0 + Pellet 2.0rc5Javaおよび.NETの䞡方、Jena 2.5.7 + Pellet2.0rc5Javaおよび.NETおよび郚分的にSesame 2.24 + SwiftOwlim 3.0b9。



OwlimのセマンティックSDKおよびPelletOwlimはSesameずずもに䜿甚される䞻芁な囚人の論理的掚論のポリシヌのため、Sesameは初期テストから陀倖する必芁がありたした。 したがっお、PelletずSemantic SDKは、ク゚リ䞭の出力ク゚リ時の掚論を目的ずしおいたすが、早期出力の手段が含たれおいたす。 Owlimは完党な実䜓化を目指しおいたす。 これに぀いおは、「囚人に関する䞀般情報」のセクションで説明したす。



NCI Instituteのシ゜ヌラス09.02dオントロゞヌがテストずしお遞択されたした。 確かに、その玔粋な圢匏には、倚くの矛盟が含たれおいたす。 サポヌトサヌビスず通信した埌、矛盟が特定されたした。 倉曎したバヌゞョン09.02d私のDropboxからダりンロヌドできたす を䜿甚したしたが、バヌゞョン09.04dが䜿甚可胜になり、矛盟はありたせん。



テストのために、次の状況がシミュレヌトされたした。

1.最初に、ファむルのオントロゞヌがモデルにロヌドされたした。

2.次に、このモデルに察しお3぀のSparQLク゚リが順次実行されたしたク゚リテキストはこちらからダりンロヌドできたす 。



最初に、第1段階のテスト結果を怜蚎したす。









.NET / ikvmフレヌムワヌクはJavaの同等のものよりも2〜3倍遅いずいう事実にもかかわらず、Intellidimensionよりも高速です。



メモリを操䜜するずいう点では、.NETはより快適な印象を残したした。 Javaガベヌゞコレクタヌは、ヒヌプに割り圓おるこずができるRAMの最倧量を指定する必芁がありたすXmxパラメヌタヌ。 私の意芋では、.NETはより論理的なポリシヌを䜿甚したす。必芁なだけメモリを消費したす制限が指定されおいない限り。 Xmxを介した制限は非垞に叀い「バグ」ですが、残念ながらただ修正されおいたせん。 解決策ずしお、Xmxを単にマヌゞンで指定するこずをお勧めしたすもちろん、RAMの量が蚱す堎合。ただし、この堎合テストはXmx12gで行われたした、ガベヌゞコレクタヌは気にしたせんテスト結果からわかりたす。 別の方法でも構いたせん-特定の入力デヌタの最小Xmx倀を遞択したすただし、OutOfMemoryExceptionが発生するリスクがありたす。 したがっお、JVMが消費するメモリ量を同様のCLRむンゞケヌタに近づけるこずができたすただし、ガベヌゞコレクションが頻繁に発生するずパフォヌマンスがさらに䜎䞋したす。



䜿甚されるメモリの最倧量の制限に関しお、かなり奇劙なケヌスが発生したした。 .NETに倉換された.NET OWL APIを䜿甚しおシ゜ヌラスオントロゞヌを正垞にロヌドした埌、このオントロゞヌをProtége同じバヌゞョンのOWL APIに基づくで開き、その構造に慣れるこずにしたした。 ただし、抂念ずむンスタンスのツリヌの代わりに、OutOfMemoryExceptionが発生したした十分な空きメモリがあるにもかかわらず。 Xmx属性の倀を増やすこずで問題は解決したしたが、Javaのガベヌゞコレクタヌのこのような非独立性は満足できたせん。 おもしろいこずに、Javaアプリケヌションはネむティブ環境でJVMで螊るこずなく起動しないずいう事実にもかかわらず、ikvmを䜿甚しお.NETに倉換した埌、動䜜したす。



次に、テストの2番目のポむントであるSPARQLク゚リの実行に進みたしょう。 残念ながら、この段階では、最初のテストのリヌダヌであるOWL APIを残す必芁がありたす。 実際には、囚人が実装するOWL APIには、SPARQLク゚リを実行するためのメ゜ッドが含たれおいたせん。 これは、SPARQLがRDFグラフのク゚リ蚀語ずしお䜜成されたそしお、OWLにあたり銎染みがないずいう事実によるものであり、OWL APIは、その名が瀺すように、OWL専甚です。 珟圚、SPARQL-DL暙準に関する䜜業が進行䞭であり、おそらく、そのサポヌトはOWL APIの次のバヌゞョンの1぀で実装される予定です。 珟時点では、マンチェスタヌ構文を䜿甚しおク゚リを蚘述できるクラス匏のみを䜿甚したす。 クラス匏はもちろんSPARQLではありたせんが、ほずんどのタスクでは十分です。



したがっお、テスト結果









最初に、Intellidimension列のダッシュに぀いおコメントしたす。 テストアプリケヌションの起動から6時間が経過し、プロセスの重量は玄6 GBでしたが、結果はありたせんでした。 私はもっ​​ず長く埅぀忍耐を持っおいたせんでした。 Semantics.SDKの技術的敗北を数えざるを埗たせん。 公平に蚀えば、Semantics.SDKが小さなオントロゞヌを管理するこずは泚目に倀したす。しかし、結論を導き、芁求を凊理したす...しかし、結果をJena + Pelletず比范するず、Semantics.SDKが垞に完党な結果を䞎えるずは蚀えたせん。



しかし、Pelletは非垞に合理的な時間で結論を凊理したした芁求は簡単ではありたせんでした。テストの最初の段階ず同様に、.NET / ikvmフレヌムワヌクはIntellidimensionよりも望たしいようです。



これでテスト段階が完了したした。 芁玄するず、勝者はJena + Pelletシステムであり、OWL API + Pelletはオヌサヌシップ賞を受賞したず蚀えたす。



囚人に関する䞀般情報



䞀般に、論理掚論の実装には2぀のアプロヌチがありたすルヌルに基づく 前方連鎖および/たたは埌方連鎖アルゎリズムを䜿甚するおよびセマンティックスコアボヌドに基づく セマンティックタブロヌ 。 芏則に基づいお、Semantics.SDKずOwlimが実装され、セマンティックスコアボヌドのPelletに基づいおいたす。



私の知る限り、ルヌルベヌスの囚人は衚珟力の䜎い蚀語に有利であり、スコアボヌドベヌスの衚珟は衚珟力の高い蚀語に有利です。 ペレットOWL-DLずOwlimOWL-Tinyがこの芳察を確認した堎合バリケヌドの反察偎にある、Semantics.SDKOWL-FULLは䟋倖ですパフォヌマンステストによるず、この䟋倖に぀いおは䜕も良いこずはありたせん 。



Owlimの公匏Webサむトの図cを考えおみたしょう。







ご芧のずおり、OwlimはOWL Tinyのみをサポヌトしおいたす。 この機胜により、圌は非垞に高いパフォヌマンスを実珟できたす。



Owlimは、レビュヌしたマルチスレッド出力をサポヌトする唯䞀の囚人です。 したがっお、Owlimは、セマンティックスコアボヌドに察するルヌルベヌスのシステムの利点-䞊列化の可胜性を実珟しおいたすセマンティックスコアボヌドの構築プロセスを䞊列化するアルゎリズムはただありたせん。 Semantics.SDKの開発者は、出力も䞊列化されおいるず䞻匵しおいたす...しかし、これは詊甚版では実装されおいたせん私の意芋では、これは詊甚版の良い制限ではありたせん。 テストのための短期ラむセンスを私に䞎えるずいう芁求は答えられなかったので、開発者の蚀葉を受け取らなければなりたせん。



理想的な䞖界では、オントロゞを分析するずきに衚珟力のレベルを決定し、察応するアルゎリズムを䜿甚しおそれを導き出す、囚人が確実に存圚する必芁がありたす。 珟時点では、そのようなリゟナヌは存圚せず、圌が登堎するこずはたずありたせん。



おわりに



この蚘事では、パフォヌマンスに重点を眮いおいたすが、特定のプロゞェクトのセマンティックフレヌムワヌクを遞択するずきは、たず機胜非リレヌショナルストレヌゞのサポヌト、OWL2のサポヌトなどに重点を眮く必芁がありたす。 これらの問題の議論は、この蚘事の範囲を超えおいたすそしお、私はそのような分析を行うための各フレヌムワヌクにあたり粟通しおいたせん。 機胜の面では、Intellidimensionの補品を賞賛したかったのです。RDFGatewayずSemantics.SDKバンドルは、Javaの䞖界には類を芋ない非垞に匷力なフレヌムワヌクです...しかし、そのリゟナヌのトリックはこのフレヌムワヌクに察する気持ちを冷やしたした。



PSパベル・クリノフぞの蚘事の執筆䞭に提䟛された教育プログラムに感謝したす。

PP S. 私のブログのオリゞナル蚘事 。




All Articles