我想对具有多种模式(即多种类型的网络节点)和多路复用关系(即多种类型的网络边缘)的网络数据进行一些分析。
分析可能是关于SNA或应用来自图论的任何算法,例如关系强度,中心性,中介性,节点距离,块,聚类等。
源数据相当非结构化,因此我应该首先考虑如何表示,存储和检索数据。
以下是一些想法。我将不胜感激任何反馈或进一步的建议。:)
我知道已经有一些很棒的NoSQL数据库,例如Neo4J,InfoGrid,用于这种类型的应用程序。但出于某些可扩展性原因(例如许可证,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),那么我必须为可视化工具包构建另一个数据模型。 我不知道这是否是一个明确或有效的整合。
再次感谢任何建议!
答案 0 :(得分:2)
如果您想使用SPARQL对RDF数据进行网络分析,可以查看SPARQL 1.1 Property Paths。我相信在Jena / ARQ中它已经实现了ARQ - Property Paths。
属性路径,来自SPARQL的新规范,允许您通过定义图形模式来查询RDF数据模型。图形模式比您在SPARQL 1.0中定义的模式稍微复杂一些。
通过此功能以及应用程序级别的某些逻辑,您可以对数据实施一些有趣的网络分析。