拥有耶拿+PermGen空间的PelletReasoner



我正在用耶拿运行佩莱,如下所示:

public void storeInferredModel(Data data) {
    System.out.println("creating inferred dataset ");
    Dataset dataset = TDBFactory.createDataset(data.getInferredResultsPath());
    System.out.println("creating OntModel ");
    OntModel Infmodel = ModelFactory.createOntologyModel(
                          PelletReasonerFactory.THE_SPEC, 
                          dataset.getNamedModel(this.URL));
    System.out.println("adding schema (OWL) to OntModel");
    Infmodel.add(this.owl);
    System.out.println("adding data (RDF) to OntModel ");
    Infmodel.add(data.tdb);
    System.out.println("creating ModelExtractor ");
    ModelExtractor ext = new ModelExtractor(Infmodel);
    System.out.println("replacing OntModel by the Extracted Model");
    dataset.replaceNamedModel(this.URL, ext.extractModel());
    System.out.println("saving inferred model");
    Infmodel.close();
    System.out.println("closing inferred dataset");
    dataset.close();
}

我之前在佩莱·里森纳手下和耶娜一起工作。我的TDB或原始数据是2.7G。我一直在针对TDB运行推理机,但我遇到了"PermGen spaces java"的问题,尽管我给了程序大约70G的内存,但推理机只占用了30G,然后崩溃了。换句话说,它没有达到计算机内存的最大值

我运行的是Linux和Java 64位,服务器中有83G内存。我已经坚持了一个星期了。

佩莱在内存中进行推理。与TDB一起使用它不会像我怀疑的那样工作;TDB只是一个存储器,佩莱会把它需要的任何东西拉到内存中进行推理。

此外,告诉我们您的数据是2.7G并没有任何用处。TBox的表现力对推理性能的影响与大小一样大,甚至更大(磁盘上的大小没有用处,知道三元组的数量是一个更好的指标)。

因此,了解你的TBox中有什么对更好的诊断至关重要。考虑到我们对你给佩莱喂什么一无所知,我只能猜测TBox非常有表现力,或者非常大,或者两者兼而有之。

Pellet可以处理大型本体,它可以很好地处理NCI词库,但也有TBox无法处理。DL推理很难,甚至在规模上更难。

您可能还想查阅DL手册,以便对一些有用的背景材料进行良好的审查。

相关内容

  • 没有找到相关文章

最新更新