That can't be. I tried your example b.java with my 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  ?ass (AVG(?speed) AS ?avg)
    WHERE
      { ?v    cv:vehicleSpeed       ?speed ;
              cv:Vehicle_Road       ?r .
        ?ass  cv:avgSpeedSensor_Infrastructue  ?r
      }
    GROUP BY ?ass
  }

Before execution the model contains 67 triples, afterwards 69. And the
added triples are as follows:


For SpeedSensor2:

untitled-ontology-6:SpeedSensor2
        a       untitled-ontology-6:Speed_Sensor ,
untitled-ontology-6:Sensor , untitled-ontology-6:Avg_Speed_Sensor ,
owl:NamedIndividual ;
        untitled-ontology-6:avgSpeedSensor_Infrastructue
                untitled-ontology-6:Road2 ;
        untitled-ontology-6:recorded_speed
                50.0 ;
        untitled-ontology-6:sensorLocatedInInfrastructure
                true ;
        untitled-ontology-6:sensorLocatedInVehicle
                false .

for SpeedSensor1:

untitled-ontology-6:SpeedSensor1
        a                              untitled-ontology-6:Speed_Sensor
, untitled-ontology-6:Sensor , untitled-ontology-6:Avg_Speed_Sensor ,
owl:NamedIndividual ;
        untitled-ontology-6:avgSpeedSensor_Infrastructue
                untitled-ontology-6:Road1 ;
        untitled-ontology-6:recorded_speed
                0.0 ;
        untitled-ontology-6:sensorLocatedInInfrastructure
                true ;
        untitled-ontology-6:sensorLocatedInVehicle
                false ;
        untitled-ontology-6:sensor_id  11 .

You can, see both now have the recorded_speed value.


> 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" <a...@apache.org> 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 <
>>> buehm...@informatik.uni-leipzig.de> 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 <a...@apache.org> 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
>>>>>>>>> <buehm...@informatik.uni-leipzig.de
>>>>>>>>> <mailto:buehm...@informatik.uni-leipzig.de>> 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 <
>>>>>>>>>
>>>>>>>> a...@apache.org
>>>>>       <mailto:a...@apache.org>> 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 <
>>>>>>>>>
>>>>>>>> a...@apache.org
>>>>>       <mailto: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
>>>>>>>>>       <mailto: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/
>>>>>>>>>       <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
>>>>>>>>>       <a...@apache.org <mailto: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.
>>>>>>>>>       >>>>>>>>
>>>>>>>>>       >>>>>>>>
>>>>>>>>>       >>>>>>>>
>>>>>>>>>       >>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>
-- 
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center

Reply via email to