Ok. That sounds reasonable so I will work on breaking down my chain of thought into smaller pieces. Thank you so much.
I saw an example online where the query syntax is written as a string on Jena. so my query now looks like this: String queryString= "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>"+ "PREFIX cv:< http://www.semanticweb.org/toshiba/ontologies/2017/3/untitled-ontology-6#>"+ "insert {"+ " ?ass cv:recorded_speed ?avg"+ "}"+ "WHERE {"+ "SELECT (AVG(?speed) AS ?avg) "+ "where{"+ " ?v rdf:type cv:Vehicle ;"+ "cv:vehicleSpeed ?speed;"+ " cv:Vehicle_Road ?r;"+ "{"+ "SELECT ?r"+ "where{"+ "?ass rdf:type cv:Avg_Speed_Sensor;"+ " cv:avgSpeedSensor_Infrastructure ?r"+ "}"+ "}"+ "}"+"GROUP By ?ass ?avg ?r"+ "}"; Then, also based on my research, I feed the query string into the parser and output the model. UpdateAction.parseExecute( queryString, ontologyModel ); ontologyModel.write( System.out, "TTL" ); I encountered many errors but managed to get rid of them all. However, based on the output, nothing has changed. speedSensor1 and speedSensor2 do not have the recorded_speed property added. Of course, I tried debugging, but I could not get any understanding of the problem. I tried breaking the query down to smaller bits right down to doing a simple select on vehicles: String query1= "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns#>"+ "PREFIX cv:< http://www.semanticweb.org/toshiba/ontologies/2017/3/untitled-ontology-6#>"+ "Select ?v"+ "where {"+ "?v cv:vehicleSpeed ?speed."+ "}"; Query query = QueryFactory.create(query1); QueryExecution qexec= QueryExecutionFactory.create(query, ontologyModel); try{ ResultSet results=qexec.execSelect(); while(results.hasNext()){ QuerySolution soln=results.nextSolution(); org.apache.jena.rdf.model.Literal name = soln.getLiteral("x"); System.out.println(name); } }finally{ qexec.close(); } But everything I have tried yields in the result "null". Can you give me pointers on how I should go about trying to figure out the problem with the insert function? Sorry if my questions are too naive, but I am trying to grasp the concepts as much as possible. Best Regards, Aya On Mon, Jun 5, 2017 at 8:32 PM, Andy Seaborne <a...@apache.org> wrote: > Then find the sensor of interest, and all cars on that given road. > > GROUP BY the speed sensor, and the AVG is that of calls on that given road. > > The way to develop complex queris is to write simple parts, then combine > them. > > Andy > > > On 05/06/17 16:46, Aya Hamdy wrote: > >> The goal is not to calculate the avg speed of a car. It is rather to >> compute the avg speed of all the cars on a given road and assign that >> computed average as the reading of the average speed sensot attached to >> that road. >> >> Sorry if my wording is causing confusion. >> >> On Jun 5, 2017 5:12 PM, "Lorenz Buehmann" < >> buehm...@informatik.uni-leipzig.de> wrote: >> >> No, why do you think so? ?v is the variable that gets assigned a vehicle >>> for which you compute the avg speed. >>> >>> <Instance> should be ?v, i.e. you have to group by it and select it >>> >>> INSERT { >>> >>> ?v :avgSpeed ?avg >>> >>> } WHERE { >>> >>> SELECT ?v (AVG(?speed) AS ?avg) { >>> >>> .... >>> >>> } GROUP BY ?v >>> >>> } >>> >>> >>> On 05.06.2017 17:03, Aya Hamdy wrote: >>> >>>> 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 <a...@apache.org> 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. >>>>> >>>>> >>> >>> >>