Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何计算耶拿猫头鹰类的个体数?_Java_Jena_Ontology_Owl - Fatal编程技术网

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;

我正在和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);
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来使用本体做一些基本的事情。除此之外,他们的邮件列表是一个提问的好地方