在数据集jena arq中插入sparql未提交的数据

b91juud3  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(295)

我想用sparql查询和jenaarq在jena模型('modelinput)中插入一个新类。我在项目中使用ontapi(java)来管理owl本体和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”的大小相同。我不明白我哪里做错了,因为我没有错。
谢谢你的帮助。
注意:下面这个小样本并没有揭示出这个洞项目的复杂性。顺便说一下,我使用dataset对象是因为我计划用sparql查询将一些 axios 从一个本体复制到另一个本体。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题