Я пытаюсь сохранить триплеты внутри OrientDB как отношения Vertex-Edge-Vertex внутри приложения Java, над которым я работаю. Мое понимание использования OrientDB заключается в том, что я могу использовать API Tinkerpop и создать экземпляр графика следующим образом:
OrientGraph graph = new OrientGraph("local:/tmp/orient/test_db");
Это действительно все, что я делаю для создания экземпляра графа, затем я пытаюсь соединить вершины с ребрами в петле, подобной этой: (Обратите внимание, что Statement
— это тройка, состоящая из субъект-отношение-объект.)
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-программа запускается и завершается, данные не помещаются в базу данных.