我是 RDF 存储/语义 Web 方面的初学者,所以这是一个相当基本的问题。在 RDBMS 或 Neo4j 中,您可以使用“CREATE DATABASE”命令创建新数据库。但它如何与 apache jena tdb 一起工作呢?
我找不到任何具体的东西,或者答案可能太明显了:我不知道这是否是正确的方法,但似乎可以使用 TDB Datasets 来完成?虽然我不确定这是否与在 RDBMS 中创建数据库相同。
数据集可以看作是 RDBMS 或 Neo4j 数据库的等价物。
您可以创建一个 TDB 数据集并在其中添加 RDF 三元组,如下所示:
String directory = "/Users/orto/tmp/tdbTest";
Dataset dataset = TDBFactory.createDataset(directory);
dataset.begin(org.apache.jena.query.ReadWrite.WRITE);
try {
Model model = dataset.getDefaultModel();
String personURI = "https://example.com/JohnDo";
model.createResource(personURI)
.addProperty(VCARD.FN, "John Do")
.addProperty(VCARD.N,
model.createResource()
.addProperty(VCARD.Given, "John")
.addProperty(VCARD.Family, "Do"));
dataset.commit();
} finally {
dataset.end();
}
要使用 SPARQL 查询来查询数据集,您可以这样做:
String directory = "/Users/orto/tmp/tdbTest";
String queryString = "SELECT ?x WHERE {?x <http://www.w3.org/2001/vcard-rdf/3.0#FN> \"John Do\"}";
Dataset dataset = TDBFactory.createDataset(directory);
Query query = QueryFactory.create(queryString);
dataset.begin(ReadWrite.READ) ;
try (QueryExecution qexec = QueryExecutionFactory.create(query, dataset)) {
ResultSet results = qexec.execSelect();
ResultSetFormatter.out(System.out, results, query);
} finally {
dataset.end();
}
有关更多信息,请阅读文档。