gpt4 book ai didi

java - 推断具有整数基数约束的实例时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:52:28 24 4
gpt4 key购买 nike

我使用 Protege 4.1 alpha 创建了一个 RDF/OWL 文件。我还在 Protege 中创建了一个定义的类,名为 CheapPhone。这个类有一个限制,如下所示:

(hasPrice some integer[< 350])

当一款手机的价格低于 350 美元时,就被推断为 CheapPhone。在 Protege 4.1 alpha 中推断这一点没有问题。但是,我无法使用 Jena 来推断这一点。

我还创建了一个名为 SmartPhone 的已定义类。这个类还有一个限制,如下所示:

(has3G value true) and (hasInternet value true)

只要一部手机具有 3G 和互联网功能,就被推断为智能手机。在这种情况下,在 Protege 和 Jena 中推断这一点都没有问题。

我开始认为 Jena 的默认推理引擎存在问题。我在 Java 中使用的代码如下:

Reasoner reasoner = ReasonerRegistry.getOWLReasoner();

reasoner = reasoner.bindSchema(ontModel);
OntModelSpec ontModelSpec = OntModelSpec.OWL_MEM_MINI_RULE_INF;
ontModelSpec.setReasoner(reasoner);
// Create ontology model with reasoner support
// ontModel was created and read before, so I don't share the code in order
// not to create garbage here
OntModel model = ModelFactory.createOntologyModel(ontModelSpec, ontModel);

OntClass sPhone = model.getOntClass(ns + "SmartPhone");
ExtendedIterator s = sPhone.listInstances();
while(s.hasNext()) {
OntResource mp = (OntResource)s.next();
System.out.println(mp.getURI());
}

这段代码工作完美并返回实例,但是当我更改下面的代码并使其适合 CheapPhone 时,它​​不会返回任何内容。

OntClass sPhone = model.getOntClass(ns + "CheapPhone");

我做错了什么吗?

最佳答案

数据范围([< 350] 位)是 OWL 2 的一项功能。Jena 不支持 OWL 2。请参阅 W3C 的 OWL 2 Implementations页面获取支持 OWL 2 的工具列表 — 您必须使用其中一个。 (那里列出了 Jena 正在进行的一些实验性工作,但这肯定还没有进入 Jena 版本。)

关于java - 推断具有整数基数约束的实例时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3033688/

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