2013-07-18 7 views
0

Я бегу Пелле с Йене, как:Pellet Reasoner с Jena + PermGen пространств

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, но у меня возникла проблема с «пространствами PermGen java», хотя я предоставляю программу около 70 Гб памяти, и разумник взял только 30G, а затем разбился. Другими словами, он не достиг Макс памяти компьютера

Я запускаю Linux и Java 64 бит, и у меня есть 83 G-памяти на сервере. Я застрял в течение недели.

ответ

-1

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

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

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

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

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

+0

Это не объясняет, почему OP получает ошибки пермг (или вообще ошибки OOME) или предлагает какие-либо конкретные предложения по устранению проблемы. –

+0

Собственно, это так. Так же, как и OP, обеспечив TBox, который они пытаются загрузить в Pellet. Учитывая то, что он описал, нет способа исправить то, что у него есть. Он либо уменьшает размер, либо выразительность, и мы не можем сказать, что, поскольку он не предоставил вход. Вы также можете проверить справочник DL. – Michael

+0

OK. Если вы действительно объяснили себя правильно, вы действительно можете ответить на этот вопрос. Но ваш ответ так жаргон, и ссылка свободна, что OP, вероятно, должен уметь отвечать на свой вопрос * до того, как он сможет понять ваш ответ. Для смеха попробуйте googling «dl handbook» и «tbox». –