问题描述
我想用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 (将#修改为@)