0

我正在使用 Jena 运行 Pellet,如下所示:

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 运行推理器,但我遇到了“GC 开销限制超出 java”的问题,尽管我给程序提供了 45G 左右的内存,推理器只占用了 30G,然后就崩溃了。换句话说,它没有达到计算机内存的最大值。

另一个问题是关于 Pellet,当我在小数据集中运行上面的代码时,我得到了太多相同的 AS、不相交等。这是一个错误还是我对 Pellet 做错了什么?

4

0 回答 0