我想对具有多种模式(即多种类型的网络节点)和多路复用关系(即多种类型的网络边缘)的网络数据进行一些分析。
分析可能是关于 SNA 或应用图论中的任何算法,例如关系强度、中心性、介数、节点距离、块、集群等。
源数据相当非结构化,因此我首先应该考虑如何表示、存储和检索数据。
以下是一些想法。我将不胜感激任何反馈或进一步的建议。:)
我知道已经有一些很棒的 NoSQL 数据库,例如 Neo4J、InfoGrid,用于此类应用程序。但出于一些可扩展性的原因(例如许可证、网络标准...),我更喜欢使用 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),那么我必须为可视化工具包构建另一个数据模型。我不知道这是否是一个清晰或有效的整合。
再次感谢您的任何建议!