APIまたはCMDのいずれかでデータをtdbにロードするには、2つの方法があります。 API
経由@ASKWと@AndyS
1のデータのロードに多くのおかげでこれらのコードは一度だけの意志は長い時間がかかり、特にreadModel
ラインを実行する必要があります。
String directory = "tdb";
Dataset dataset = TDBFactory.createDataset(directory);
dataset.begin(ReadWrite.WRITE);
Model tdb = dataset.getDefaultModel();
String source = "yagoMetaFacts.ttl";
FileManager.get().readModel(tdb, source);
dataset.commit(); //Important!! This is to commit the data to tdb.
dataset.end();
データがTDBにロードされた後、私たちは、照会するには、以下のコードを使用することができます。また、データを再度ロードする必要はありません。
CMD
経由
String directory = "path\\to\\tdb";
Dataset dataset = TDBFactory.createDataset(directory);
Model tdb = dataset.getDefaultModel();
String queryString = "SELECT DISTINCT ?p WHERE { ?s ?p ?o. }";
Query query = QueryFactory.create(queryString);
try(QueryExecution qexec = QueryExecutionFactory.create(query, tdb)){
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(System.out, results, query) ;
}
2のデータのロードは、データが
>tdbloader --loc=path\to\tdb path\to\dataset.ttl
>tdbquery --loc=path\to\tdb --query=q1.rq
q1.rqを照会するためにロードするには、クエリを格納するファイルである 結果を取得する必要がありますこのように
-------------------------------------------------------
| p |
=======================================================
| <http://yago-knowledge.org/resource/hasGloss> |
| <http://yago-knowledge.org/resource/occursSince> |
| <http://yago-knowledge.org/resource/occursUntil> |
| <http://yago-knowledge.org/resource/byTransport> |
| <http://yago-knowledge.org/resource/hasPredecessor> |
| <http://yago-knowledge.org/resource/hasSuccessor> |
| <http://www.w3.org/2000/01/rdf-schema#comment> |
-------------------------------------------------------
もちろん、 'readModel'を呼び出すとします。なぜこの線なしで試してみませんか? – AKSW
こんにちは、私はreadModel行なしで実行しようとしますが、結果は得られません。私が必要とするデータセットを示していない場合、どのデータセットをどのように使うべきかをtdbがどのように知っていますか? – Charlotte
私はあなたが 'tdb.commit'を呼び出す必要があると思う、https://jena.apache.org/documentation/tdb/tdb_transactions.html#write-transactionsを参照してください – AKSW