複数のモード(つまり、複数のタイプのネットワークノード)と多重関係(つまり、複数のタイプのネットワークエッジ)を持つネットワークデータに対して分析を実行したいと思います。
分析は、おそらくSNAに関するものか、グラフ理論からの任意のアルゴリズムを適用することです。たとえば、タイの強さ、中心性、中間性、ノード距離、ブロック、クラスターなどです。
ソースデータはかなり構造化されていないため、最初に、データをどのように表現、保存、取得するかを考える必要があります。
以下はいくつかのアイデアです。フィードバックやさらなる提案をいただければ幸いです。:)
そのような種類のアプリケーション用に、Neo4J、InfoGridなどの優れたNoSQLデータベースがすでにいくつかあることを私は知っています。しかし、いくつかの拡張性の理由(たとえば、ライセンス、Web標準など)のために、データの保存と表現にRDFを使用することを好みます。使用するツールはSESAMEまたはJENAです。
ネットワーク/グラフデータをRDFで表現するという考えは簡単です。例えば:
ネットワーク/グラフデータ
*Alice* ----lend 100USD----> *Bob* ----- likes ----> *Skiing*
RDFで表される
*Alice* --src--> *lend_relation* <---target--- *Bob* ---likes---> *Skiing*
|
has_value
\|/
*100USD*
[Alice src lend_relation]
[Bob target lend_relation]
[lend_relation has_value 100USD]
[Bob likes Skiing]
ただし、問題は、RDFとSPARQLにグラフモデルの視点が欠けていることです。ノード間をトラバースしたり、RDFクエリで(最短の)距離を見つけたりするのは効率的ではありません。これは、JUNGやJGarphTなどの追加の分析ツールを使用して実行する必要があります。まず、RDFストレージにクエリを実行してサブグラフを作成し、それをJUNGまたはJGraphTで使用されるデータモデルに変換する必要があります。(JUNGでもJGraphTでもない)追加の視覚化が必要な場合は、視覚化ツールキット用に別のデータモデルを構築する必要があります。それが明確な統合なのか効率的な統合なのかはわかりません。
提案をありがとう!