Rimel, I don't think SWRL will do what you want it to unfortunately. First though, there were some things in your rule that seemed a bit odd to me. The first two expressions:
Will probably not do what you expect them to do. My guess is you are trying to get a temperature associated with an individual patient. If that is the case the expression above won't do that. Instead it will iterate through all the instances of the Patient class and all the instances of the temperature class each time binding ?p and ?t to a different instance. I would expect something like:
Patient(?p) ^ hasTemperature(?p, ?t)
Where hasTemperature is a data property with domain Patient and Range a real number. Similarly, with the consequent of your rule: "has-score(?t,
?s+1)" You can't do that in SWRL. What you need to do is to first on the left hand side use the SWRL bultin: swrlb:add(?s, 1). The SWRL builtins can be found here:
The bigger issue though is that if I'm understanding what you want to do, you want to use the rule to iteratively change the value of some property. I.e., every time the rule fires you add one to the property. If that's the case SWRL can't do that. That is what's called non-monotonic reasoning. It seems straight forward since virtually all programming languages work that way but SWRL is a logical language and doesn't support non-monotonic reasoning. I suggest you look at this presentation: https://protege.stanford.edu/conference/2009/slides/SWRL2009ProtegeConference.pdf Especially slides 23-26.