1

N-Triples 形式の LinkedMDB のローカル バージョンがあり、クエリを実行したいと考えています。ここで、後でクエリに使用できるデータを格納できる Jena TDB を使用したいと考えています。TDB Java APIのドキュメントを確認しましたが、N-Triples ファイルを読み込んでから SPARQL でクエリを実行できませんでした。次のコードを使用しました。

String directory = "E:\\Applications\\tdb-0.8.9\\TDB-0.8.9\\bin\\tdb";
        Dataset dataset = TDBFactory.createDataset(directory);

        // assume we want the default model, or we could get a named model here
        Model tdb = dataset.getDefaultModel();

        // read the input file - only needs to be done once
        String source = "E:\\Applications\\linkedmdb-18-05-2009-dump.nt";
        FileManager.get().readModel( tdb, source, "N-TRIPLES" );

次の例外を取得しました

Exception in thread "main" com.hp.hpl.jena.tdb.base.file.FileException: Not a directory: E:\Applications\tdb-0.8.9\TDB-0.8.9\bin\tdb
    at com.hp.hpl.jena.tdb.base.file.Location.<init>(Location.java:83)
    at com.hp.hpl.jena.tdb.TDBFactory.createDataset(TDBFactory.java:79)
    at tutorial.Temp.main(Temp.java:14)
4

3 に答える 3

3

これを行うために Java コードは必要ありません (tdbloader2より高速です)。

bin/tdbloader2 --loc /path/to/tdb/store imdb.nt

n-triple ファイルに読み込まれます。次を使用してクエリを実行できます。

bin/tdbquery --loc /path/to/tdb/store "select ...."

tdb コマンド ライン ツールの詳細については、こちら を参照してください

于 2011-04-11T15:08:58.753 に答える
3

ModelJava からTDB でサポートされているものへの読み取りは簡単です。詳細については、TDB wikiを参照してください。たとえば、次のことができます。

// open TDB dataset
String directory = "./tdb";
Dataset dataset = TDBFactory.createDataset(directory);

// assume we want the default model, or we could get a named model here
Model tdb = dataset.getDefaultModel();

// read the input file - only needs to be done once
String source = "path/to/input.nt";
FileManager.get().readModel( tdb, source, "N-TRIPLES" );

// run a query
String q = "select * where {?s ?p ?o} limit 10";
Query query = QueryFactory.create(q);
QueryExecution qexec = QueryExecutionFactory.create(query, tdb);
ResultSet results = qexec.execSelect();
... etc ...

user205512 が述べたようtdbloader2に、Linux または Mac のコマンド ラインから使用できます。これは、大きな RDF ファイルで高速になります。TDB インデックスが作成されたら、ファイルを他のマシンにコピーできます。そのため、データを Linux サーバーにロードしてから、tdbディレクトリ内のすべてのファイルを Windows マシンに送り、開発を続けることができます。

tdbloaderWindows マシンでコマンド ラインから実行するには、 Unix スタイルのスクリプトを実行できるようにcygwinのようなものが必要です。環境変数も設定する必要がありますTDBROOT

于 2011-04-11T22:54:56.303 に答える
0

「nt フォーマット」が実際には「N-Triple」であると仮定すると、Jenaメソッドは N-Triple フォーマットをModel.read(is, base, lang)ロードします。lang"N-Triple"

詳細については、Jena チュートリアル ドキュメントを参照してください。

于 2011-04-11T15:00:08.100 に答える