How to use Openllet OWL2 reasoner (or any other) with Jena TDB?(如何在Jena TDB中使用Openllet OWL2推理器(或其他推理器)?)
本文介绍了如何在Jena TDB中使用Openllet OWL2推理器(或其他推理器)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经找到了一种使用Openllet Reasoner和Jena TDB推断三元组存储内容的方法,但它似乎不是最优的。以下是我的解决方案:
Reasoner reasoner = PelletReasonerFactory.theInstance().create();
InfModel infModel = ModelFactory
.createInfModel(reasoner, dataset.getNamedModel(KD.URI));
/*
* To extract the model, a transaction must be open in READ mode.
*/
dataset.begin(ReadWrite.READ);
ModelExtractor me = new ModelExtractor(infModel);
dataset.end();
/*
* To replace a currently existing named model within the dataset, a transaction must be open in WRITE mode.
*/
dataset.begin(ReadWrite.WRITE);
dataset.replaceNamedModel(KD.URI, me.extractModel());
dataset.commit();
dataset.end();
这是可行的,但我想知道一种比实际替换数据集中的命名模型更好的方法。在理想的情况下,我也希望推理是连续的(一旦将三元组插入到图形中,就会当场自动推断数据),但我不知道这是否可能。
推荐答案
对于连续推理过程,您需要设置fuseki配置。
这里是我在一个具有Openllet推理器的持久性TDB数据库上的配置的快速示例。
@prefix : <http://base/#> . @prefix tdb:
<http://jena.hpl.hp.com/2008/tdb#> . @prefix rdf:
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix ja:
<http://jena.hpl.hp.com/2005/11/Assembler#> . @prefix rdfs:
<http://www.w3.org/2000/01/rdf-schema#> . @prefix fuseki:
<http://jena.apache.org/fuseki#> .
:service_tdb_all a fuseki:Service ;
rdfs:label "LABEL_OF_YOUR_SERVICE" ;
fuseki:dataset :dataset ;
fuseki:name "NAME_OF_YOUR_SERVICE" ;
fuseki:serviceQuery "query" , "sparql" ;
fuseki:serviceReadGraphStore "get" ;
fuseki:serviceReadWriteGraphStore
"data" ;
fuseki:serviceUpdate "update" ;
fuseki:serviceUpload "upload" .
:dataset a ja:RDFDataset ;
ja:defaultGraph <#modeInf>; .
<#modeInf> a ja:InfModel;
ja:baseModel <#tdbGraph>;
ja:reasoner [
ja:reasonerClass "openllet.jena.PelletReasonerFactory" ]
.
<#tdbGraph> rdf:type tdb:GraphTDB ;
tdb:dataset :tdb_dataset_readwrite .
:tdb_dataset_readwrite a
tdb:DatasetTDB ; tdb:location
"PATH_TO_YOUR_TDB"
.
这篇关于如何在Jena TDB中使用Openllet OWL2推理器(或其他推理器)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何在Jena TDB中使用Openllet OWL2推理器(或其他推理器)?
猜你喜欢
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01