Graph 用JUNG图表示RDF数据

Graph 用JUNG图表示RDF数据,graph,rdf,ontology,jung,Graph,Rdf,Ontology,Jung,我正在将RDF数据加载到JUNG图中进行一些分析。 因此,我创建了一个新的图形: DirectedGraph g=新的DirectedSparseGraph() 我创建了一个用于指定链接的支持类: public class GraphLink { String uri; Float weight; } 然后我像这样填充它: for each rdf triple <s,p,o>{ g.addVertex( s ) g.addVertex( o ) GraphL

我正在将RDF数据加载到JUNG图中进行一些分析。 因此,我创建了一个新的图形:

DirectedGraph g=新的DirectedSparseGraph()

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

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 )
}
我得到了一个复制边的例外

有什么提示吗

更新:此代码似乎运行良好:

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 )
    }
}
DirectedGraph g=新的DirectedSparseGraph()
//列出所有语句
//TODO:非常大的图形的分页。
断言m.size()<10000000,“图形太大。”
m、 listStatements()。每个{stm->
RDFNode sub=stm.getSubject()
RDFNode obj=stm.getObject()
g、 addVertex(sub)
if(包括横向| | |!obj.isLiteral()){
g、 添加顶点(obj)
g、 附录(stm、sub、obj、EdgeType.DIRECTED)
}
}

Mulone

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

从自述文件:

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);
Model Model=FileManager.get().loadModel(“http://example.com/data.rdf");
图g=新JenaJungGraph(模型);
布局布局=新的FRG布局;
布局。设置尺寸(新尺寸(300300));
基本可视化服务器,即=
新的基本可视化服务器(布局);
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);