0

Stardog を使用して、さまざまなソースからの一連のトリプルを保存しています。Jena を使用してデータを収集し、単一の Jena グラフにマージします。これらのトリプルはすべて ABoxes の一部です。

  1. Stardog が TBox も ABox グラフとマージする必要があるかどうかはわかりません。そうしないと、Stardog がデータに対してどのように推論を行うかがわからないためです。他のトリプル ストアのように、TBox を別々に保存して使用するオプションは見たことがありません。TBox を Jena グラフに含める必要がありますか、それとも TBox を別の Stardog データベースに格納する方法があるので、ABoxes のデータベースを照会するときにそれも考慮されますか?

  2. Jena グラフ (100 万から 700 万のトリプルの間で変化します) を Stardog にロードするオプションを検討しています。

    • 私があまり好きではないオプションの 1 つは、グラフをファイルに書き込み、クライアントを実行してそれを Stardog にロードすることです。データが Jena グラフにある場合は、直接的な解決策をお勧めします。
    • もう 1 つのオプションは、トリプルを 1 つずつロードすることです ( java での stardog sparql insert query の例)。

Jena からグラフ全体をロードするエレガントな方法はありますか?

編集

ディストリビューションの例に基づくコードの試み:

Server aServer = Stardog.buildServer()
        .bind(new InetSocketAddress("10.0.0.1", 5820))
        .start();

AdminConnection aAdminConnection = AdminConnectionConfiguration.toServer("...").credentials("admin", "admin").connect();
        if (aAdminConnection.list().contains("test")) {
            aAdminConnection.drop("test");
        }

Connection aConn = aAdminConnection.memory("test").create(file).connect();

Model aModel = SDJenaFactory.createModel(aConn);

編集 2:コードの一部を修正しました。

Stardog ドキュメントの追加情報

4

1 に答える 1

1

1) TBox が Stardog 内にある限り、どこに TBox を保存するかは問題ではありません。デフォルトでは、Stardog は TBox のデフォルト グラフを調べて、自動的に抽出します。ただし、これはドキュメントに記載されてreasoning.schema.graphsいる構成オプションを使用して構成できます。一般に、Stardog で推論がどのように実装されているかについての章は、役に立つ読み物であると思われるかもしれません。

2) トリプルを 1 つずつロードしないでください。あまり効率的ではありません。Stardog にデータを取得する最速の方法は、データベースの作成時にデータをロードすることです。このインスタンスでは、最適な書き込み速度を実現するバルク ローダーを使用できます。データベースが作成されると、SNARL API、CLI、または Jena API を使用してファイルをロードできます。これは、データベースにデータを取り込むための 2 番目に高速な方法です。Jena API を使用している場合は、それらBulkUpdateHandlerを直接使用するか、 loadを使用する必要がありますRDF/XML。そのリーダーは、舞台裏でバルク アップデーターを使用しているようです。

編集:

コードが正しくありません。実際のソケットとポートでサーバーをバインドしてから、実行していない組み込みサーバーに接続しようとしています。例に示すように組み込みサーバーを使用するようにサーバーの開始を変更するか、 を使用しAdminConnectionConfigurationてサーバー URL を指定するように の初期化を変更する必要がありますtoServer

さらに、メソッドが新しいデータベースに一括ロードするファイルのリストを受け取るを返す便利なメソッドcreateMemoryを使用する代わりに呼び出すことができます。AdminConnection#memoryDatabaseBuildercreate

何百万ものトリプルを格納するために、ディスクベースのデータベースを使用することも検討する必要があります。

于 2014-06-21T13:58:21.760 に答える