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)