"insert data" query in jena

38 Views Asked by At

I'm using Jena API for my sparql queries. this is one of my "select" queries:

package mypackage;

import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.ResultSet;
import org.apache.jena.rdf.model.InfModel;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.reasoner.Reasoner;
import org.apache.jena.reasoner.ReasonerRegistry;
import org.apache.jena.util.FileManager;

public class myclass {

    public static void main(String[] args) {
        Model schema = FileManager.get().loadModel("G:/myproj.owl");
        Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
        reasoner = reasoner.bindSchema(schema);
        InfModel infmodel = ModelFactory.createInfModel(reasoner,schema);
        
        String querystring = 
                  "        PREFIX owl: <http://www.w3.org/2002/07/owl#>\r\n"
                + "        PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\r\n"
                + "        PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\r\n"
                + "        PREFIX myonto: <http://www.example.com/myproj#>\r\n"
                + "SELECT ?x WHERE {?x myonto:HasParent ?z}";
        
        Query query = QueryFactory.create(querystring);
        QueryExecution qexec = QueryExecutionFactory.create(query,infmodel);
        try {
                ResultSet results = qexec.execSelect();
                for ( ; results.hasNext(); ) {
                    QuerySolution soln = results.nextSolution();
                    System.out.println(soln);
                }
            
        } finally { qexec.close(); }
        
    }

}

I want to write "insert data" query to add some individuals of relations to my ontology. I couldn't find any documentation for this. finally I write this query:

package mypackage;

import org.apache.jena.query.Query;
import org.apache.jena.query.QueryExecution;
import org.apache.jena.query.QueryExecutionFactory;
import org.apache.jena.query.QueryFactory;
import org.apache.jena.query.QuerySolution;
import org.apache.jena.query.ResultSet;
import org.apache.jena.rdf.model.InfModel;
import org.apache.jena.rdf.model.Model;
import org.apache.jena.rdf.model.ModelFactory;
import org.apache.jena.reasoner.Reasoner;
import org.apache.jena.reasoner.ReasonerRegistry;
import org.apache.jena.update.UpdateAction;
import org.apache.jena.update.UpdateFactory;
import org.apache.jena.update.UpdateRequest;
import org.apache.jena.util.FileManager;

public class myclass {

    public static void main(String[] args) {
        Model schema = FileManager.get().loadModel("G:/myproj.owl");
        Reasoner reasoner = ReasonerRegistry.getOWLReasoner();
        reasoner = reasoner.bindSchema(schema);
        InfModel infmodel = ModelFactory.createInfModel(reasoner,schema);
        
        String insertDataQueryString = 
                  "        PREFIX owl: <http://www.w3.org/2002/07/owl#>\r\n"
                + "        PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\r\n"
                + "        PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>\r\n"
                + "        PREFIX onto: <http://www.example.com/myproj#>\r\n"
                + "INSERT DATA {\n" +
                "  onto:Criss onto:HasParent onto:Anna.\n" +
                "}";
        
        // Use UpdateAction to execute the "INSERT DATA" query
        UpdateRequest updateRequest = UpdateFactory.create(insertDataQueryString);
        UpdateAction.execute(updateRequest, infmodel);
             
        infmodel.write(System.out, "TURTLE");       
    }
}

but it didn't work and my ontology (myproj.owl) didn't change (the triple didn't add)

0

There are 0 best solutions below