插入数据集Jena ARQ中未提交的SPARQL数据

问题描述

我想用SPARQL查询和Jena ARQ在我的Jena模型('modelInput)中插入一个新类。 我正在将ONT-API(Java)用于我的项目,以便管理OWLOntologies和SPARQL查询

我的问题是:应该插入到“ modelInput”中的新类未插入。

这是我的代码

package test.model;

import com.github.owlcs.ontapi.OntManagers;
import com.github.owlcs.ontapi.Ontology;
import org.apache.jena.atlas.lib.StrUtils;

import org.apache.jena.query.*;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.update.*;
import org.apache.jena.vocabulary.RDFS;
import org.semanticweb.owlapi.model.*;

import java.util.Iterator;

public class TestDatasetAxiomMigration {

    public static void main(String[] args) throws OWLOntologyCreationException,OWLOntologyStorageException {
    
    OWLOntologyManager manager = OntManagers.createONT();
    OWLDataFactory factory = manager.getoWLDataFactory();
    OWLOntology ontology = manager.createOntology(IRI.create("http://ontology/"));
    ontology.addAxiom(factory.getoWLSubClassOfAxiom(factory.getoWLClass("first-class"),factory.getoWLThing()));

    Model modelInput = ((Ontology)ontology).asGraphModel();
    modelA.createResource("second-class").addProperty(RDFS.subClassOf,modelA.createResource("first-class"));

    Dataset dataset = DatasetFactory.create();
    dataset.begin(ReadWrite.WRITE) ;
    dataset.addNamedModel("http://ontology/",modelInput);


        // ... perform a SPARQL Update
        GraphStore graphStore = GraphStoreFactory.create(dataset) ;
        String sparqlUpdateString = StrUtils.strjoinNL(
                "PREFIX ont: <http://ontology/>","PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>","INSERT DATA { ont:University a rdfs:Class } "
        ) ;

        UpdateAction.parseExecute(sparqlUpdateString,dataset);
        dataset.commit() ;

        Model modelOut = dataset.getNamedModel("http://ontology/");

        System.out.print("Size: "+modelInput.size()+" ; "+modelOut.size());
    }
}

当我们触发执行时,“ modelInput”不会更新:更改未提交给模型; modelOutput与“ modelInput”具有相同的大小。 我没有错误,因此无法理解我在哪里做错了。

谢谢您的帮助。

NB:下面的这个小样本并没有揭示孔项目的复杂性。 顺便说一下,我正在使用数据集对象,因为我打算使用SPARQL查询将一些公理从一个本体复制到另一个本体。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)