You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jena.apache.org by Frank Lee <fr...@yahoo.com> on 2012/09/25 01:33:37 UTC
Re: Remote named graph
Hi, Andy,
What will be better way to duplicate existing named graph remotely? Or duplicated many with different URIs. Is there any simple API to use for it? Thanks.
Cheers
Frank
________________________________
From: Andy Seaborne <an...@apache.org>
To: users@jena.apache.org
Sent: Wednesday, August 29, 2012 1:32 AM
Subject: Re: Remote named graph
On 28/08/12 23:19, Frank Lee wrote:
> Hi, Andy.
>
> Thanks so much for your warm help.
>
> Obtaining the handle of DatasetAccessor what I really wanted. Thanks.
>
> BTW, how can we get the list/interator of namedGraphs from DatasetAccessor or ARQ?
You can use:
SELECT ?g { GRAPH ?g {} }
the interface DatasetAccessor does not provide such an operation and you
need to get it from elsewhere - the interface could be used to a thing
that stores graphs as a distributed map without ability to enumerate all
keys ... like a very large key-value store providing just the SPARQL
Graph Store Protocol (which despite the name, is not a query protocol).
Andy
>
> Thanks.
> Frank
>
>
>
> ________________________________
> From: Andy Seaborne <an...@apache.org>
> To: users@jena.apache.org
> Sent: Tuesday, August 28, 2012 2:05 AM
> Subject: Remote named graph
>
>> Hi, Andy,
>>
>> It's easy to get the model for a named graph from local TDB dataset
>>
>> tdb_dir = "c:\\tdb";
>>
>> ds = TDBFactory.createDataset(tdb_dir);
>>
>>
>> String ngUri = "http://xxx .."
>> Model model = ds.getNamedModel(ngUri);
>>
>> However, if we run fuseki server with TDB remotely, how can we get the model for the specified named graph?
>> For instance, the fuseki server run at remote server with IP address: 172.25.19.233 and tdb directory is /home/tdb at linux machine.
>>
>> Thanks.
>>
>> Frank
>>
>>
>> +++
>
> Frank,
>
> I'm not sure what you mean: access the remote named graph or pull its
> contents to the local machine.
>
> 1/ Access:
>
> Use GRAPH in a SPARQL query.
>
> 2/ The remote graph has a name using the SPARQL Graph store protocol:
>
> http://host/datasets/data?graph=http://xxx ..
>
> You can simple GET this although there is some code to present that
> nicely in Fuseki (DatasetAccessor).
>
> This is a local copy.
>
> (this code will move from Fuseki into ARQ sometime with a consequent
> package renaming)
>
> Andy
>
Re: Remote named graph
Posted by Frank Lee <fr...@yahoo.com>.
Hi, Andy,
Thanks for your help.
I 've tried out your suggestions, it worked well.
Basically, three steps are important:
1) remote URI for endpoint:
String serviceUri = getDatasetUri() + PropNameValue.update.getName(); (something like "http://xxx.ccc.com:3030/dataset/update";)
2) update string:
String updateString = "COPY <" + orgUri + "> TO <" + cpUri + ">";
3) get handles for UpdateRequest and UpdateProcessor
UpdateRequest ur = UpdateFactory.create(updateString);
UpdateProcessor up = UpdateExecutionFactory.createRemote(ur, serviceUri);
up.execute();
Cheers,
Frank
+++
From: Andy Seaborne <an...@apache.org>
To: users@jena.apache.org
Sent: Friday, September 28, 2012 1:23 AM
Subject: Re: Remote named graph
On 28/09/12 01:46, Frank Lee wrote:
> Hi, Andy,
>
> For query, we have:
>
> String queryUri = "http://xxx.ccc.com:3030/dataset/query";
> Query query = QueryFactory.create(queryString);
>
> QueryEngineHTTP qeHttp = QueryExecutionFactory.createServiceRequest(queryUri, query);
>
> ResultSet results = qeHttp.execSelect();
>
>
> which is perfect.
>
> How about for update?
> Do we also have similar things like:
>
> String updateUri = "http://xxx.ccc.com:3030/dataset/update";
> UpdateRequest ur = UpdateFactory.create(updateString);
>
>
> And then get the handle to execute update? It'd be great if you can come up with some code examples.
UpdateExecutionFactory.createRemote.
Javadoc:
http://jena.apache.org/documentation/javadoc/arq/com/hp/hpl/jena/update/UpdateExecutionFactory.html#createRemote%28com.hp.hpl.jena.update.UpdateRequest,%20java.lang.String%29
The project would be delighted to receive additional content for the web
site. The content is in svn:
https://svn.apache.org/repos/asf/jena/site/trunk/
Andy
>
> Thanks
> Frank
>
>
>
>
> ________________________________
> From: Frank Lee <fr...@yahoo.com>
> To: "users@jena.apache.org" <us...@jena.apache.org>
> Sent: Wednesday, September 26, 2012 1:17 PM
> Subject: Re: Remote named graph
>
> Thanks, Andy. It made good sense.
>
> Cheers,
> Frank
>
>
>
> ________________________________
> From: Andy Seaborne <an...@apache.org>
> To: users@jena.apache.org
> Sent: Wednesday, September 26, 2012 11:31 AM
> Subject: Re: Remote named graph
>
> On 26/09/12 01:06, Frank Lee wrote:
>> Thanks for that, Andy.
>>
>> So, we can't use any existing API (for we've already grabbed the handle of the namedGraph model) to duplicate it, SPARQL/update is the only way to do it.
>
> Mu suggestions were made so as to avoid copying everything onto the
> local machine, and copying it back out again. Using COPY, only a copy
> within the remote machine is done. Is that what you are trying to do?
>
> Andy
>
>
>>
>>
>>
>> ________________________________
>> From: Andy Seaborne <an...@apache.org>
>> To: users@jena.apache.org
>> Sent: Tuesday, September 25, 2012 2:34 PM
>> Subject: Re: Remote named graph
>>
>> On 25/09/12 00:33, Frank Lee wrote:
>>> Hi, Andy,
>>>
>>> What will be better way to duplicate existing named graph remotely?
>>> Or duplicated many with different URIs. Is there any simple API to
>>> use for it? Thanks.
>>>
>>> Cheers Frank
>>
>> SPARQL Update:
>>
>> something like
>>
>> COPY <g1> To <g2>
>>
>> for a one to one copy:
>>
>> or
>>
>> INSERT { GRAPH <g> { ?s ?p ?o } }
>> WHERE { GRAPH ?g { ?s ?p ?o } FILTER ( ?g IN ( <g1>, <g2>, <g3> ) ) }
>>
>> for many
>>
>> (untested)
>>
>> Andy
>>
Re: Remote named graph
Posted by Andy Seaborne <an...@apache.org>.
On 28/09/12 01:46, Frank Lee wrote:
> Hi, Andy,
>
> For query, we have:
>
> String queryUri = "http://xxx.ccc.com:3030/dataset/query";
> Query query = QueryFactory.create(queryString);
>
> QueryEngineHTTP qeHttp = QueryExecutionFactory.createServiceRequest(queryUri, query);
>
> ResultSet results = qeHttp.execSelect();
>
>
> which is perfect.
>
> How about for update?
> Do we also have similar things like:
>
> String updateUri = "http://xxx.ccc.com:3030/dataset/update";
> UpdateRequest ur = UpdateFactory.create(updateString);
>
>
> And then get the handle to execute update? It'd be great if you can come up with some code examples.
UpdateExecutionFactory.createRemote.
Javadoc:
http://jena.apache.org/documentation/javadoc/arq/com/hp/hpl/jena/update/UpdateExecutionFactory.html#createRemote%28com.hp.hpl.jena.update.UpdateRequest,%20java.lang.String%29
The project would be delighted to receive additional content for the web
site. The content is in svn:
https://svn.apache.org/repos/asf/jena/site/trunk/
Andy
>
> Thanks
> Frank
>
>
>
>
> ________________________________
> From: Frank Lee <fr...@yahoo.com>
> To: "users@jena.apache.org" <us...@jena.apache.org>
> Sent: Wednesday, September 26, 2012 1:17 PM
> Subject: Re: Remote named graph
>
> Thanks, Andy. It made good sense.
>
> Cheers,
> Frank
>
>
>
> ________________________________
> From: Andy Seaborne <an...@apache.org>
> To: users@jena.apache.org
> Sent: Wednesday, September 26, 2012 11:31 AM
> Subject: Re: Remote named graph
>
> On 26/09/12 01:06, Frank Lee wrote:
>> Thanks for that, Andy.
>>
>> So, we can't use any existing API (for we've already grabbed the handle of the namedGraph model) to duplicate it, SPARQL/update is the only way to do it.
>
> Mu suggestions were made so as to avoid copying everything onto the
> local machine, and copying it back out again. Using COPY, only a copy
> within the remote machine is done. Is that what you are trying to do?
>
> Andy
>
>
>>
>>
>>
>> ________________________________
>> From: Andy Seaborne <an...@apache.org>
>> To: users@jena.apache.org
>> Sent: Tuesday, September 25, 2012 2:34 PM
>> Subject: Re: Remote named graph
>>
>> On 25/09/12 00:33, Frank Lee wrote:
>>> Hi, Andy,
>>>
>>> What will be better way to duplicate existing named graph remotely?
>>> Or duplicated many with different URIs. Is there any simple API to
>>> use for it? Thanks.
>>>
>>> Cheers Frank
>>
>> SPARQL Update:
>>
>> something like
>>
>> COPY <g1> To <g2>
>>
>> for a one to one copy:
>>
>> or
>>
>> INSERT { GRAPH <g> { ?s ?p ?o } }
>> WHERE { GRAPH ?g { ?s ?p ?o } FILTER ( ?g IN ( <g1>, <g2>, <g3> ) ) }
>>
>> for many
>>
>> (untested)
>>
>> Andy
>>
Re: Remote named graph
Posted by Frank Lee <fr...@yahoo.com>.
Hi, Andy,
For query, we have:
String queryUri = "http://xxx.ccc.com:3030/dataset/query";
Query query = QueryFactory.create(queryString);
QueryEngineHTTP qeHttp = QueryExecutionFactory.createServiceRequest(queryUri, query);
ResultSet results = qeHttp.execSelect();
which is perfect.
How about for update?
Do we also have similar things like:
String updateUri = "http://xxx.ccc.com:3030/dataset/update";
UpdateRequest ur = UpdateFactory.create(updateString);
And then get the handle to execute update? It'd be great if you can come up with some code examples.
Thanks
Frank
________________________________
From: Frank Lee <fr...@yahoo.com>
To: "users@jena.apache.org" <us...@jena.apache.org>
Sent: Wednesday, September 26, 2012 1:17 PM
Subject: Re: Remote named graph
Thanks, Andy. It made good sense.
Cheers,
Frank
________________________________
From: Andy Seaborne <an...@apache.org>
To: users@jena.apache.org
Sent: Wednesday, September 26, 2012 11:31 AM
Subject: Re: Remote named graph
On 26/09/12 01:06, Frank Lee wrote:
> Thanks for that, Andy.
>
> So, we can't use any existing API (for we've already grabbed the handle of the namedGraph model) to duplicate it, SPARQL/update is the only way to do it.
Mu suggestions were made so as to avoid copying everything onto the
local machine, and copying it back out again. Using COPY, only a copy
within the remote machine is done. Is that what you are trying to do?
Andy
>
>
>
> ________________________________
> From: Andy Seaborne <an...@apache.org>
> To: users@jena.apache.org
> Sent: Tuesday, September 25, 2012 2:34 PM
> Subject: Re: Remote named graph
>
> On 25/09/12 00:33, Frank Lee wrote:
>> Hi, Andy,
>>
>> What will be better way to duplicate existing named graph remotely?
>> Or duplicated many with different URIs. Is there any simple API to
>> use for it? Thanks.
>>
>> Cheers Frank
>
> SPARQL Update:
>
> something like
>
> COPY <g1> To <g2>
>
> for a one to one copy:
>
> or
>
> INSERT { GRAPH <g> { ?s ?p ?o } }
> WHERE { GRAPH ?g { ?s ?p ?o } FILTER ( ?g IN ( <g1>, <g2>, <g3> ) ) }
>
> for many
>
> (untested)
>
> Andy
>
Re: Remote named graph
Posted by Frank Lee <fr...@yahoo.com>.
Thanks, Andy. It made good sense.
Cheers,
Frank
________________________________
From: Andy Seaborne <an...@apache.org>
To: users@jena.apache.org
Sent: Wednesday, September 26, 2012 11:31 AM
Subject: Re: Remote named graph
On 26/09/12 01:06, Frank Lee wrote:
> Thanks for that, Andy.
>
> So, we can't use any existing API (for we've already grabbed the handle of the namedGraph model) to duplicate it, SPARQL/update is the only way to do it.
Mu suggestions were made so as to avoid copying everything onto the
local machine, and copying it back out again. Using COPY, only a copy
within the remote machine is done. Is that what you are trying to do?
Andy
>
>
>
> ________________________________
> From: Andy Seaborne <an...@apache.org>
> To: users@jena.apache.org
> Sent: Tuesday, September 25, 2012 2:34 PM
> Subject: Re: Remote named graph
>
> On 25/09/12 00:33, Frank Lee wrote:
>> Hi, Andy,
>>
>> What will be better way to duplicate existing named graph remotely?
>> Or duplicated many with different URIs. Is there any simple API to
>> use for it? Thanks.
>>
>> Cheers Frank
>
> SPARQL Update:
>
> something like
>
> COPY <g1> To <g2>
>
> for a one to one copy:
>
> or
>
> INSERT { GRAPH <g> { ?s ?p ?o } }
> WHERE { GRAPH ?g { ?s ?p ?o } FILTER ( ?g IN ( <g1>, <g2>, <g3> ) ) }
>
> for many
>
> (untested)
>
> Andy
>
Re: Remote named graph
Posted by Andy Seaborne <an...@apache.org>.
On 26/09/12 01:06, Frank Lee wrote:
> Thanks for that, Andy.
>
> So, we can't use any existing API (for we've already grabbed the handle of the namedGraph model) to duplicate it, SPARQL/update is the only way to do it.
Mu suggestions were made so as to avoid copying everything onto the
local machine, and copying it back out again. Using COPY, only a copy
within the remote machine is done. Is that what you are trying to do?
Andy
>
>
>
> ________________________________
> From: Andy Seaborne <an...@apache.org>
> To: users@jena.apache.org
> Sent: Tuesday, September 25, 2012 2:34 PM
> Subject: Re: Remote named graph
>
> On 25/09/12 00:33, Frank Lee wrote:
>> Hi, Andy,
>>
>> What will be better way to duplicate existing named graph remotely?
>> Or duplicated many with different URIs. Is there any simple API to
>> use for it? Thanks.
>>
>> Cheers Frank
>
> SPARQL Update:
>
> something like
>
> COPY <g1> To <g2>
>
> for a one to one copy:
>
> or
>
> INSERT { GRAPH <g> { ?s ?p ?o } }
> WHERE { GRAPH ?g { ?s ?p ?o } FILTER ( ?g IN ( <g1>, <g2>, <g3> ) ) }
>
> for many
>
> (untested)
>
> Andy
>
Re: Remote named graph
Posted by Frank Lee <fr...@yahoo.com>.
Thanks for that, Andy.
So, we can't use any existing API (for we've already grabbed the handle of the namedGraph model) to duplicate it, SPARQL/update is the only way to do it.
________________________________
From: Andy Seaborne <an...@apache.org>
To: users@jena.apache.org
Sent: Tuesday, September 25, 2012 2:34 PM
Subject: Re: Remote named graph
On 25/09/12 00:33, Frank Lee wrote:
> Hi, Andy,
>
> What will be better way to duplicate existing named graph remotely?
> Or duplicated many with different URIs. Is there any simple API to
> use for it? Thanks.
>
> Cheers Frank
SPARQL Update:
something like
COPY <g1> To <g2>
for a one to one copy:
or
INSERT { GRAPH <g> { ?s ?p ?o } }
WHERE { GRAPH ?g { ?s ?p ?o } FILTER ( ?g IN ( <g1>, <g2>, <g3> ) ) }
for many
(untested)
Andy
Re: Remote named graph
Posted by Andy Seaborne <an...@apache.org>.
On 25/09/12 00:33, Frank Lee wrote:
> Hi, Andy,
>
> What will be better way to duplicate existing named graph remotely?
> Or duplicated many with different URIs. Is there any simple API to
> use for it? Thanks.
>
> Cheers Frank
SPARQL Update:
something like
COPY <g1> To <g2>
for a one to one copy:
or
INSERT { GRAPH <g> { ?s ?p ?o } }
WHERE { GRAPH ?g { ?s ?p ?o } FILTER ( ?g IN ( <g1>, <g2>, <g3> ) ) }
for many
(untested)
Andy