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

Reply via email to