我正在尝试将 OrientDB 中的三元组存储为我正在处理的 Java 应用程序中的 Vertex-Edge-Vertex 关系。我对使用 OrientDB 的理解是我可以使用 Tinkerpop API 并实例化这样的图:
OrientGraph graph = new OrientGraph("local:/tmp/orient/test_db");
这就是我实例化图形所做的一切,然后我尝试在这样的循环中连接顶点和边:(注意 aStatement
是由主体-关系-对象组成的三元组。)
for (Statement s : statements) {
Vertex a = graph.addVertex(null);
Vertex b = graph.addVertex(null);
a.setProperty("Subject", s.getSubject().toBELShortForm());
RelationshipType r = s.getRelationshipType();
if (s.getObject() != null) {
b.setProperty("Object", s.getObject().toBELShortForm());
Edge e = graph.addEdge(null, a, b, r.toString());
}
else {
b.setProperty("Object", "null");
Edge e = graph.addEdge(null, a, b, "no-relationship");
}
}
然后我循环遍历图形的顶点并将它们打印出来,如下所示:
for (Vertex v : graph.getVertices()) {
out.println("Vertex: " +v.toString());
}
它确实打印了很多顶点,但是当我通过命令行使用 登录服务器时server.sh
,我看到的只是 3 条记录ORole
和 4 条记录OUser
。我在这里想念什么?因为看起来虽然我的 java 程序运行并完成,但数据并没有被放入数据库。