【问题标题】:How to create a Jena Triple Store based on an existing OWL file using Jena API, Fuseki and TDB?如何使用 Jena API、Fuseki 和 TDB 基于现有 OWL 文件创建 Jena Triple Store?
【发布时间】:2018-08-01 08:24:54
【问题描述】:

我目前正在从事一个项目,其中有一个初始 .owl 文件,其中包含我们本体的基本架构。我们使用 Jena API 加载此文件并对其执行不同的操作,例如添加本体类和个体。

我们试图将系统迁移到三重存储,这意味着我们希望加载初始的.owl 文件一次,然后在服务器上执行进一步的操作,而不是一直读取和写入.owl 文件。

我没有完全掌握 Jena 文档中解释的概念,因为它们似乎在各个方向上都存在分歧;然而,我的理解是,我们必须为此使用 Fuseki Embedded 和 Jena TDB。我尝试了以下代码(本例中的OntModel 参数包含我们本体的架构):

public Store(OntModel model) {
    Dataset ds = DatasetFactory.assemble(model);
    File dsDir = new File(ClassLoader.getSystemClassLoader().getResource("ds/")
            .getFile());

    ds.begin(ReadWrite.WRITE);

    server = FusekiServer.create().add(dsDir.getAbsolutePath(), ds).build();
}

这给了我以下错误:org.apache.jena.sparql.ARQException: No root found for type <http://jena.hpl.hp.com/2005/11/Assembler#RDFDataset>。请提供一些使用示例。

【问题讨论】:

    标签: java jena fuseki triplestore tdb


    【解决方案1】:

    DatasetFactory.assemble 表示从同样保存在 RDF 中的描述构造一个新模型(这些在耶拿称为汇编器)。

    如果您想要一个 Fuseki 服务器,请启动一个并使用 UI 创建数据集并加载文件。

    加载数据:

    使用命令行tdbloader 创建 TDB 数据集并将其加载到目录“DIRECTORY_NAME”中。这只需要做一次。

    每次运行服务器:

    Dataset ds = TDBFactory.createDataset("DIRECTORY_NAME");
    FusekiServer server = FusekiServer.create().add("/myName", ds).build();
    server.start();
    

    数据集 HTTP SPARQL 接口(编程)可在 http://localhost:3030/myName 获得。

    如果您想要查询 UI,请使用完整的 Fuseki 服务器。

    【讨论】:

    • 我需要一家三合店,但仅限本地。我还需要使用 Fuseki 吗?有没有办法不用TDB?
    • 直接使用数据集ds(带有事务-参见Txn)。
    • 我仍然无法加载我的文件。让我们暂时忘记它:我有一个包含所有三元组的OntModel,我希望所有这些三元组都进入我的三元组存储。我该怎么做?请提供一个明确的例子。
    • 进程中的“三重存储”是类“数据集”。请参阅“数据集工厂”。
    猜你喜欢
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多