0

作業中のJavaアプリケーション内の頂点-エッジ-頂点関係として、OrientDB内にトリプレットを格納しようとしています。OrientDBの使用についての私の理解は、Tinkerpop APIを使用して、次のようなグラフをインスタンス化できることです。

OrientGraph graph = new OrientGraph("local:/tmp/orient/test_db");

グラフをインスタンス化するために行うのはこれだけです。次に、次のようなループで頂点とエッジを接続しようとします(aStatementはsubject-relationship-objectで構成されるトリプレットであることに注意してください)。

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プログラムは実行されて完了したように見えますが、データはデータベースに入れられていません。

4

2 に答える 2

2

少なくとも今のところ、答えはTinkerpop APIを使用するのではなく、OrientAPIを直接使用することのようです。これは私がTinkerpopで行っていたのと同じことですが、OrientDBAPIを使用しています。これは実際に私のデータをデータベースに保存します:

for (Statement s : statements) {
            ODocument sNode = db.createVertex();
            sNode.field("Subject", s.getSubject().toBELShortForm());
            sNode.save();

            ODocument oNode = db.createVertex();
            if (s.getObject() != null) {
                oNode.field("Object", s.getObject().toBELShortForm());
                oNode.save();
            }
            else {
                oNode.field("Object", "null");
                oNode.save();
            }

            RelationshipType r = s.getRelationshipType();
            ODocument edge = db.createEdge(sNode, oNode);
            if (r != null) {
                edge.field(r.toString());
                edge.save();
            }
            else {
                edge.field("no relationship");
                edge.save();
            }
}
于 2012-09-13T15:41:16.947 に答える
2

サーバーのデータベースディレクトリの下にグラフを作成します。OrientDBが「/usr/ local/orient」の下にインストールされていると仮定した例を以下に示します。

OrientGraph graph = new OrientGraph("local:/usr/local/orient/databases/test_db");

server.shを起動すると、このデータベースが正しく設定されていることがわかります。

Lvc @

于 2012-09-13T22:11:19.373 に答える