Java 如何计算耶拿猫头鹰类的个体数?
我正在和Jena一起研究OWL模型的自动实例化。因为每个人都需要一个唯一的标识符 我如何知道给定OWL类的个体数量,以便为该类中要实例化的下一个个体生成新id 我使用listIndividuals方法尝试了下面的Jena Java代码,在这里,但它不起作用Java 如何计算耶拿猫头鹰类的个体数?,java,jena,ontology,owl,Java,Jena,Ontology,Owl,我正在和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;
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);
Jena API中有什么方法可以帮助我更轻松地完成这项工作吗
如果没有!如何更正我的代码
谢谢你的回复 如果我算对了,不管怎样,你都会犯一个差一个的错误。尝试:
public static int individualSize(Resource res){
int size = 0;
ExtendedIterator<Individual> individuals = domainModel.listIndividuals(res);
while(individuals.hasNext()) {
individuals.next();
size++;
}
return size;
}
如果我算对了,不管怎样你都会犯一个错误。尝试:
public static int individualSize(Resource res){
int size = 0;
ExtendedIterator<Individual> individuals = domainModel.listIndividuals(res);
while(individuals.hasNext()) {
individuals.next();
size++;
}
return size;
}
您的代码:
while (individuals.next() != null){ size++; }
不是使用迭代器的正确方法,您需要的是:
while (individuals.hasNext()) {
size++;
individuals.next();
}
如果Model.read尚未关闭该FileInputStream,则可能还需要关闭该FileInputStream
此外,如果您正计划使用OWL,您将希望了解如何使用它,这是一个以OWL为中心的JavaAPI。Jena很棒,但它更以RDF/triples为中心,这使我的经验表明,至少在真正的基于OWL的应用程序中使用它很麻烦。您可能还想考虑使用专用的OWL推理机,例如,或者如果您打算在应用程序中进行大量推理。您的代码:
while (individuals.next() != null){ size++; }
不是使用迭代器的正确方法,您需要的是:
while (individuals.hasNext()) {
size++;
individuals.next();
}
如果Model.read尚未关闭该FileInputStream,则可能还需要关闭该FileInputStream
此外,如果您正计划使用OWL,您将希望了解如何使用它,这是一个以OWL为中心的JavaAPI。Jena很棒,但它更以RDF/triples为中心,这使我的经验表明,至少在真正的基于OWL的应用程序中使用它很麻烦。您可能还想考虑使用专门的OWL推理机,例如,或者您是否打算在应用程序中进行大量推理。感谢@Micheal的回复。你猜对了,我必须通过创建实例、更新模型、创建和添加类、ObjectProperties甚至DatatypeProperties来管理ontologie。那么根据您的经验,使用owlapi管理本体比使用Jena更容易?你有关于owlapi的初始化教程的链接吗?如果你去owlapi网站,你会在他们的文档部分看到他们大概有24个例子,告诉你如何通过owlapi来使用本体做一些基本的事情。除此之外,他们的邮件列表是一个提问的好地方。此外,现在还有一个,那就是JenaThanks@Micheal中的OWL-API,供您回复。你猜对了,我必须通过创建实例、更新模型、创建和添加类、ObjectProperties甚至DatatypeProperties来管理ontologie。那么根据您的经验,使用owlapi管理本体比使用Jena更容易?你有关于owlapi的初始化教程的链接吗?如果你去owlapi网站,你会在他们的文档部分看到他们大概有24个例子,告诉你如何通过owlapi来使用本体做一些基本的事情。除此之外,他们的邮件列表是一个提问的好地方