so now the logic is

1. Check if graph exist
   a. if graph doesn't exist then createDefaultModel
   b. if graph does exist getModel()
2. putModel(GRAPH_NAME,model)

correct?

On Wed, Feb 4, 2015 at 1:36 PM, Trevor Donaldson <[email protected]>
wrote:

> Ah!!!! Thanks Claude. Appreciate it.
>
> On Wed, Feb 4, 2015 at 1:04 PM, Rob Vesse <[email protected]> wrote:
>
>> Your logic looks a little strange, comments inline:
>>
>> On 04/02/2015 09:02, "Trevor Donaldson" <[email protected]> wrote:
>>
>> >Not sure if this is right but I am pretty much implementing this logic.
>> >boolean modelExist = true;
>> >if(datasetaccessor.containsModel(GRAPH_NAME)){
>> >  model = datasetAccessor.getModel(GRAPH_NAME);
>> >} else{
>> >  model = ModelFactory.createDefaultModel();
>> >  modelExist = false;
>> >}
>> >
>> >build triples do model manipulation.....
>> >
>> >if(!modelExist){
>> >   datasetAccessor.put(GRAPH_NAME,model);
>>
>> If the model doesn't exist you add it as a named graph
>>
>> >} else{
>> >   datasetAccessor.add(model);
>>
>> However if the model does exist you add it to the default graph, the Model
>> object does not carry around a graph name which seems to have been your
>> assumption here
>>
>> So you are changing different graphs depending on whether the graph
>> already exists, in the case where it does the changes you make aren't
>> being saved where you expect them to and so won't be seen the next time
>> the code runs and loads the existing graph (it'll still be the same graph
>> as before because you put your actual changes in the default graph not the
>> named graph.
>>
>> Additionally using add() means that any local deletions will not be
>> reflected because add will only add the current state of the model and
>> won't overwrite any data that was already in that graph so any triples you
>> deleted locally will still be present in the remote graph and seen next
>> time you load it.
>>
>> Therefore you likely want to change this line like so:
>>
>> datasetAccessor.put(GRAPH_NAME, model);
>>
>> Which means you can actually eliminate that second if statement and just
>> call this method since you want to do the same thing whether the graph
>> already exists or not.
>>
>> Rob
>>
>> >}
>> >
>> >
>> >On Wed, Feb 4, 2015 at 11:48 AM, Trevor Donaldson <[email protected]>
>> >wrote:
>> >
>> >> How do I create a model with a graph name if it doesn't exist? I have
>> >> tried
>> >> Model model = ModelFactory.createDefaultModel();
>> >> datasetaccessor.put("http:example.org#exampleGraph",model);
>> >>
>> >> That doesn't seem to work.
>> >>
>>
>>
>>
>>
>>
>

Reply via email to