Neo4j から Gephi に重みを送信できるように、Gephi の apoc プラグインを更新しようとしています。これは、プラグインのオリジナル バージョンです。簡単に組み替えできると思ったのは
private Map<String, Object> data(PropertyContainer pc, Map<String, Map<String, Object>> colors) {
if (pc instanceof Node) {
Node n = (Node) pc;
String labels = Util.labelString(n);
Map<String, Object> attributes = map("label", caption(n), "TYPE", labels);
attributes.putAll(positions());
attributes.putAll(color(labels,colors));
return map(idStr(n), attributes);
}
if (pc instanceof Relationship) {
Relationship r = (Relationship) pc;
String type = r.getType().name();
Map<String, Object> attributes = map("label", type, "TYPE", type);
attributes.putAll(map("source", idStr(r.getStartNode()), "target", idStr(r.getEndNode()), "directed", true));
attributes.putAll(color(type, colors));
return map(String.valueOf(r.getId()), attributes);
}
return map();
}
このようなものに、関係の解析方法を変更し、重みを追加して返す
private Map<String, Object> data(PropertyContainer pc, Map<String, Map<String, Object>> colors) {
if (pc instanceof Node) {
Node n = (Node) pc;
String labels = Util.labelString(n);
Map<String, Object> attributes = map("label", caption(n), "TYPE", labels);
attributes.putAll(positions());
attributes.putAll(color(labels,colors));
return map(idStr(n), attributes);
}
if (pc instanceof Relationship) {
Relationship r = (Relationship) pc;
String type = r.getType().name();
String weight = r.getProperty("weight");
Map<String, Object> attributes = map("label", type, "TYPE", type);
attributes.putAll(map("source", idStr(r.getStartNode()), "target", idStr(r.getEndNode()), "directed", false,"weight",weight));
attributes.putAll(color(type, colors));
return map(String.valueOf(r.getId()), attributes);
}
return map();
}
ここで、私が Java 初心者であり、JAVA データ型と対話する方法がわからないという問題が発生します。プロパティコンテナでこのドキュメントを見つけました。そこでgetProperty(String key)
メソッドを見つけて、上記のように使用しようとしましたが、次のエラーが発生しました
/Users/Hal/Job/neo4j-apoc-procedures/src/main/java/apoc/gephi/Gephi.java:81: エラー: 互換性のない型: オブジェクトを文字列に変換できません String weight = r.getProperty("weight" );
これは基本的な Java の問題だと思いますが、これをデバッグする方法がわかりません。私も試しString weight = r.getProperty(weight);
ましたが、同じエラーが発生しました。助けていただければ幸いです