- From: Arthur Ryman <ryman@ca.ibm.com>
- Date: Wed, 14 Nov 2012 10:17:58 -0500
- To: "Stephen D. Williams" <sdw@lig.net>
- Cc: semantic-web@w3.org
Yes, you can use SPARQL Update to safely update a counter. Here's the code
I used in an app.
Suppose you have a resource, <http://example.com/query>, stored in a named
graph of the same name, and it has a counter defined by a predicate
:nextIdentifier, e.g. if the counter is 42 you have the following triple.
<http://example.com/query> :nextIdentifier 42 .
Run the following update to safely increment the counter to 43.
base <http://example.com/>
prefix : <http://example.com/ns#>
delete {
graph <query> {
<query> :nextIdentifier ?nextIdentifier .
}
}
insert {
graph <query> {
<query> :nextIdentifier ?nextIdentifier1 .
}
}
where {
graph <query> {
<query> :nextIdentifier ?nextIdentifier .
}
bind (?nextIdentifier + 1 as ?nextIdentifier1) .
}
Regards,
___________________________________________________________________________
Arthur Ryman
DE, Chief Architect, Reporting &
Portfolio Strategy and Management
IBM Software, Rational
Toronto Lab | +1-905-413-3077 (office) | +1-416-939-5063 (mobile)
From: "Stephen D. Williams" <sdw@lig.net>
To: semantic-web@w3.org,
Date: 11/14/2012 02:49 AM
Subject: Re: Incrementing a literal
What happens when agent A and B try to update the same counter at the same
or nearly the same time?
Single threaded, locking for transaction systems aren't scalable and have
some other negatives, although they
On the other hand, in many circumstances, rather than updating values,
adding new knowledge is the way to solve the problem. Things like totals
or counts can be considered the results of a query.
On the other other hand, computing / caching / knowing facts resulting
from applying a rule isn't necessarily that far from a semantic web
database.
sdw
On 11/13/12 9:43 PM, Sergey Larionov wrote:
Henry, ok, time may be seen as continous (or is
that a current consensus view from some leaders of
thought). Still, when building the 'counter' ontology
(or describing something that changes at all),
can it make sense to somehow avoid the traditional
programming/overwriting thinking style like:
update counter with value 1
update counter with value 2
update counter with value 3
and instead just expand the knowledge by adding (no
updating or deleting at all) new facts into knowledge
system as they come:
counter was 1 at timeA
counter was 2 at timeB
counter was 3 at timeC
What is impossible here I fail to see? Is it difficult
to query the 'current' value of a counter from such a
(corresponding) set of triples using the currently
available semantic web tools?
Melvin, may I propose an opinion that 'needing to
update a value' seems like a design flaw. Why? Taking
your particular example of incrementing a 'counter'
variable which goes from 1 to 2 to 3 and further on,
on each step there actually *was* a time/state when
'counter' contained each of it's values. And at that
time/state conclusions could be made which were based
on *that* particular value. Updating seems like
effectively erasing the history.
Now what is 'current value' as it obviously should
have some means to be changed? Well 'current value'
seems like a result of a function taking a specific
'current' time as an input. Current time is an observer's
context property. So may an answer to your question
contain a suggestion to store all the values for a
counter with their relevant time frame attributes
and obtain 'current' value using a query? SL
that is impossible since time is continuous and between any
two times there are infinite number of more time slots. You
would need temporal reasoning and mereological reasoning to do
this. Those tools are not available yet.
Is there a pattern for incrementing a literal counter?
Alice stores turtle in http://example.org/counter
The initial operation should generate something like
<#> <#counter> 1.
Then the subsequent operation
<#> <#counter> 2.
And after that.
<#> <#counter> 3.
And so on ...
Is there a neat way to do this in distributed way? SPARQL update? Maybe
using Etags?
Received on Wednesday, 14 November 2012 15:18:55 UTC