gpt4 book ai didi

java - 如何计算耶拿猫头鹰类的人数?

转载 作者:行者123 更新时间:2023-11-29 07:14:13 24 4
gpt4 key购买 nike

我正在与 Jena 一起研究 OWL 模型的自动实例化。因为每个人都需要一个唯一的标识符。

我如何知道给定 OWL 类的个体数量,以便为下一个个体生成新的 id 以在该类中实例化?

我已经尝试使用方法 listIndividuals 来处理以下 Jena Java 代码,这里是,但它不起作用。

import com.hp.hpl.jena.ontology.*;
import com.hp.hpl.jena.model.*;
import com.hp.hpl.jena.util.iterator.ExtendedIterator;

public static int individualSize(Resource res){

int size = 0;

ExtendedIterator<Individual> individuals = domainModel.listIndividuals(res);

while (individuals.next() != null){ size++; }

return size;
}

static String xmlbase = "http://www.semantic.org/ontologies/exemple.owl#";
OntModel domainModel = ModelFactory.createOntologyModel(ProfileRegistry.OWL_DL_LANG);
domainModel.read((new FileInputStream(ontoInPath)), null);

int nextId = individualSize(domainModel.getOntClass(xmlbase+"Event"));

System.out.print(nextId);

错误是:

Exception in thread "main" java.util.NoSuchElementException
at com.hp.hpl.jena.util.iterator.NiceIterator.ensureHasNext(NiceIterator.java:37)
at com.hp.hpl.jena.util.iterator.UniqueExtendedIterator.next(UniqueExtendedIterator.java:77)
at soctrace.Intology.individualSize(Intology.java:225)
at soctrace.Intology.manageOntologies(Intology.java:124)
at soctrace.Intology.main(Intology.java:65)

Jena API 有什么方法可以帮助我更轻松地完成这项工作吗?

如果没有!我该如何更正我的代码。

感谢您的任何回复!

最佳答案

您的代码:

while (individuals.next() != null){ size++; }

不是迭代器的正确使用方法,你要的是这样的:

while (individuals.hasNext()) {
size++;
individuals.next();
}

如果 Model.read 尚未这样做,您可能还想关闭该 FileInputStream。

此外,如果您打算使用 OWL,您将需要考虑使用 OWLAPI这是一个以 OWL 为中心的 Java API。 Jena 很棒,但它更以 RDF/triples 为中心,这使得它很难用于真正的基于 OWL 的应用程序(至少以我的经验)。您可能还想研究使用专用的 OWL 推理机,例如 HermiTPellet如果您要在应用程序中进行大量推理。

关于java - 如何计算耶拿猫头鹰类的人数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11101961/

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