5

ここに書くのは初めてですが、私は本当に問題にぶつかっています.すでにデータで満たされたNeo4JのようなNo-SQLデータベースでJena推論を使用することは可能ですか?

一連のトリプルを表す Neo4J のグラフがあり、それらに対して Jena API と Jena reasoner を使用したいと考えています。Jena の SDB/TDB コンポーネントを使用することを考えましたが、実際にモデルにデータをロードする方法がわかりません。SDB コンポーネントは SQL データベースだけで動作するようであり、TDB javadoc 全体の処理は少し難しいようです。過度に。TDB モデルにも何らかの構成ファイルを定義する必要がありますか?

助けてくれてどうもありがとう。

4

3 に答える 3

9

neo4j とトリプルストア間の接続について説明しているこのリンクをご覧ください。または、少なくとも可能な接続。

neo4j モデルは、Jena が使用する RDF モデルとは大きく異なります。RDF は、主語、述語、および目的語を意味するトリプルで構成されます。 トリプルで構成されたグラフの例を次に示します。リソースを識別するための URI の使用に注意してください。また、ノードは通常、アトミック データ値であることに注意してください。URI、単純な数値、文字列などです。

Neo4j では、ノードは「プロパティ コンテナー」です。つまり、それらは単なる URI ではなく、実際には情報の束です。リレーションシップはノードを接続します。したがって、RDF の「述語」は Neo4j の関係に似ていますが、neo4j ノードは RDF リソースやリテラルとは異なります。

neo4j データベースで推論を使用する場合の主なタスクは、neo4j からデータを吸い出し、RDF トリプルのセットとしてフォーマットすることです。次に、それらの RDF トリプルを Jena Modelに入れることができます。その jena モデルがメモリ内にある場合、既存の jena API を使用して、そのモデルで推論を使用できます。

于 2014-04-08T13:17:52.203 に答える
0

jena API の neo4j 実装を作成中です。このために、ObjectProperty、Individual、および OntClass をサブクラス化し、neo4j エンドポイントへのクエリを実装しています。

主な問題は、Jena のメモリ内推論を使用するために、推論のためにデータベース全体をメモリにロードする必要があることです。現時点での私の解決策は、「推論」サーバーを使用してこれを処理し、新しい結果をメインの永続レイヤーに書き込むことです。もちろん、これは長期的なレコメンデーション システムにのみ適しており、UI インタラクションには適していません。

プロジェクトの現在の状態については、こちらをご覧ください。

https://github.com/uzuzjmd/Wissensmodellierung

パス: コンピテンス データベース\src\main\scala\uzuzjmd\competence\persistence\neo4j

このオープンソース プロジェクトへの参加に興味のある方は、お気軽に私に連絡してください。

于 2016-01-05T12:03:18.563 に答える