Pellet Reasoner с местами Jena + PermGen

Я запускаю Pellet с Jena следующим образом:

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 with Jena. Мой TDB или необработанные данные 2,7G. Я запускал ризонер против TDB, но у меня возникла проблема с «PermGenspaces java», хотя я дал программе около 70 ГБ памяти, а ризонер занял только 30 ГБ, а затем разбился. Другими словами, он не достиг максимального объема компьютерной памяти.

Я использую Linux и Java 64 бит, и у меня на сервере 83 ГБ памяти. Я застрял с этим в течение недели.


person Dr.AdeeB    schedule 18.07.2013    source источник


Ответы (1)


Pellet выполняет свои рассуждения в памяти. Использование его с TDB не будет работать так, как вы думаете; TDB — это просто хранилище, Pellet извлечет в память все, что ему нужно для выполнения рассуждений.

Кроме того, сообщение нам о том, что ваши данные 2,7G, бесполезно. Выразительность вашего TBox оказывает такое же или даже большее влияние на производительность рассуждений, чем размер (и размер на диске бесполезен, поскольку знание количества троек является гораздо лучшим показателем).

Поэтому знание того, что находится в вашем TBox, имеет решающее значение для лучшей диагностики. Учитывая, что мы ничего не знаем о том, что вы загружаете в Pellet, я могу только предположить, что TBox очень выразительный, или очень большой, или и то, и другое.

Pellet может работать с большими онтологиями, он прекрасно работает с тезаурусом NCI, но есть TBox, с которыми он не справится. Рассуждения DL сложны, еще сложнее в масштабе.

Вы также можете просмотреть руководство по DL, чтобы получить хороший обзор некоторого полезного справочного материала.

person Michael    schedule 21.07.2013
comment
Это не объясняет, почему OP получает ошибки permgen (или ошибку OOME в целом), и не предлагает каких-либо конкретных предложений по устранению проблемы. - person Stephen C; 22.07.2013
comment
На самом деле, это так. А также это можно сделать без OP, предоставившего TBox, который они пытаются загрузить в Pellet. Учитывая то, что он описал, нет способа исправить то, что у него есть. Он либо уменьшает размер, либо выразительность, и мы не можем сказать, что именно, поскольку он не вводил данные. Вы также можете ознакомиться с руководством по DL. - person Michael; 22.07.2013
comment
В ПОРЯДКЕ. Если вы на самом деле объяснили себя правильно, вы могли бы на самом деле ответить на вопрос. Но ваш ответ настолько наполнен жаргоном и не содержит ссылок, что ОП, вероятно, должен ответить на свой вопрос, прежде чем он сможет понять ваш ответ. Для смеха попробуйте погуглить dl manual и tbox. - person Stephen C; 22.07.2013