我正在使用neo4j 2.0来存储大量数据。数据量很大,使用ruby脚本生成并保存在graphml文件中,然后使用Gremlin导入neo4j。
g.loadGraphML('graphml.xml')
使用neo4j 2.0,我希望利用一个节点标签的新酷支持。是否可以通过这种方式指定节点应具有哪些标签?或者我真的必须在所有节点之后进行查询,设置标签。
由于
答案 0 :(得分:2)
我不相信有一种方法,至少在Blueprints
内,这是Gremlin构建的界面。我没有看到为label
添加Vertex
的方法,也没有在GraphML中看到类似的内容。
也许Neo4j会更新他们的代码,将标签放入蓝图中Vertex
的属性中,但目前无法使用Gremlin / Tinkerpop获取/设置标签。
还应该注意的是,蓝图只支持我们所知道的稳定版本的Neo4j,所以在蓝图中还不完全支持像2.0这样的里程碑。
答案 1 :(得分:1)
如果您使用的是Neo4j版本2,则可以通过从Blueprint Vertex获取基础Neo4j节点来设置标签。请注意,这会打破封装并增加对Neo4j的依赖,但这可能是必需的。此外,由于最新版本的Blueprint问题,我仍然无法正确使用此代码,但这就是它的工作方式。
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");