jena-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andy Seaborne <andy.seabo...@epimorphics.com>
Subject Re: Problem replacing graph
Date Wed, 02 Feb 2011 16:13:33 GMT
Frank,

Could you try this with the latest snapshot builds?

http://www.openjena.org/repo-dev/com/hp/hpl/jena/arq/

It might a manifestation of a recently fixed bug (ARQ, TDB).

If it persists, could you create a test case (wrap in something add the 
data) and say what storage your are using for Dataset?  In-memory? TDB? SDB?

	Andy

On 02/02/11 06:03, Frank Budinsky wrote:
>
> Thanks for your reply Andy. What I'm trying to do is replace a named graph
> with a newer version. The way I do this is by first removing the old graph
> and then I add the new one. It seems that the "removing the old version"
> part is causing the problem. I added some debug code to the method like
> this:
>
> protected Resource addOrReplaceResource(Dataset dataset, String
> resourceURI, InputStream instream)
> {
>     Resource resource = dataset.containsNamedModel(resourceURI) ?
>        dataset.getNamedModel(resourceURI).getResource(resourceURI) : null;
>     if (resource != null) {
>        System.out.print("before remove: ");
>        for (Iterator iter = dataset.listNames(); iter.hasNext(); ) {
>           System.out.println("  " + iter.next());
>        }
>        dataset.asDatasetGraph().removeGraph(resource.asNode());
>        System.out.print("after remove: ");
>        for (Iterator iter = dataset.listNames(); iter.hasNext(); ) {
>           System.out.println("  " + iter.next());
>        }
>     }
>     Model model = dataset.getNamedModel(resourceURI);
>     model.read(instream, null);
>     resource = model.getResource(resourceURI);
>     return resource;
> }
>
> When I ran the code with
> resourceURI="https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/20",
>   I got this output:
>
>
> before remove:
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/11
>
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/10
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/6
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/20
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/18
>
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/22
>
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/5
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/1
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/9
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/23
>
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/8
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/27
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/13
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/3
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/25
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/19
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/2
>
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/24
>
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/14
>
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/4
>
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/26
>
> https://frankb-tp.torolab.ibm.com:9443/ccm/resource/itemName/com.ibm.team.workitem.WorkItem/21
>
> after remove:
>
> Notice that there are no names being returned from dataset.listNames()
> after the call to removeGraph(). I was expecting it to only have removed
> "...WorkItem/20", but it seems to have removed all the graphs.
>
> Any idea why this is happening? Am I using the wrong API for this?
>
> Thanks,
> Frank
>
>
> Andy Seaborne<andy.seaborne@epimorphics.com>  wrote on 02/01/2011 04:20:58
> PM:
>
>> [image removed]
>>
>> Re: Problem replacing graph
>>
>> Andy Seaborne
>>
>> to:
>>
>> jena-users
>>
>> 02/01/2011 04:23 PM
>>
>> Please respond to jena-users
>>
>>
>>
>> On 01/02/11 14:47, Frank Budinsky wrote:
>>>
>>>
>>> Hi All,
>>>
>>> I'm having trouble doing a fairly straightforward operation in Jena,
> which
>>> probably just means I'm doing something wrong. I'm trying to add or
> replace
>>> a resource (as a graph) in my dataset. The code I wrote looks something
>>> like this:
>>>
>>>         protected Resource addOrReplaceResource(Dataset dataset, String
>>> resourceURI, InputStream instream)
>>>         {
>>>               Resource resource = dataset.containsNamedModel
> (resourceURI) ?
>>>                   dataset.getNamedModel(resourceURI).getResource
>>> (resourceURI) : null;
>>>               if (resource != null)
>>>                     dataset.asDatasetGraph().removeGraph(resource.asNode
> ());
>>>               Model model = dataset.getNamedModel(resourceURI);
>>>               model.read(instream, null);
>>>               resource = model.getResource(resourceURI);
>>>               return resource;
>>>         }
>>>
>>> When a resourceURI is added for the first time, it works fine but when
>>> replacing a graph the call to removeGraph() seems to wipe out the
> entire
>>> dataset. The only thing left in the dataset after that is the single
>>> resource which gets added after the removeGraph call.
>>
>> resources aren't added by getResource - in fact, it does not change the
>> model and and RDF model does not have resources without being in a
>> statement.
>>
>>>
>>> Is there something obvious that I'm doing wrong here?
>>>
>>> Thanks,
>>> Frank.
>>
>> removeGraph(String) removes the graph (all the statements).
>>
>> Then it depends what's in the RDF/XML in instream.
>>
>> What happens if you print the model, or print the dataset, just before
>> the return?
>>
>>     Andy

Mime
View raw message