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]> 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#>"
>>    , "PREFIX rdf:<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#>"+
>>> "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 <[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]> 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 <[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