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();
}

我在Pellet Reasoner 下与 Jena有过上一篇文章。我的 TDB 或原始数据是 2.7G。我一直在针对 TDB 运行推理器,但我遇到了“PermGen 空间 java”的问题,尽管我给程序提供了 70G 左右的内存,推理器只占用了 30G,然后就崩溃了。换句话说,它没有达到计算机内存的最大值

我正在运行 Linux 和 Java 64 位,服务器中有 83 G 内存。我已经坚持了一周。

4

1 回答 1

-1

Pellet在内存中执行其推理。将它与 TDB 一起使用不会像我怀疑你认为的那样工作。TDB 只是存储,Pellet 会将执行推理所需的任何内容提取到内存中。

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

因此,了解您的 TBox 中的内容对于更好的诊断至关重要。鉴于我们对您向 Pellet 提供的内容一无所知,我只能猜测 TBox 非常富有表现力,或者非常大,或者两者兼而有之

Pellet 可以与大型本体一起使用,它可以很好地处理 NCI 词库,但是它无法处理 TBox。深度学习推理很难,在规模上更难。

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

于 2013-07-21T23:26:45.870 回答