And I explained that using Lorenz's example syntax is something that I have already tried before asking on the list and still the update to the owl file does not take place. I mentioned that in my previous email. I think the 2000+ lines u r mentioning are the full ontology file. I mentioned that the file called ont.owl is the full one in case needed, but I have already provided a short version called Yarab.owl .. Doubt that Yarab.owl is 2000+ lines, it has the basic two sensors, two vehicles, two roads instances and a couple of properties ..and it has lots of white lines to separate the code to blocks for readability purposes. Which file did u look at? I think u looked at the one I had described to be the full ontology.
On Jun 9, 2017 6:50 PM, "Andy Seaborne" <[email protected]> wrote: > " cv:Vehicle_Road ?r ;"+ >> > > Bad syntax. Replace ";" by "." > > Lorenz showed you the correct syntax. > > "?ass cv:avgSpeedSensor_Infrastructue ?r ."+ >> > > Print the query out and see what it looks like. Hence the earlier > suggestion you put newlines in the query. > > Andy > > ~2800 lines is not a minimal example. > > On 09/06/17 15:53, Aya Hamdy wrote: > >> When I do not use the subselect and write the query this way: >> >> String queryString1 = >> "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) {"+ >> "?v cv:vehicleSpeed ?speed;"+ >> " cv:Vehicle_Road ?r ;"+ >> "?ass cv:avgSpeedSensor_Infrastructue ?r ."+ >> >> >> >> "}"+ "GROUP BY ?r ?ass"+ >> "}"; >> >> The code generates the error below when it tries to execute the update >> action: >> Exception in thread "main" org.apache.jena.query.QueryParseException: >> Encountered " <VAR1> "?r "" at line 1, column 299. >> Was expecting one of: >> "values" ... >> "graph" ... >> "optional" ... >> "minus" ... >> "bind" ... >> "service" ... >> "filter" ... >> "{" ... >> "}" ... >> ";" ... >> "," ... >> "." ... >> >> When I researched these options under "Was expecting one of:", I did not >> find one of those options that would fit my query. >> I need this line: "?ass cv:avgSpeedSensor_Infrastructue ?r ." to ensure >> that the sensor is attached to the road on which the car is on. >> >> I group by ?r to try to ensure that the grouping is per road as well. But >> I >> think you have a point, and I should group by the sensor as well. >> >> Note: when I write the " cv:Vehicle_Road ?r ;"+ line with a full stop >> instead of a full stop the error goes away, but still, nothing happens in >> the owl file. Meaning, the new tuple is not added either. (I am a bit >> confused as to when to put a ";" and when to put a "." I believe, as far >> as >> my understanding goes, when I put a "." in the end of the >> " cv:Vehicle_Road ?r " the error goes away because the last line "?ass >> cv:avgSpeedSensor_Infrastructue ?r ." is ignored in the first place. >> could >> you confirm or negate that?) >> >> Your help is truly much appreciated. >> >> On Fri, Jun 9, 2017 at 2:30 PM, Lorenz Buehmann < >> [email protected]> wrote: >> >> There was some formatting issue in my previous mail. >>> >>> What I was wondering the need for grouping by ?r instead of ?ass. >>> >>> PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> >>> PREFIX cv: >>> <http://www.semanticweb.org/toshiba/ontologies/2017/3/untitl >>> ed-ontology-6# >>> >>>> >>>> >>> INSERT { >>> ?ass cv:recorded_speed ?avg . >>> } >>> WHERE >>> { SELECT ?ass (AVG(?speed) AS ?avg) >>> WHERE >>> { ?v cv:vehicleSpeed ?speed ; >>> cv:Vehicle_Road ?r . >>> ?ass cv:avgSpeedSensor_Infrastructue ?r >>> } >>> GROUP BY ?r ?ass >>> } >>> >>> >>> >>> On 09.06.2017 16:29, Lorenz Buehmann wrote: >>> >>>> That is your query: >>>> >>>> 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 cv:vehicleSpeed ?speed ; >>>> cv:Vehicle_Road ?r >>>> { SELECT ?r >>>> WHERE >>>> { ?ass cv:avgSpeedSensor_Infrastructue ?r } >>>> } >>>> } >>>> GROUP BY ?r >>>> } >>>> >>>> The problem is that you use for what ever reason a sub-SELECT to get the >>>> ?ass value. But this value is not propagated to the outer query, thus, >>>> it's not bound to the INSERT part. >>>> >>>> Why not do it like here (note, I dPREFIX 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 ?ass (AVG(?speed) AS ?avg) >>>> WHERE >>>> { ?v cv:vehicleSpeed ?speed ; >>>> cv:Vehicle_Road ?r . >>>> ?ass cv:avgSpeedSensor_Infrastructue ?r >>>> } >>>> GROUP BY ?r ?ass >>>> }on't know why you group by ?r instead of ?ass, thus, added both): >>>> >>>> >>>> >>>> >>>> On 09.06.2017 14:22, Aya Hamdy wrote: >>>> >>>>> Didn't know attachments are not allowed. >>>>> This is a gist of the three files. >>>>> https://gist.github.com/AyazzHamdy/faa14ebf46b0fe32689edc808dbf85d9 >>>>> >>>>> The code files are minimalist as you can see on the gist. Only the >>>>> >>>> query is >>> >>>> included and everything else is removed. I wanted to attach them as >>>>> >>>> files >>> >>>> to avoid clutter in the email. I believe things are more organized this >>>>> >>>> way. >>> >>>> >>>>> The problem is in b.java file. The c.java file is just to prove that >>>>> the >>>>> individual parts of the query work together. And the OWL file is the >>>>> one >>>>> generated by Protege. It has no problems, but I have removed anything >>>>> >>>> that >>> >>>> is not needed for this specific query. >>>>> >>>>> I have also attached a file called "ont.owl (full)" which has the full >>>>> ontology in case it is needed (which I think it is not needed, but just >>>>> >>>> in >>> >>>> case I misunderstand). >>>>> >>>>> Regards, >>>>> >>>>> On Fri, Jun 9, 2017 at 8:47 AM, Andy Seaborne <[email protected]> wrote: >>>>> >>>>> Attachments don't get through to this list. >>>>>> >>>>>> Put them in a pastebin or guithub gist. >>>>>> >>>>>> However, if they are so large that inlining email in plain text is >>>>>> impractical, than it suggests they are not minimal. >>>>>> >>>>>> Andy >>>>>> >>>>>> >>>>>> >>>>>> On 09/06/17 07:06, Lorenz Buehmann wrote: >>>>>> >>>>>> You forgot the attachments... >>>>>>> >>>>>>> >>>>>>> On 09.06.2017 03:02, Aya Hamdy wrote: >>>>>>> >>>>>>> Attached is a file of my code and my ontology which I have imported >>>>>>>> >>>>>>> on >>> >>>> Eclipse. >>>>>>>> >>>>>>>> I have finally fixed the null values issue. I am not sure if I >>>>>>>> understood the cause of the nulls correctly. However, it got fixed >>>>>>>> when I used a different way of making the ResultSet as shown below: >>>>>>>> >>>>>>>> Query query = QueryFactory.create(queryString1); >>>>>>>> QueryExecution qexec= QueryExecutionFactory.create(query, >>>>>>>> ontologyModel); >>>>>>>> ResultSet results=qexec.execSelect(); >>>>>>>> ResultSetFormatter.out(System.out, results, query); >>>>>>>> qexec.close(); >>>>>>>> I am including this bit of code here in case this helps someone else >>>>>>>> in the future cause I could not find it easily. It can be found in >>>>>>>> context in the attached c.java file. >>>>>>>> >>>>>>>> However, the original bigger problem still persists. The insert >>>>>>>> >>>>>>> SPARQL >>> >>>> query still does not result in inserting the new desired subject >>>>>>>> predicate object triple. No errors are generated which is I suppose >>>>>>>> a >>>>>>>> good thing, but when I print the ontology after running the query, I >>>>>>>> can see that the new triples are not added. >>>>>>>> >>>>>>>> Attached is the owl file and the java file (b.java). I have added >>>>>>>> explanatory comments in the java file hoping to clarify what I am >>>>>>>> trying to do here. >>>>>>>> >>>>>>>> Also, hoping to clarify matters a bit more, I have two average speed >>>>>>>> sensors (speedSensor1 and speedSensor2) and I have two vehicles >>>>>>>> (vehicle1 and vehicle2). speedSensor1 is attached to Road1 and >>>>>>>> speedSensor2 is attached to Road2. vehicle1 is located on Road1 >>>>>>>> with >>>>>>>> vehicleSpeed of 0 and vehicle2 is located on Road2 with >>>>>>>> vehicleSpeed >>>>>>>> of 50. Only one vehicle is modeled to be located on each road in an >>>>>>>> attempt to simplify things for now. >>>>>>>> >>>>>>>> The goal is to calculate the average of speeds of all vehicles on >>>>>>>> road1 and assign it as the value of the object property called >>>>>>>> recorded_speed of the speed sensor attached to the road which the >>>>>>>> vehicles are on. Consequently, based on my modeling, after running >>>>>>>> the query, speedSensor1 should have recorded_speed of 0 (since only >>>>>>>> vehicle1 is on road1 to which speedSensor1 is attached and vehicle1 >>>>>>>> has speed of 0) and speedSensor2 should have recorded_speed of 50 >>>>>>>> (since only vehicle2 is on road2 to which speedSensor2 is attached >>>>>>>> >>>>>>> and >>> >>>> vehicle2 has speed of 50). >>>>>>>> >>>>>>>> Also, attached is another java file (c.java) that has the results of >>>>>>>> me breaking down the big query in b.java. >>>>>>>> My suspicion is that the part where I am trying to invoke the insert >>>>>>>> query is not working, but the way I built is based on StackOverflow >>>>>>>> and it was supposedly working fine, so I am not sure what I am >>>>>>>> >>>>>>> missing. >>> >>>> >>>>>>>> Hope this gives you a picture of what is going on and hope you can >>>>>>>> help me understand why I cannot get the query to update the >>>>>>>> ontology. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Jun 8, 2017 at 5:29 PM, Lorenz Buehmann >>>>>>>> <[email protected] >>>>>>>> <mailto:[email protected]>> wrote: >>>>>>>> >>>>>>>> If results are bound it can't be a null value. Please show >>>>>>>> your >>>>>>>> updated >>>>>>>> code. >>>>>>>> >>>>>>>> >>>>>>>> On 07.06.2017 14:58, Aya Hamdy wrote: >>>>>>>> > Sorry about the x, It was a stupid mistake. But it is nit >>>>>>>> the >>>>>>>> cause of the >>>>>>>> > null. When I fixed it, the results of even the simplest >>>>>>>> >>>>>>> queries >>> >>>> are still >>>>>>>> > nulls. >>>>>>>> > >>>>>>>> > The code is not generating errors though, it is not >>>>>>>> generating >>>>>>>> the proper >>>>>>>> > results ... >>>>>>>> > >>>>>>>> > On Tue, Jun 6, 2017 at 9:13 AM, Andy Seaborne < >>>>>>>> >>>>>>> [email protected] >>> >>>> <mailto:[email protected]>> wrote: >>>>>>>> > >>>>>>>> >> >>>>>>>> >> On 06/06/17 00:26, Aya Hamdy wrote: >>>>>>>> >> >>>>>>>> >>> 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: >>>>>>>> >>> >>>>>>>> >> Use >>>>>>>> >> >>>>>>>> >> String.join("\n" >>>>>>>> >> , "PREFIX rdf:<http://www.w3.org/1999/ >>>>>>>> >>>>>>> 02/22-rdf-syntax-ns# >>> >>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#>>" >>>>>>>> >> , "PREFIX rdf:<http://www.w3.org/1999/ >>>>>>>> >>>>>>> 02/22-rdf-syntax-ns# >>> >>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#>>" >>>>>>>> >> , "INSERT {", >>>>>>>> >> ... >>>>>>>> >> , "}" >>>>>>>> >> ); >>>>>>>> >> >>>>>>>> >> then you will have newlines in the string and parser errors >>>>>>>> will have >>>>>>>> >> line+column numbers that are useful. >>>>>>>> >> >>>>>>>> >> Andy >>>>>>>> >> >>>>>>>> >> >>>>>>>> >> >>>>>>>> >>> String queryString= >>>>>>>> >>> "PREFIX rdf:<http://www.w3.org/1999/02/22-rdf-syntax-ns# >>>>>>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#>>"+ >>>>>>>> >>> "PREFIX cv:< >>>>>>>> >>> >>>>>>>> http://www.semanticweb.org/toshiba/ontologies/2017/3/untitl >>>>>>>> ed-ontology-6# >>>>>>>> <http://www.semanticweb.org/toshiba/ontologies/2017/3/untit >>>>>>>> led-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# >>>>>>>> <http://www.w3.org/1999/02/22-rdf-syntax-ns#>>"+ >>>>>>>> >>> "PREFIX cv:< >>>>>>>> >>> >>>>>>>> http://www.semanticweb.org/toshiba/ontologies/2017/3/untitl >>>>>>>> ed-ontology-6# >>>>>>>> <http://www.semanticweb.org/toshiba/ontologies/2017/3/untit >>>>>>>> led-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 < >>>>>>>> >>>>>>> [email protected] >>> >>>> <mailto:[email protected]>> 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" < >>>>>>>> >>>>> [email protected] >>>>>>>> <mailto:[email protected]>> 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/ >>>>>>>> <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/ >>>>>>>> <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/ >>>>>>>> <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/ >>>>>>>> <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] <mailto:[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. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>> >>> >>
