我正在尝试使用 Jena API 复制 OWL 本体,每次都向该本体添加一个新语句。 但一开始它应该得到原始本体,没有新的语句。
以下代码每次都会在前一个语句之上添加一个新语句。
this runs in a for loop{
OntModel curOnto = onto1.getOntology();
curOnto.add(s,p,o);
/*printing the statement from onto1
it seems it is adding new statement in onto1 on top of previous statement*/
int lineNum = 0;
for (StmtIterator i = onto1.getOntology().listStatements(); i.hasNext();) {
Statement stmt = i.nextStatement();
System.out.println( lineNum++ + " - " + PrintUtil.print(stmt));
}
}
正如其他帖子中所建议的,我尝试像这样复制本体:
Model copyOnto = ModelFactory.createModelForGraph(onto1.getOntology().getGraph());
OntModel curOnto = new OntModelImpl(onto1.getOntology().getSpecification(), copyOnto);
但还是一样,它不断在onto1中添加新的语句。 我需要在每次运行 for 循环时在 curOnto 中获取 onto1 的原始副本。有什么帮助吗?
提前致谢。
最佳答案
上面的建议(使用org.apache.jena.rdf.model.ModelFactory#createModelForGraph)是错误的。所有信息都保存在图表中。所以你需要复制整个图(所有三元组)。它可以通过方法org.apache.jena.graph.GraphUtil#addInto
来完成(例如)关于java - 在耶拿复制 OWL 本体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794731/