java - 我如何将 Fuseki 与 Jena TDB 一起使用

标签 java sparql jena tdb fuseki

我有一个问题要问你。

我有一个三层存储“Jena TDB”,我读到过我可以为 本地存储的 RDF 数据。 特别是,我看到在文献中与 Jena TDB 一起使用了 Fuseki。 我以这种方式将我的文件 rdf 加载到 Jena TDB 中:

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 的例子中),然后我可以启动我的查询,例如:

select * {graph ; { ?s ?p ?o }}

查询结果为:

Error 404: Not Found

为什么?我做错了什么?

关于 Desktop SPARQL client for Jena (TDB)?帖子,我读到我必须运行命令:

java -jar fuseki-0.1.0-server.jar --update --loc data /dataset

但我不明白数据和数据集是谁。就我而言,我怎么知道这个值?这是我的错误吗?

最佳答案

你是对的,因为你没有理解每个论点的意图。使用您的命令,您所做的是创建一个空的内存数据集并为其分配数据集路径 /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/

相关文章:

rdf - sparql 查询中三元组的顺序会影响结果吗?

SPARQL 查询按案例拆分

java - 如何使 Java-rdfa api 与 Jena Api 一起工作?

sparql - Jena:如何推断数据/性能问题

java - 在类路径上检测到 log4j-over-slf4j.jar 和 slf4j-log4j12.jar,抢占 StackOverflowError

java - 获取 Wicket 口中数据表的行号

java - 从另一个角度提问

java - 处理类的 RunTimeExceptions

sparql - 使用SPARQL和Jena查询DBpedia

java - 在我的 Java 项目中使用 TopBraid 中定义的 SPIN 函数