gpt4 book ai didi

java - 如何在 Jena 中使用传递推理器?

转载 作者:行者123 更新时间:2023-12-01 11:08:24 25 4
gpt4 key购买 nike

我想使用 Jena 设置 TransitiveReasoner,以根据架构和数据集创建新的推理模型。它适用于 RDFS Reasoner,但不适用于 TransitiveReasoner。

这是我第一次进行推理;我查看了耶拿推理支持以及其他教程,但无法解决我的问题。

这是我的java测试代码:

import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.rdf.model.*;
import com.hp.hpl.jena.reasoner.*;
import com.hp.hpl.jena.vocabulary.*;

public class TestInference
{

public static void myTest() throws IOException
{
String NS = "testInference:";
OntModel schema = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);
OntClass m = schema.createClass(NS + "Mention");
OntClass pm = schema.createClass(NS + "PersonMention");
pm.addProperty(RDFS.subClassOf, m);

Model data = ModelFactory.createDefaultModel();
Resource r = data.createResource(NS+"alberto");
r.addProperty(RDF.type, pm);

Reasoner rdfsReasoner = ReasonerRegistry.getRDFSSimpleReasoner();
Reasoner transReasoner = ReasonerRegistry.getTransitiveReasoner();

System.out.println("\n===== RDSF =====");
InfModel rdfsInf = ModelFactory.createInfModel(rdfsReasoner, schema, data);
rdfsInf.write(System.out, "TURTLE");

System.out.println("\n===== Trans =====");
InfModel transInf = ModelFactory.createInfModel(transReasoner, schema, data);
transInf.write(System.out, "TURTLE");
}

public static void main(String[] args) throws IOException
{
myTest();
}

尝试更改 OntModelSpec 没有帮助。

我做错了什么?

预先感谢您的帮助。

最佳答案

TransitiveReasoner 仅处理 RDFS subClassOf 和 RDFS subPropertyOf 的传递性。不提供rdf:type这一步。

A subClassOf B . B subClassOf C => A subClassOf C

但不是这部分:

x type T . T subClassOf S => x type S

https://jena.apache.org/documentation/inference/#transitive

关于java - 如何在 Jena 中使用传递推理器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32670869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com