3
我正在将RDF数据加载到JUNG图中以进行一些分析。 所以我创建一个新的图:在JUNG图中表示RDF数据
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)
我得到复制边缘的例外。
任何提示?
UPDATE:此代码似乎运作良好:
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)
}
}
Mulone
非常有用的,谢谢! – Mulone 2011-04-20 21:48:30