簡體   English   中英

復制耶拿的OWL本體

[英]copy an OWL Ontology in Jena

我正在嘗試使用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);

但還是一樣,它一直在on1中添加新語句。 我需要在for循環的每次運行中在curOnto中獲取onto1的原始副本。 有什么幫助嗎?

提前致謝。

上面的建議(使用org.apache.jena.rdf.model.ModelFactory#createModelForGraph )是錯誤的。 所有信息都保存在圖表中。 因此,您需要復制整個圖形(所有三元組)。 可以(例如)通過org.apache.jena.graph.GraphUtil#addInto方法來完成

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM