0

我正在使用 neo4j 2.0 存储大量数据。使用 ruby​​ 脚本生成大量数据并保存在 graphml 文件中,然后使用 Gremlin 导入 neo4j。

g.loadGraphML('graphml.xml')

在 neo4j 2.0 中,我想利用节点上的标签新的很酷的支持。是否可以通过这种方式指定节点应该具有哪些标签?或者我真的必须事后对所有节点进行查询,设置它们的标签。

谢谢

4

2 回答 2

2

我不相信有一种方法,至少在 内部Blueprints,它是 Gremlin 所基于的接口。我看不到label为a 添加 a 的方法Vertex,在 GraphML 中也看不到类似的东西。

也许 Neo4j 会更新他们的代码以将标签放入Vertex蓝图中的属性中,但目前无法使用 Gremlin/Tinkerpop 获取/设置标签。

还应该注意的是,Blueprints 仅支持我们所知道的 Neo4j 的稳定版本,因此 Blueprints 还不能完全支持里程碑 2.0 之类的东西。

于 2013-06-28T18:38:10.000 回答
1

如果您使用的是 Neo4j 版本 2,您可以通过从 Blueprint Vertex 获取底层 Neo4j 节点来设置标签。请注意,这会破坏封装并增加对 Neo4j 的依赖,但这可能是必需的。此外,由于最新版本的蓝图存在问题,我仍然无法正确使用此代码,但这就是它的工作方式。

import com.tinkerpop.blueprints.Vertex;
import com.tinkerpop.blueprints.impls.neo4j.Neo4jGraph;
import com.tinkerpop.blueprints.impls.neo4j.Neo4jVertex;
import org.neo4j.graphdb.Node;

// ...

Vertex vertex = graph.addVertex(null);
Neo4jVertex neo4jVertex = (Neo4jVertex) vertex;
Node node = neo4jVertex.getRawVertex();
node.addLabel("SomeLabel");
于 2013-11-25T05:04:12.423 回答