我想用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 从一个本体复制到另一个本体。
暂无答案!
目前还没有任何答案,快来回答吧!