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. >
