graph - 在 JUNG 图中表示 RDF 数据

标签 graph rdf ontology jung

我正在将 RDF 数据加载到 JUNG 图中以进行一些分析。 所以我创建了一个新图表:

DirectedGraph g = new DirectedSparseGraph<String,GraphLink>();

我创建了一个用于指定链接的支持类:

public class GraphLink {
  String uri;
  Float weight;
}

然后我像这样填充它:

for each rdf triple <s,p,o>{
  g.addVertex( s )
  g.addVertex( o )

  GraphLink link = new GraphLink()
  link.uri = pred
  link.weight = some weight;
  g.addEdge( link, s, o )
}

这是一种有效的方法还是有更好的方法? 边缘的表示非常违反直觉,但如果我这样做:

g.addEdge( p, s, o )

我得到重复边的异常。

有什么提示吗?

更新:这段代码似乎运行良好:

DirectedGraph<RDFNode,Statement> g = new DirectedSparseGraph<RDFNode,Statement>()
// list all statements
// TODO: pagination for very large graphs.
assert m.size() < 10000000,"graph is too large."
m.listStatements().each{ stm->
    RDFNode sub = stm.getSubject()
    RDFNode obj = stm.getObject()
    g.addVertex( sub )
    if ( includeLiterals || !obj.isLiteral() ){
        g.addVertex( obj )
        g.addEdge( stm, sub, obj, EdgeType.DIRECTED )
    }
}

乐龙

最佳答案

这可能根本不是您想要的,但您可以尝试 JenaJung , 它将 jena 模型呈现为荣格图。

来自 README 文件:

Model model = FileManager.get().loadModel("http://example.com/data.rdf");
Graph<RDFNode, Statement> g = new JenaJungGraph(model);

Layout<RDFNode, Statement> layout = new FRLayout(g);
layout.setSize(new Dimension(300, 300));
BasicVisualizationServer<RDFNode, Statement> viz =
    new BasicVisualizationServer<RDFNode, Statement>(layout);

关于graph - 在 JUNG 图中表示 RDF 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5733922/

相关文章:

SPARQL - 返回主题列表的相互对象

Python Sparql 查询本地文件

algorithm - 拓扑排序变体算法

rdf - 基于 SParQL 中的 URI 进行过滤

ios - 在 iOS 上高效绘制多点图表

database - SPARQL 中的基数是什么意思?

owl - 为什么OWA(开放世界假设)在这种情况下无法推断?

sparql - 为什么过滤器在这种情况下不起作用?

graph - 如何将新属性添加到 gremlin 中的现有顶点?

iphone - x Axis 上带有月份的核心图 (iphone)