我目前正在一个项目中,该项目存在一个初始的.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>
。请提供一些用法示例。 最佳答案
DatasetFactory.assemble
表示从描述中构造一个新模型,该描述也保存在RDF中(在Jena中称为汇编器)。
如果需要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服务器。
关于java - 如何使用Jena API,Fuseki和TDB基于现有的OWL文件创建Jena Triple Store?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51628608/