1

RDF4J を使用してリモートの GraphDB サーバー上に新しいリポジトリを作成しようとしていますが、問題が発生しています。

これは実行されますが、一見正しくありません

HTTPRepositoryConfig implConfig = new HTTPRepositoryConfig(address);
RepositoryConfig repoConfig = new RepositoryConfig("test", "test", implConfig);
Model m = new

ただし、ワークベンチの「リポジトリの編集」から取得した情報に基づいて、結果は正しくありません。id と title を除いて、すべての値は空です。

これは失敗します

ワークベンチで作成した既存のリポジトリから設定をコピーしようとしましたが、次のエラーで失敗しました:

org.eclipse.rdf4j.repository.config.RepositoryConfigException: 
                         Unsupported repository type: owlim:MonitorRepository

その試みのコードは、ここにあるものに触発されています。上記で説明したように、構成ファイルが既存のリポジトリに基づいていることを除きます。例で提供されているファイルを構成しようとしましたが、それも失敗しました:

org.eclipse.rdf4j.repository.config.RepositoryConfigException: 
       Unsupported Sail type: graphdb:FreeSail

ヒントはありますか?

更新 Henriette Harmse が正しく指摘したように、単にコードにリンクするのではなく、コードを提供する必要がありました。そうすれば、結局、完全なコピーを作成していないことを発見できたかもしれませんが、彼女が答えで指摘した重要な最初の部分を変更しました. 以下の完全なコード:

String address = "serveradr";
RemoteRepositoryManager repositoryManager = new RemoteRepositoryManager( address);
repositoryManager.initialize();

// Instantiate a repository graph model
TreeModel graph = new TreeModel();
InputStream config = Rdf4jHelper.class.getResourceAsStream("/repoconf2.ttl");
RDFParser rdfParser = Rio.createParser(RDFFormat.TURTLE);
rdfParser.setRDFHandler(new StatementCollector(graph));
rdfParser.parse(config, RepositoryConfigSchema.NAMESPACE);
config.close();

// Retrieve the repository node as a resource
Resource repositoryNode = graph.filter(null, RDF.TYPE, RepositoryConfigSchema.REPOSITORY).subjects().iterator().next();

// Create a repository configuration object and add it to the repositoryManager
RepositoryConfig repositoryConfig = RepositoryConfig.create(graph, repositoryNode);

最後の行で失敗します。

ANSWERED @HenrietteHarmse は、以下の回答で正しい方法を示しています。このエラーは、依存関係がないことが原因で発生します。RDF4J を直接使用する代わりに、graphdb-free-runtime を使用する必要がありました。

4

2 に答える 2

0

私はちょうど同じ問題を抱えていたと思います。RDF4J をリモート サービスとして実行するために、GraphDB Free のサンプル コードを使用しましたが、あなたと同じ例外に遭遇しました (サポートされていない Sail タイプ: graphdb:FreeSail)。Henriette Harmse の回答は、この問題に直接対処するものではありませんが、後で問題が発生しないように、そこに記載されている提案に従う必要があります。さらに、RDF4J コードの調査に基づいて、pom.xmlファイルに次の依存関係が必要です (GraphDB 8.5 を想定)。

<dependency>
    <groupId>com.ontotext.graphdb</groupId>
    <artifactId>graphdb-free-runtime</artifactId>
    <version>8.5.0</version>
</dependency>

これは、私が率直に言ってよく知らない META-INF で何らかのサービスの読み込みが行われているためのようです。誰かがコメントで詳細を提供できるかもしれません。この依存関係を追加するための要件も説明に記載されていないようです。これが機能する場合はお知らせください。私たちが行ったのと同じ手順に従った他の人も、この問題を解決できるはずです.

于 2018-04-10T06:44:55.090 に答える