gpt4 book ai didi

rdf - 使用Pellet作为推理机的OutOfMemoryError

转载 作者:行者123 更新时间:2023-12-04 14:44:40 25 4
gpt4 key购买 nike

我正在尝试使用Pellet推断数据,但是我的应用程序总是崩溃
在推理过程中由于“ OutOfMemoryError:Java堆空间”。

正如其他地方所建议的,我已经尝试增加堆大小并
当前,我正在使用以下VM参数:“ -XX:MaxPermSize = 256m
-Xmx6144m”。此外,我必须设置'PelletOptions.USE_CONTINUOUS =
”,但到目前为止,我只能将崩溃延迟几分钟。
(到目前为止,最长运行时间:30分钟)。

我将数据存储在Jena TDB三重存储中。它的总大小为170 mb
包含962117条语句。本体已建模为
Protege,与隐士或
事实++(当然,此时没有数据)。我要的陈述
要推断的对象已使用等效类建模(例如:A和
(hasX一些X)),逆属性(hasX <-> isXOf)和一些可传递的
属性。一共有55个类别:14个根类别,11个等效类别
(一个根类的所有子类型)。目前有14堂课
已添加到Tripestore。

我也用拼写法分析我的本体,但是我不确定哪个
从此结果得出的结论是:

[Untyped classes]
- http://www.w3.org/2002/07/owl#AllDisjointClasses

[Untyped object roles]
- http://www.w3.org/2002/07/owl#topObjectPriority
- http://www.w3.org/2002/07/owl#members

[Untyped datatype roles]
- http://www.w3.org/2002/07/owl#qualifiedCardinality

[Untyped individuals]
- 4 BNodes


这是我创建InfModel的代码:

 Dataset dataset = TDBFactory.createDataset(..);
Model model = dataset.getDefaultModel();

OntModel ont = ModelFactory.createOntologyModel(PelletReasonerFactory.THE_SPEC,model);
ont.read("file:.." , "RDF/XML");

PelletOptions.USE_CONTINUOUS_RULES = true;
Reasoner reasoner = PelletReasonerFactory.theInstance().create();
reasoner = reasoner.bindSchema(ont);

InfModel infModel = infModel = ModelFactory.createInfModel(reasoner, model);


这实际上就是我查询数据的方式:

 QueryExecution qe = QueryExecutionFactory.create("SELECT ...", infModel);
Resultset rs = qe.execSelect();

while(rs.hasNext())
{
QuerySolution sol = rs.nextSolution();
...
}
qe.close();


如您所见,在查询时,我都收到了各种异常
数据,准备或验证InfModel。你有什么想法吗
否则我可以尝试解决此错误?

 java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
at java.lang.AbstractStringBuilder.append(Unknown Source)
at java.lang.StringBuilder.append(Unknown Source)
at java.net.URLStreamHandler.parseURL(Unknown Source)
at sun.net.www.protocol.file.Handler.parseURL(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at java.net.URL.<init>(Unknown Source)
at sun.misc.URLClassPath$FileLoader.getResource(Unknown Source)
at sun.misc.URLClassPath.getResource(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorCheck.warn(QueryIteratorCheck.java:114)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorCheck.dump(QueryIteratorCheck.java:95)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorCheck.checkForOpenIterators(QueryIteratorCheck.java:68)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorCheck.close(QueryIteratorCheck.java:50)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorWrapper.closeIterator(QueryIteratorWrapper.java:50)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorBase.close(QueryIteratorBase.java:184)
at com.hp.hpl.jena.sparql.engine.iterator.QueryIteratorCloseable.close(QueryIteratorCloseable.java:39)
at com.hp.hpl.jena.sparql.engine.QueryExecutionBase.close(QueryExecutionBase.java:180)


java.lang.OutOfMemoryError: Java heap space
at shared.SharedObjectFactory.build(SharedObjectFactory.java:303)
at aterm.pure.PureFactory.makeAppl(PureFactory.java:191)
at aterm.pure.PureFactory.makeAppl(PureFactory.java:185)
at aterm.pure.PureFactory.makeAppl(PureFactory.java:228)
at org.mindswap.pellet.utils.ATermUtils.makeLiteral(ATermUtils.java:245)
at org.mindswap.pellet.ABox.addLiteral(ABox.java:1696)
at org.mindswap.pellet.tableau.completion.rule.SomeValuesRule.applySomeValuesRule(SomeValuesRule.java:174)
at org.mindswap.pellet.tableau.completion.rule.SomeValuesRule.apply(SomeValuesRule.java:64)
at org.mindswap.pellet.tableau.completion.rule.AbstractTableauRule.apply(AbstractTableauRule.java:64)
at org.mindswap.pellet.tableau.completion.SROIQStrategy.complete(SROIQStrategy.java:157)
at org.mindswap.pellet.ABox.isConsistent(ABox.java:1423)
at org.mindswap.pellet.ABox.isConsistent(ABox.java:1260)
at org.mindswap.pellet.KnowledgeBase.consistency(KnowledgeBase.java:1987)
at org.mindswap.pellet.KnowledgeBase.isConsistent(KnowledgeBase.java:2061)
at org.mindswap.pellet.jena.PelletInfGraph.prepare(PelletInfGraph.java:247)
at org.mindswap.pellet.jena.PelletInfGraph.prepare(PelletInfGraph.java:230)
at com.hp.hpl.jena.rdf.model.impl.InfModelImpl.prepare(InfModelImpl.java:89)


java.lang.OutOfMemoryError: Java heap space
at org.mindswap.pellet.tableau.branch.DisjunctionBranch.tryBranch(DisjunctionBranch.java:197)
at org.mindswap.pellet.tableau.branch.Branch.tryNext(Branch.java:117)
at org.mindswap.pellet.tableau.completion.rule.ChooseRule.apply(ChooseRule.java:82)
at org.mindswap.pellet.tableau.completion.rule.ChooseRule.apply(ChooseRule.java:56)
at org.mindswap.pellet.tableau.completion.rule.AbstractTableauRule.apply(AbstractTableauRule.java:64)
at org.mindswap.pellet.tableau.completion.SROIQStrategy.complete(SROIQStrategy.java:157)
at org.mindswap.pellet.ABox.isConsistent(ABox.java:1423)
at org.mindswap.pellet.ABox.isConsistent(ABox.java:1260)
at org.mindswap.pellet.KnowledgeBase.consistency(KnowledgeBase.java:1987)
at org.mindswap.pellet.KnowledgeBase.isConsistent(KnowledgeBase.java:2061)
at org.mindswap.pellet.jena.PelletInfGraph.prepare(PelletInfGraph.java:247)
at org.mindswap.pellet.jena.PelletInfGraph.prepare(PelletInfGraph.java:230)
at org.mindswap.pellet.jena.PelletInfGraph.validate(PelletInfGraph.java:564)
at com.hp.hpl.jena.rdf.model.impl.InfModelImpl.validate(InfModelImpl.java:111)

最佳答案

infModel的查询显然导致Pellet生成数百个owl:differentFrom语句。解决方案是使用ModelExtractor

ModelExtractor ext = new ModelExtractor(inf); 
Model m = ext.extractModel();
QueryExecution qe = QueryExecutionFactory.create("SELECT ...", m);

关于rdf - 使用Pellet作为推理机的OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10279894/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com