java - 在耶拿复制 OWL 本体

标签 java jena semantic-web owl ontology

我正在尝试使用 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/

相关文章:

java - 具有客户端 Axis2 stub 的信任库的私有(private) keystore

Java:它创建的定时器和线程

java - hibernate 插入选项

java - 如何在 Jena TDB 数据集中保留命名空间前缀?

.net-core - 使用 DotNetRDf.Query.FullText 创建 Lucene 索引器时出现异常

java - java "platform agnosticism"是否有可能失败的情况?

rdf - 提取由一组节点引起的子图

sparql - 无法从维基数据获取电影标题

rdf - rdf :resource 上的 SPARQL 查询

java - 如何使用 Datalog 查询接口(interface)公开巨大的语义图(链接数据)