我正在使用 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 做错了什么?