Hello,

I will try to explain with examples. I have generated my ontology from
Protege and converted it to turtle syntax via an online tool.

*I have a class for average speed sensors:*

 ###
http://www.semanticweb.org/toshiba/ontologies/2017/3/untitled-ontology-6#Avg_Speed_Sensor

untitled-ontology-6:Avg_Speed_Sensor rdf:type owl:Class ;

                                     rdfs:subClassOf
untitled-ontology-6:Sensor ,

 untitled-ontology-6:Speed_Sensor .

*and a class for vehicles:*
###
http://www.semanticweb.org/toshiba/ontologies/2017/3/untitled-ontology-6#Vehicle

untitled-ontology-6:Vehicle rdf:type owl:Class .

*The vehicle class has a property called vehicleSpeed:*
###
http://www.semanticweb.org/toshiba/ontologies/2017/3/untitled-ontology-6#vehicleSpeed

untitled-ontology-6:vehicleSpeed rdf:type owl:DatatypeProperty ;

                                 rdfs:domain untitled-ontology-6:Vehicle ;

                                 rdfs:range xsd:integer .

*The avg speed sensor class has  a property called recorded_speed:*

###
http://www.semanticweb.org/toshiba/ontologies/2017/3/untitled-ontology-6#recorded_speed

untitled-ontology-6:recorded_speed rdf:type owl:DatatypeProperty ;

                                   rdfs:domain untitled-ontology-6:Sensor ,

 untitled-ontology-6:Speed_Sensor ;

                                   rdfs:range xsd:integer .

The recorded speed by the avg speed sensor allocated to a specific road is
the average of the vehicleSpeeds of the vehicles on that specific road,
where the avg speed sensor class has a property called
avgSpeedSensor_Infrastructure and the vehicle has a property called
Vehicle_Road.

I have two vehicle instances: Vehicle1 and Vehicle2; and two sensor
instances: SpeedSensor1 and SpeedSensor2.

Is it clearer now or just confusing?

so I am guessing following your guide it would be something like:

INSERT {
     <instance> :avgSpeed ?avg
   }
WHERE {
   SELECT (AVG(?speed) AS ?avg) {
       ?v rdf:type :Vehicle ;
          :vehicleSpeed ?speed;
          : Vehicle_Road ?r;
       ?avs rdf:type :Avg_Speed_Sensor;
              :avgSpeedSensor_Infrastructure ?r

   }
}

But  the value of the  <instance> should come from reading the file, right?


On Sun, Jun 4, 2017 at 9:04 PM, Andy Seaborne <[email protected]> wrote:

>
>
> On 04/06/17 18:47, Aya Hamdy wrote:
>
>> Hello,
>>
>> I wanted to add a property called avgSpeed to an instance of a class
>> called
>> FlowSensor. This property should be the average of the values of the
>> property vehicleSpeed attached to instances of the class Vehicle.
>>
>> I read that SPARQL update allows doing this. However, I cannot reach the
>> syntax for doing the* averaging of values* or for building the *SPARQL
>> Update *query using jena with eclipse on the jena website.
>>
>> If Jena indeed supports doing what I intend to do then can someone point
>> out some sources to guide me in my attempt?
>>
>> Best Regards,
>> Aya
>>
>>
> Calculate the average in a nested select so somethign like (you'll have to
> fix this up):
>
> INSERT {
>      <instance> :avgSpeed ?avg
>    }
> WHERE {
>    SELECT (AVG(?speed) AS ?avg) {
>        ?v rdf:type :Vehicle ;
>           :vehicleSpeed ?speed
>    }
> }
>
> By the way - it is better to more concrete in your description - actual
> data for example.
>

Reply via email to