我有一个问题问你。
我有一个三元组“Jena TDB”,我读到我可以设置一个 SPARQL 端点
本地存储的 RDF 数据。
特别是,我看到在文献中与 Jena TDB 一起使用的是 Fuseki。
我以这种方式在 Jena TDB 中加载了我的文件 rdf:
public void store(){
String directory = "C:\\tdb";
String source = "C:\\file1.rdf";
String source1 = "C:\\file2.rdf";
Dataset dataset = openTDB(directory);
Model tdb = loadModel(source, dataset);
dataset.addNamedModel("File1", tdb);
Model tdb1 = loadModel(source1, dataset);
dataset.addNamedModel("File2", tdb1);
tdb.close();
tdb1.close();
dataset.close();
}
public Dataset openTDB(String directory){
// open TDB dataset
Dataset dataset = TDBFactory.createDataset(directory);
return dataset;
}
public Model loadModel(String source, Dataset dataset){
Model tdb = ModelFactory.createDefaultModel();
FileManager.get().readModel( tdb, source, "RDF/XML" );
return tdb;
}
我正在阅读 Apache 站点上的 Fuseki 文档和这篇文章 Desktop SPARQL client for Jena (TDB)? ,但我遇到了问题。
特别是,我下载了 Fuseki 发行版并解压了它。然后,我打开命令提示符,然后转到解压缩 fuseki 的文件夹。
然后,我启动了这个命令:
fuseki-server --update --mem /C://TDB
我在 localhost:3030 地址上打开了浏览器。
在浏览器上,我可以选择数据集(在 C://TDB 的情况下),我可以启动我的查询,例如:
查询结果为:
为什么?我究竟做错了什么?
在 Desktop SPARQL client for Jena (TDB)? 帖子上,我读到我必须运行以下命令:
但我不明白谁是数据和数据集。就我而言,我怎么知道这个值?这是我的错误吗?
最佳答案
你是对的,因为你没有理解每个论点的意图。使用您的命令,您所做的是创建一个空的内存数据集并为其分配数据集路径 /C://TDB
,这几乎肯定不是您想要的。--loc
参数用于传递包含 TDB 数据库的目录的路径,而 /dataset
路径是您要用于通过 Fuseki 访问它的数据集路径
例如,您可以执行以下操作:
java -jar fuseki-VER-server.jar --update --loc /path/to/database /ds
注意 我在这里使用
VER
作为 Fuseki 版本的占位符,因为该值将取决于您下载的 Fuseki 版本。为了在撰写此答案时引用,最新版本是 1.0.2
此命令针对位于
/path/to/database
中的 TDB 数据库启动 Fuseki,数据集路径为 /ds
。因此,您可以将您选择的 SPARQL 客户端指向 http://localhost:3030/ds/query
进行查询或指向 http://localhost:3030/ds/update
进行更新。如果您在 Windows 上运行(从您的问题看来就是这种情况),那么您将执行以下操作:
java -jar fuseki-VER-server.jar --update --loc C:\TDB /ds
它针对位于
C:\TDB
中的 TDB 数据库启动 Fuseki,数据集路径为 /ds
,因此将应用与前一个示例相同的 URL。关于java - 我如何将 Fuseki 与 Jena TDB 一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24798024/