0

Java を使用して stardog で新しいデータベースを作成しています。

データベースを作成し、localhost に RDF ファイルをインポートすると、動作します。

しかし、リモート サーバーでデータベースを作成しているときに、同じ RDF ファイルに対してファイルが見つからないという例外が発生します。

私のコードを見てください

    System.out.println("start updating db");
    String myDBName = "myDB" ;

    StardogDBMS dbms =
            //StardogDBMS.toServer("snarl://localhost:5820/")
            StardogDBMS.toServer("snarl://myRemoteServer:5820/")
            .credentials("admin", "admin".toCharArray()).login();

    File file = new File("src\\main\\webapp\\test.rdf"))

    System.out.println("creating " + myDBName +" and loading the rdf file" );

    dbms.disk(myDBName).create(file));
    dbms.logout();
    System.out.println("created " + myDBName +" and loaded the rdf file" );

助けてください。RDFファイルをインポートするためにストリームをデータベースに渡すようなターンアラウンドはありますか? これが私が得ている例外です。

start updating db
creating myDB and loading the rdf file      
File: xxx\xxxx\test.RDF Message: java.io.FileNotFoundException: xxx\xxxx\test.RDF (No such file or directory)
created myDB and loaded the rdf file
4

3 に答える 3

2

このエラー メッセージは、ディスク データベースのバルク ローダーが指定されたファイルを見つけられないことを示しています。SNARL プロトコルを使用している場合、バルク ロードのためにクライアントからサーバーにファイルが転送されません。これがおそらくエラーの原因です。

サーバーとクライアントの両方が同じマシン上で実行されている場合、サーバーがそれを読み取るときに相対パスが正しくない可能性が高く、そのパスは STARDOG_HOME からの相対パスであり、その場合は正しくない可能性があります。したがって、両方が同じマシン上にある場合は、絶対パスを使用すると機能するはずです。それらが別々のマシンにある場合は、サーバーのあるマシンの CLI から一括ロードします。

HTTP を使用する場合、ファイルは転送されますが、ファイルをサーバーに送信するネットワーク オーバーヘッドが原因で、一括読み込みのパフォーマンスが低下します。繰り返しますが、サーバーを備えたマシンで一括ロードを実行するのが最善です。

于 2013-04-13T13:26:49.227 に答える
1

何が行われているのかを知らずに言うのは難しいですが、ローカルに存在するがリモート サーバーには存在しないdbms.disk(myDBName).create(file));ファイルを読み取ろうとしているのではありませんか?src\\main\\webapp\\test.rdf

于 2013-04-12T12:22:57.337 に答える