0

在我的应用程序中执行推理器时遇到问题,我无法捕获推理器生成的推理。它正常执行,printClassTree 向我显示找到了推论,但结果 OWLOntology 没有推论。当前代码:

com.clarkparsia.pellet.owlapiv3.PelletReasoner reasoner = PelletReasonerFactory.getInstance().createReasoner(ontology);
    reasoner.getKB().realize();
    reasoner.getKB().printClassTree();

我应该改变什么?如何捕获推理推理器产生的公理?

4

2 回答 2

0

下面的代码工作正常,这里的“inferredOnotology”包含基础本体以及推断的结果。

请注意,此代码是使用颗粒 2.1 或 2.2 版本测试的,不确定最新版本的颗粒。

        OWLOntology inferredOntology; 
        // Create Reasoner
        OWLReasonerFactory reasonerFactory = new PelletReasonerFactory();
        OWLReasoner reasoner = reasonerFactory.createReasoner(manager);

        // Load the ontologies into the reasoner.
        Set<OWLOntology> importsClosure = manager.getImportsClosure(inferredOntology);
        reasoner.loadOntologies(importsClosure);

        // Reason!
        reasoner.classify();

        InferredOntologyGenerator iog = new InferredOntologyGenerator(reasoner);
        iog.fillOntology(manager, inferredOntology);
于 2013-04-30T06:45:25.200 回答
0

我正在使用此导入

import com.clarkparsia.pellet.owlapiv3.PelletReasoner

使用 Pellet 2.3.0

我这样声明:

PelletReasoner razonador;

并用这个本体初始化:

razonador=com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory.getInstance().createReasoner(ont)

其中 ont 是本体,我只是用它来分类:

razonador.getKB().classify();

希望能帮助到你!

于 2013-08-13T17:38:14.593 回答