java - 在java中使用一个方法内生成的本体到另一个方法

标签 java methods ontology

首先,我在 method1 内生成了一个本体。它是成功的。然后在第二种方法中,我需要将这个生成的本体用于另一个过程。我使用了以下代码。它给出了一个错误:

Exception in thread "main" java.lang.NullPointerException.

问题出在哪里?我需要如何将 method1 中生成的本体转移到 method2 中?

     public class OntologyCreation {

        public static void main (String args[]) {

        //main
        OntologyCreation ont = new OntologyCreation(); 
        OntModel m = null;
        String ontoClass = null;
        ont.method2(ontoClass, m);


        public  void method1(OntModel m) {     //for ontologyCreation
        m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
        -----
        -----
        }


        public ArrayList<String> method2(String ontoClass, OntModel m) {   // 2nd method for use generated ontology to another process
        method1(m);
        m.read("http://localhost/myont/ont.owl");      ????????
        ExtendedIterator<OntClass> classes = ((OntModel) m).listClasses(); 
        ----------
        ----------               
         }
        return xx; 
        }

最佳答案

如果您在OntologyCreation实例中多次使用OntModel,您可以使用一个字段来存储变量:

private OntModel m;

public void method1() {
    this.m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM);
}

public ArrayList<String> method2(String ontoClass) {
    method1();
    this.m.read("http://localhost/myont/ont.owl"); // use field value

另一种方法是返回创建的OntModel,如其他答案中所述。

注意:Java 始终是按值传递的,这就是为什么 method2 方法中的值仍为 null,请参阅 Is Java "pass-by-reference" or "pass-by-value"?

关于java - 在java中使用一个方法内生成的本体到另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35668419/

相关文章:

rdf - DatatypeProperty、ObjectProperty 和 FunctionalProperty 之间有什么区别,我应该在什么时候使用它们?

rdf - RDF 和 OWL 有什么区别?

java - 如何使用 Spring 表达式语言以编程方式自定义 bean 表达式的评估

java - 将 org.threeten.bp.* 和 org.joda.time* 转换为相应的 java.time.* 类的最佳方法

java - 如何退出我的主要方法?

java - 我可以在每个对象上使用 contains 方法吗?

java - 如何将 Openllet OWL2 推理器(或任何其他)与 Jena TDB 一起使用?

java - 使用反射 API 时找不到符号字段

java - adapter.getItem() 将返回什么?

PHP 用方法调用查询