Please upload your update code for b.java

And then try to write to another path instead of the same file, just to
make sure that you really write to disk.

> - I had included the writing to the file in b.java, but I must have dropped
> it by mistake when putting the files as a gist, apologies.
>
> - I am not surprised with the output. Don't know why you got that
> impression. You are right, it is my code so  I know what I have written and
> I have made the output TTL for a reason for sure. It is neater to read in
> the console as a personal preference.
>
>   -I used the system.write with the query you provided, I am using your
> query for my trials with the file now. Note that your query is different
> from the syntax I had tried before the sub-select by removing one of the
> where clauses. I was treating the query too much like SQL syntax it seems,
> so thx again for that.
>
> - I used writeall because in the original file, not the summarized
> b.java one there are other inferences made, so it would have its uses.
> Thanks for the update on the write syntax, I removed the xmlbase argument,
> but still nothing.
>
> Finally, the file is not affected by the write although you tried it and it
> worked with you, and we are working on the same files with the same
> contents. so that is a whole other level of hopelessness. If it worked for
> you then it should have worked with me.
>
> Anyway thanks for your efforts, it was much appreciated.
>
>
>
>
>
> On Jun 11, 2017 10:26 AM, "Lorenz B." <[email protected]>
> wrote:
>
>>
>>> Yes, I see. I don't get why it does not add them when I run it...
>>>
>>> Do you see the new tuples when you print or when you open the file
>> ontology
>>> file? Cause with me, when I used your syntax, the new triples show in the
>>> print but when I open the ontology file on Eclipse which I am running the
>>> query on, I find that the triples are not added.
>> As I said, I just used your code in b.java, thus, it's just printed to
>> System.out .
>>> And I have noticed that what you are showing me is in turtle format. The
>>> ontology file is in XML format...
>> The same, your code prints to System.out as "TTL" which is Turtle - I'm
>> wondering why you're surprised, it's your code.
>>> Isn't the result of the insertion
>>> function written to the ontology file?
>> No, the triples in the ontology are loaded into memory. That means you
>> have to write the model back to disk
>>>   Note that I have previously added
>>> lines to my code to try and rewrite the ontology after the query, but the
>>> file is still not affected:
>> But you did this without the query that I provided?
>>> FileOutputStream output = null;
>>>
>>> try  {
>>>  output = new FileOutputStream( "yarab.owl ");
>>> } catch(Exception e) {}
>>>
>>> ontologyModel.writeAll(output, "RDF/XML-ABBREV","xmlbase");
>> Do you really want to use writeAll()? This also writes inferred and
>> imported triples to disk. Otherwise, use write()
>> And the argument "xmlbase" is for sure wrong. It expects the base URI of
>> the XML (or Turtle) document if exist - you can also use NULL or simply
>> use write(output, "RDF/XML-ABBREV")
>>
>>
>>
>> To sum up, writing to disk works for me as well. I don't see why this
>> should not work if the INSERT already modified the model.
>>
>>>
>>> PrintStream p= new PrintStream("yarab.owl");
>>> ontologyModel.writeAll(p, "RDF/XML", null);
>>> p.close();
>>>
>>>
>>>
>>>
>>>
>>> On Sat, Jun 10, 2017 at 8:32 AM, Lorenz B. <
>>> [email protected]> wrote:
>>>
>>>> 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/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 ?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" <[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.QueryPar
>> seException:
>>>>>>> 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/faa14ebf46b0fe32689edc808
>> dbf85d9
>>>>>>>>>> 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.
>>>>>>>>>>>>>       >>>>>>>>
>>>>>>>>>>>>>       >>>>>>>>
>>>>>>>>>>>>>       >>>>>>>>
>>>>>>>>>>>>>       >>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>> --
>>>> Lorenz Bühmann
>>>> AKSW group, University of Leipzig
>>>> Group: http://aksw.org - semantic web research center
>>>>
>>>>
>> --
>> Lorenz Bühmann
>> AKSW group, University of Leipzig
>> Group: http://aksw.org - semantic web research center
>>
>>
-- 
Lorenz Bühmann
AKSW group, University of Leipzig
Group: http://aksw.org - semantic web research center

Reply via email to