我想对具有多种模式(即多种类型的网络节点)和多重关系(即多种类型的网络边缘)的联网数据进行一些分析。
分析可能是关于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或RDF,我必须首先通过查询JGarphT存储来构造一个子图,然后将其转换为JUNG或JGraphT使用的数据模型。如果我想要额外的可视化(既不是JUNG也不是JGraphT),那么我必须为可视化工具包构造另一个数据模型。我不知道这是一个清晰有效的集成。
再次感谢您的建议!
发布于 2010-09-03 21:44:36
如果您想用SPARQL对RDF数据进行网络分析,可以看看SPARQL 1.1 Property Paths。我相信在Jena/ARQ中,它已经被ARQ - Property Paths实现了。
SPARQL的新规范中的属性路径允许您通过定义图形模式来查询RDF数据模型。图模式比您在SPARQL 1.0中定义的模式要复杂一些。
有了这个特性,再加上应用程序级的一些逻辑,您也许能够对您的数据实现一些有趣的网络分析。
https://stackoverflow.com/questions/3634852
复制相似问题