Andy

 below is a typical instance:

<http://permalink.gmane.org/gmane.comp.apache.jena.user/7020>
        a       <http://test.org/vocabulary/actions/Node> ;
        <http://test.org/vocabulary/actions/id>  90 ;
        <http://test.org/vocabulary/actions/rank> "0.233"^^<
http://www.w3.org/2001/XMLSchema#double> .

String delete = StrUtils.strjoinNL(
                     "DELETE WHERE { ",
                        "<
http://permalink.gmane.org/gmane.comp.apache.jena.user/7020> ",
                        " actions:rank  ?r . } ");

String data = StrUtils.strjoinNL
                        (" INSERT{ <
http://permalink.gmane.org/gmane.comp.apache.jena.user/7020> ",
                                "actions:rank  \""+rank+"\"^^xsd:double ;",
                                "actions:id  \""+id+"\"^^xsd:integer . } ");

I'm creating the dataset using:

Dataset ds = DatasetFactory.assemble("text-config.ttl", "
http://localhost/jena_example/#text_dataset";) ;//where text-config.ttl is a
typical config file

and am using to delete
dataset.begin(ReadWrite.WRITE) ;
try {
       UpdateRequest update = UpdateFactory.create(pre+"\n"+delete);
       System.out.println(update);
       UpdateAction.execute(update,m);
       dataset.commit();
   }catch(Exception ex){
        System.out.println("Error executing delete");
        ex.printStackTrace();
        }finally { dataset.end() ; }


and am using to insert

dataset.begin(ReadWrite.WRITE) ;
try {
       UpdateRequest update = UpdateFactory.create(pre+"\n"+data);
       System.out.println(update);
       UpdateAction.execute(update,m);
       dataset.commit();
   }catch(Exception ex){
        System.out.println(" Error executing update");
        ex.printStackTrace();
        }finally { dataset.end() ; }


and I checked the UpdateRequest strings when deleting and inserting, here
is an example:

=======DELETE========

PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  text: <http://jena.apache.org/text#>
PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX  actions: <http://test.org/vocabulary/actions/>

DELETE WHERE {
    <http://permalink.gmane.org/gmane.comp.apache.jena.user/7020>
actions:rank ?r .
}

=======INSERT========
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  text: <http://jena.apache.org/text#>
PREFIX  xsd:  <http://www.w3.org/2001/XMLSchema#>
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX  actions: <http://test.org/vocabulary/actions/>

INSERT DATA {
  <http://permalink.gmane.org/gmane.comp.apache.jena.user/7020>
actions:rank "0.502"^^xsd:double .
  <http://permalink.gmane.org/gmane.comp.apache.jena.user/7020> actions:id
90 .
}


is it possible that the problem has to do with the prefix resolution or
with the model?

C

On Tue, Jun 2, 2015 at 4:43 PM, Andy Seaborne <[email protected]> wrote:

> Charles,
>
> It works for me. I'm having to fill in the details from your description,
> so something in the detail is different.
>
> Do you have a complete, minimal example?
>
> (You can use TDFCatory.createDataset() to get a in-memory TDB dataset -
> they ar enot very efficient but they are a complete simulation of TDB
> because it's just a the most basic disk access operations replaced by a
> simple RAM disk).
>
>         Andy
>
>
> On 02/06/15 14:02, Charles Abela wrote:
>
>> Thanks for ypour reply Andy,
>>
>>
>> On Tue, Jun 2, 2015 at 2:50 PM, Andy Seaborne <[email protected]> wrote:
>>
>>  On 02/06/15 09:20, Charles Abela wrote:
>>>
>>>  Hi,
>>>> I'm working with a dynamic environment and have instances with some of
>>>> their properties that get updated with time, such as the rank property
>>>> below
>>>>
>>>> <http://jena.apache.org/documentation/tdb/tdb_transactions.html>
>>>>           a       <http://test.org/vocabulary/actions/Node> ;
>>>>           <http://test.org/vocabulary/actions/id>
>>>>                   92 ;
>>>>           <http://test.org/vocabulary/actions/rank>
>>>>                   "2.181"^^<http://www.w3.org/2001/XMLSchema#double> ,
>>>> "1.672"^^<http://www.w3.org/2001/XMLSchema#double> , "0.233"^^<
>>>> http://www.w3.org/2001/XMLSchema#double> , "0.466"^^<
>>>> http://www.w3.org/2001/XMLSchema#double> , "0.274"^^<
>>>> http://www.w3.org/2001/XMLSchema#double> , "0.543"^^<
>>>> http://www.w3.org/2001/XMLSchema#double> , "0.86"^^<
>>>> http://www.w3.org/2001/XMLSchema#double> , "1.234"^^<
>>>> http://www.w3.org/2001/XMLSchema#double> .
>>>>
>>>>
>>> A double can be written shorthand as 1.234e0 -- the "e0" indicates a
>>> double and wil be part of the lexical form.
>>>
>>> @prefix :  <http://test.org/vocabulary/actions/> .
>>> @prefix text:  <http://jena.apache.org/text#> .
>>> @prefix rdfs:  <http://www.w3.org/2000/01/rdf-schema#> .
>>> @prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
>>> @prefix actions:  <http://test.org/vocabulary/actions/> .
>>> @prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>>>
>>> <http://jena.apache.org/documentation/tdb/tdb_transactions.html>
>>>          rdf:type      actions:Node ;
>>>          actions:id    92 ;
>>>          actions:rank  "2.181"^^xsd:double ;
>>>          actions:rank  "1.672"^^xsd:double ;
>>>          actions:rank  "0.233"^^xsd:double ;
>>>          actions:rank  "0.466"^^xsd:double ;
>>>          actions:rank  "0.274"^^xsd:double ;
>>>          actions:rank  "0.543"^^xsd:double ;
>>>          actions:rank  "0.86"^^xsd:double ;
>>>          actions:rank  "1.234"^^xsd:double .
>>>
>>>
>>>    From the excerpt it can be seen that multiple rank values are being
>>>
>>>> added.
>>>>
>>>> I'm using sparql's combination of delete/insert to delete the current
>>>> value
>>>> and add the updated one, as follows:
>>>>
>>>> String pre = StrUtils.strjoinNL
>>>>                   (" PREFIX  : <http://test.org/vocabulary/actions/>"
>>>>
>>>>
>>> Not that it wil have any effect, you have the same namespace twice :
>>>
>>>
>>>  noted :)
>>
>>
>>  PREFIX  :       <http://test.org/vocabulary/actions/>
>>> PREFIX actions: <http://test.org/vocabulary/actions/>
>>>
>>>                            , "PREFIX text: <http://jena.apache.org/text#
>>> >"
>>>
>>>>                           , "PREFIX rdfs: <
>>>> http://www.w3.org/2000/01/rdf-schema#>"
>>>>                           ,"PREFIX xsd:   <
>>>> http://www.w3.org/2001/XMLSchema#>"
>>>>                           ," PREFIX actions: <
>>>> http://test.org/vocabulary/actions/>"
>>>>                           ,"PREFIX rdf: <
>>>> http://www.w3.org/1999/02/22-rdf-syntax-ns#>") ;
>>>>
>>>> String prop = StrUtils.strjoinNL(
>>>>                           node,
>>>>
>>>>
>>> What's the string 'node'?
>>>
>>>
>> node is essentially a placeholder for the  object, in the case of the code
>> above it will be bound to <
>> http://jena.apache.org/documentation/tdb/tdb_transactions.html>, and that
>> will change depending on the data being accessed.
>>
>>
>>>                            " actions:rank ?rank . ");
>>>
>>>>
>>>> dataset.begin(ReadWrite.WRITE) ;
>>>>
>>>>
>>> This is TDB right?
>>>
>>>  yes
>>
>>
>>>            String dq = StrUtils.strjoinNL
>>>
>>>>                   (
>>>>                       "DELETE { ",
>>>>                                 prop, " }",
>>>>                        "INSERT {", data, "}",
>>>>
>>>>
>>> What's data?
>>>
>>>
>> data is a string with the data that will be inserted
>>
>>
>>>                        "WHERE { ",
>>>
>>>>                                   prop," }"
>>>>                       );
>>>>
>>>>
>>> Looks sort of OK. Something readable would be nice.
>>>
>>> Printing the update to check is good for checkign things are happenign as
>>> expected:
>>>
>>>            try {
>>>
>>>>               UpdateRequest update = UpdateFactory.create(pre+"\n"+dq);
>>>>
>>>>
>>> System.out.println(update) ;
>>>
>>>
>>>                GraphStore graphStore = GraphStoreFactory.create(dataset);
>>>
>>>>               UpdateAction.execute(update,graphStore);
>>>>               dataset.commit();
>>>>           }catch(Exception ex){
>>>>           ex.printStackTrace();
>>>>           }finally { dataset.end() ; }
>>>>
>>>> any ideas as to why the values are not being deleted?
>>>>
>>>>
>>> Possibly node is wrong.
>>>
>>>  have checked this and it is correct
>>
>>
>>> Does data get inserted?
>>>
>>>
>> yes data gets inserted, thus the multiple values for the same property...
>> some other values like   <http://test.org/vocabulary/actions/id> 92 ;
>> do not change, and only one entry per instance exists
>>
>> Is teh data in the
>>
>>>
>>> Personally, I'd write:
>>>
>>> DELETE WHERE { ... } ;
>>> INSERT DATA { ... }
>>>
>>>
>>  but that's a style thing.
>>>
>>>          Andy
>>>
>>>
>>>  thanks in advance.
>>>>
>>>>
>>>>
>>>
>>
>

Reply via email to