On 11/06/12 03:27, Don S wrote:
HI,
What does the Fuseki log say?
No message in the Fuseki log. Before running the main program, I execute
this command first
" ruby s-put http://localhost:3030/ds2/data default per2.owl" to put the
file in the server.
which puts it into the default model of datasat called
http://localhost:3030/ds2/data.
The name "per2.owl" is lost - it's just a local file of data.
What's in model at this point?
Simultaneously I am writing the file to local c drive also. For that I
used in model.
Also I changed the first line of rupdata to #!/bin/sh instead
of #!/bin/bash.
Fuseki log after running the server
D:\fuseki-0.2.2>run
D:\fuseki-0.2.2>java -Xmx1200M -jar fuseki-server.jar --update --mem
--loc=D:/fu
seki-0.2.2/TD /ds2
10:40:16 INFO Server :: Dataset: in-memory
10:40:16 INFO Server :: TDB dataset:
directory=D:/fuseki-0.2.2/TD
10:40:17 INFO Server :: Dataset path = /ds2
10:40:17 INFO Server :: Fuseki 0.2.2-incubating-SNAPSHOT
20120506
-0501
10:40:17 INFO Server :: Jetty 7.x.y-SNAPSHOT
10:40:17 INFO Server :: Started 2012/06/11 10:40:17 PDT on
port 3
030
10:48:03 INFO Fuseki :: [1] PUT
http://localhost:3030/ds2/data?de
fault
10:48:03 INFO Fuseki :: [1] 204 No Content
s-put
10:54:10 INFO Fuseki :: [3] GET
http://localhost:3030/ds2/query?q
uery=SELECT+%2A%7B%3Fs+%3Fp+%3Fo%7D
10:54:10 INFO Fuseki :: [3] Query = SELECT *{?s ?p ?o}
10:54:11 INFO Fuseki :: [3] OK/select
10:54:11 INFO Fuseki :: [3] 200 OK
Dump triples of defaul graph.
Here is the code
static final String inputFileName = "http://localhost:3030/";
public static void main(String[] args) throws IOException{
Model model =ModelFactory.createOntologyModel();You shodul get
// use the FileManager to find the input file
InputStream in = FileManager.get().open(inputFileName);
if (in == null) {
throw new IllegalArgumentException( "File: " + inputFileName +
" not found");
}
model.read(inputFileName+"per2.owl");
in.close();
String queryString ="PREFIX xmlns:
<http://localhost:3030/per1.owl#>\r\n"
+
"PREFIX base:<http://localhost:3030/per1.owl
\r"+
"PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>\r"+
"INSERT DATA" +
"{"+
"<http://localhost:3030/per1.owl#name1>\n" +
"xmlns:hasFirstname \" Xie\"^^ xsd:string;" +
"}";
Use better prefixes.
Do not use xmlns:, owl: -- invent your own like myNS: or ex: or per:
String queryString1 =
"PREFIX owl:<http://localhost:3030/per1.owl#>" +
"SELECT * "+
"FROM<http://localhost:3030/per1.owl>"+
Do not use FROM. Delete this. It is not needed.
There is no file <http://localhost:3030/per1.owl>, either as a web
resource or as a graph name in the datasets.
And you were trying to call it per2.owl anyway.
"WHERE"+
"{"+
"?Name owl:hasFirstname ?hasFirstname." +
"}";
GraphStore gs=GraphStoreFactory.create(model);
gs.setDefaultGraph(model.getGraph());
UpdateRequest ur = UpdateFactory.create(queryString);
Update update = ur.getOperations().get(0);
not needed, not used.
UpdateExecutionFactory.createRemote(ur,"
http://localhost:3030/ds2/update");
UpdateAction.execute(ur,gs);
System.out.println(update);
// search part
Query query = QueryFactory.create(queryString1);
remove the FROM.
QueryExecution qe = QueryExecutionFactory.create(query, model);
ResultSet results = qe.execSelect();
ResultSetFormatter.out(System.out, results, query);
And now try the web interface to Fuseki.
FileOutputStream fileour =new FileOutputStream("c:/per2.owl");
model.write(fileour,"RDF/XML-ABBREV");
qe.close();
}
}
Still struggling to write the file using UpdateExecutionFactory.createRemote
Regards
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
On Fri, Jun 8, 2012 at 2:34 AM, Andy Seaborne<a...@apache.org> wrote:
On 08/06/12 09:30, Don S wrote:
HI,
Finally I succeed to call the
function UpdateExecutionFactory.**createRemote. Thanks for the comments.
Here is my configuration
Fuseki server
java -Xmx1200M -jar fuseki-server.jar --update --mem
--loc=D:/fuseki-0.2.2/TD /ds2
and the insert query code
public class search {
static final String inputFileName = "http://localhost:3030/";
public static void main(String[] args) throws IOException{
Model model =ModelFactory.**createOntologyModel();
// use the FileManager to find the input file
InputStream in = FileManager.get().open(**inputFileName);
if (in == null) {
throw new IllegalArgumentException( "File: " + inputFileName +
" not found");
}
model.read(inputFileName+"**per2.owl");
in.close();
What's in model at this point?
String queryString ="PREFIX xmlns:
<http://localhost:3030/per1.**owl#<http://localhost:3030/per1.owl#>
\r\n"
+
"PREFIX base:<http://localhost:3030/**
per1.owl<http://localhost:3030/per1.owl>
\r"+
"PREFIX
xsd:<http://www.w3.org/2001/**XMLSchema#<http://www.w3.org/2001/XMLSchema#>
\r"+
"INSERT DATA" +
"{"+
"<http://localhost:3030/per1.**owl#name1<http://localhost:3030/per1.owl#name1>>\n"
+
"xmlns:hasFirstname \"Rex\"^^ xsd:string;" +
"}";
xmlns is not a good choice of prefix name.
GraphStore gs=GraphStoreFactory.create(**model);
gs.setDefaultGraph(model.**getGraph());
UpdateRequest ur = UpdateFactory.create(**queryString);
Update update = ur.getOperations().get(0);
UpdateExecutionFactory.**createRemote(ur,"
http://localhost:3030/per2.owl**");
UpdateAction.execute(ur,gs);
System.out.println(update);
// some codes ....
qe.close();
}
}
I am wondering why it is not updating the ontology??
regards
What does the Fuseki log say?
UpdateExecutionFactory.**createRemote(ur,"http://**localhost:3030/per2.owl<http://localhost:3030/per2.owl>
");
per2.owl is not a SPARQL update service endpoint.
http://localhost:3030/ds2/**update<http://localhost:3030/ds2/update> is
the SPARQL update service endpoint.
Andy