Hi Qihong, You may have received the reminder email from Google that the final evaluation of the GSoC project is approaching. The "soft" deadline is 17 August, with the "hard" one on 21 August. It means there're only 2 weeks left for your remaining work. The tests of arq need improving, as Andy points out. You can also deliver the Fuseki part in the other branch for review in the mean time. Meanwhile, the documentation can be composed in jena web page (wiki). In order to save time, I suggest the 3 parts of the work go on simultaneously: 1) jena/arq: in master branch (to be merged first) 2) jena/fuseki: in JENA-491 branch 3) doc: in jena web page (wiki)
Best regards, Ying Jiang On Mon, Aug 10, 2015 at 9:58 PM, Andy Seaborne <[email protected]> wrote: > I've managed to integrate the latest updates. > > The scripted ones look, at first glance OK, but the data isn't very rich. > > Also, please can we have some API tests in "TestAPI". These are JUnit tests > in java. These should be have comprehensive coverage. > > I also tried out execConstructTriples(), I noticed that the result is from > all graphs. When just triples are asked for, only those in the default > graph should be returned. Template.getTriples calls Quad.asTriple. But it > needs to deal with just the default graph, and c can't rely on > Quad.asTriple. > > Andy > > > On 10/08/15 12:44, Qihong Lin wrote: >> >> Hi, >> >> I've enriched the syntax tests with "short form" and "default graph" >> cases. >> >> For execution tests, I add the test support in QueryTest for construct >> quad with the scripts files and data files in TRIG (see >> jena-arq/testing/ARQ/Construct/*.trig). I think construct quad should >> be part of the construct of ARQ. So I add the execution tests in >> jena-arq/testing/ARQ/Construct/manifest.ttl. >> >> The fuseki part of construct quad has been implemented (not committed >> yet). I'll submit the code as soon as the PR 89 [1] being merged. >> Anything to be improved for PR 89 from your reviews? >> >> regards, >> Qihong >> >> [1] https://github.com/apache/jena/pull/89 >> >> >> On Thu, Aug 6, 2015 at 8:55 PM, Andy Seaborne <[email protected]> wrote: >>> >>> Hi - looking better - I see the syntax tests I provided. >>> >>> Does that set of tests cover all cases of the new syntax? >>> >>> Next, we need execution tests for ARQ. >>> >>>> There will need to be execute tests in jena-arq as well. These can be >>>> Junit tests in java and do not need to be external script files. >>>> This is separate from testing in Fuseki. >>> >>> >>> >>> Do you have any other constraints on your time over the next 2 weeks? >>> >>> Andy >>> >>> >>> On 06/08/15 04:18, Qihong Lin wrote: >>>> >>>> >>>> Hi, >>>> >>>> I've fixed the bugs related to syntax checks. Please see my latest >>>> commits. Here're the output of the syntax files through qparse (you >>>> can also run "ExampleConstructQuads.java" to get the results). Are >>>> these with the expected behaviors, especially for >>>> "syntax-quad-construct-07.arq"? >>>> >>>> run-construct-quad-test: ======== File: syntax-quad-construct-01.arq >>>> PREFIX : <http://example/> >>>> >>>> CONSTRUCT { GRAPH :g { :s :p :o } } WHERE {} ==== Output of qparse >>>> --file syntax-quad-construct-01.arq PREFIX : <http://example/> >>>> >>>> CONSTRUCT { GRAPH :g { :s :p :o .} } WHERE { } ======== File: >>>> syntax-quad-construct-02.arq PREFIX : <http://example/> >>>> >>>> CONSTRUCT { GRAPH ?g { ?s ?p ?o } } WHERE { ?s ?p ?o } ==== Output of >>>> qparse --file syntax-quad-construct-02.arq PREFIX : >>>> <http://example/> >>>> >>>> CONSTRUCT { GRAPH ?g { ?s ?p ?o .} } WHERE { ?s ?p ?o } ======== >>>> File: syntax-quad-construct-03.arq PREFIX : <http://example/> >>>> >>>> CONSTRUCT { :s :p :o } WHERE {} ==== Output of qparse --file >>>> syntax-quad-construct-03.arq PREFIX : <http://example/> >>>> >>>> CONSTRUCT { :s :p :o . } WHERE { } ======== File: >>>> syntax-quad-construct-04.arq PREFIX : <http://example/> >>>> >>>> CONSTRUCT { GRAPH ?g { :s :p :o } ?s ?p ?o } WHERE { GRAPH ?g { ?s ?p >>>> ?o } } ==== Output of qparse --file syntax-quad-construct-04.arq >>>> PREFIX : <http://example/> >>>> >>>> CONSTRUCT { GRAPH ?g { :s :p :o .} ?s ?p ?o . } WHERE { GRAPH ?g { ?s >>>> ?p ?o } } ======== File: syntax-quad-construct-05.arq PREFIX : >>>> <http://example/> >>>> >>>> CONSTRUCT { ?s ?p ?o GRAPH ?g { :s :p :o } } WHERE { GRAPH ?g { ?s ?p >>>> ?o } } ==== Output of qparse --file syntax-quad-construct-05.arq >>>> PREFIX : <http://example/> >>>> >>>> CONSTRUCT { ?s ?p ?o . GRAPH ?g { :s :p :o .} } WHERE { GRAPH ?g { ?s >>>> ?p ?o } } ======== File: syntax-quad-construct-06.arq PREFIX : >>>> <http://example/> >>>> >>>> CONSTRUCT { GRAPH ?g { :s :p :o } ?s ?p ?o . ?s ?p ?o . GRAPH ?g { ?s >>>> ?p ?o } ?s ?p ?o . ?s ?p ?o GRAPH ?g { ?s ?p ?o } } WHERE { GRAPH ?g >>>> { ?s ?p ?o } } ==== Output of qparse --file >>>> syntax-quad-construct-06.arq PREFIX : <http://example/> >>>> >>>> CONSTRUCT { GRAPH ?g { :s :p :o .} ?s ?p ?o . ?s ?p ?o . GRAPH ?g { >>>> ?s ?p ?o .} ?s ?p ?o . ?s ?p ?o . GRAPH ?g { ?s ?p ?o .} } WHERE { >>>> GRAPH ?g { ?s ?p ?o } } ======== File: >>>> syntax-quad-construct-07.arq PREFIX : <http://example/> >>>> >>>> CONSTRUCT { GRAPH <urn:x-arq:DefaultGraphNode> {:s :p :o .} } WHERE >>>> {} ==== Output of qparse --file syntax-quad-construct-07.arq PREFIX >>>> : <http://example/> >>>> >>>> CONSTRUCT { :s :p :o . } WHERE { } ======== File: >>>> syntax-quad-construct-08.arq PREFIX : <http://example/> >>>> >>>> CONSTRUCT { GRAPH ?g { :s :p :o } GRAPH ?g1 { :s :p :o } } WHERE { } >>>> ==== Output of qparse --file syntax-quad-construct-08.arq PREFIX : >>>> <http://example/> >>>> >>>> CONSTRUCT { GRAPH ?g { :s :p :o .} GRAPH ?g1 { :s :p :o .} } WHERE { >>>> } >>>> >>>> On Sun, Aug 2, 2015 at 9:14 AM, Ying Jiang <[email protected]> >>>> wrote: >>>>> >>>>> >>>>> Hi Qihong, >>>>> >>>>> I re-checked the code you commited. Most of the hashCode issues >>>>> for arq.qparse that Andy pointed out are due to the incorrect >>>>> serialization of the Template. The code can only deal with the >>>>> quads with the same graph node, for which it may not always be the >>>>> case in practcial terms. Please make sure each example syntax file >>>>> can pass the checking process of arq.qparse. >>>>> >>>>> It's August now. You'd better hurry up and make the project >>>>> completed on time in the remaining weeks. >>>>> >>>>> Best regards, Ying Jiang >>>>> >>>>> On Thu, Jul 30, 2015 at 6:03 AM, Andy Seaborne <[email protected]> >>>>> wrote: >>>>>> >>>>>> >>>>>> Output of * each examnple syntax file (the queries are nonsense >>>>>> in practcial terms!) * running arq.qparse on the file * notes on >>>>>> what seems to be going on >>>>>> >>>>>> Andy >>>>>> >>>>>> ======== File: syntax-quad-construct-01.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH :g { :s :p :o } } WHERE {} ==== Output of >>>>>> qparse --file syntax-quad-construct-01.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH <http://example/g> {:s :p :o .} } WHERE { } >>>>>> ---- Issue: Minor: formatting of <http://example/g> should be :g >>>>>> >>>>>> ======== File: syntax-quad-construct-02.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g { ?s ?p ?o } } WHERE { ?s ?p ?o } ==== >>>>>> Output of qparse --file syntax-quad-construct-02.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {?s ?p ?o .} } WHERE { ?s ?p ?o } ---- OK >>>>>> >>>>>> ======== File: syntax-quad-construct-03.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { :s :p :o } WHERE {} ==== Output of qparse --file >>>>>> syntax-quad-construct-03.arq PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH <urn:x-arq:DefaultGraphNode> {:s :p :o .} } >>>>>> WHERE { } ---- Issue: Major: The output is contains "GRAPH >>>>>> <urn:x-arq:DefaultGraphNode>" >>>>>> >>>>>> Note: <urn:x-arq:DefaultGraphNode> is for internal use only. >>>>>> >>>>>> For syntax, that is a named graph just like <http://example/g> >>>>>> >>>>>> ======== File: syntax-quad-construct-04.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g { :s :p :o } ?s ?p ?o } WHERE { GRAPH ?g { >>>>>> ?s ?p ?o } } >>>>>> >>>>>> ==== Output of qparse --file syntax-quad-construct-04.arq >>>>>> >>>>>> **** Check failure: reparsed query hashCode does not equal parsed >>>>>> input query Query (hashCode: 1768688961)= PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . ?s ?p ?o .} } WHERE { GRAPH ?g { >>>>>> ?s ?p ?o } } >>>>>> >>>>>> >>>>>> Query2 (hashCode: 1896249441)= PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . ?s ?p ?o .} } WHERE { GRAPH ?g { >>>>>> ?s ?p ?o } } >>>>>> >>>>>> PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . ?s ?p ?o .} } WHERE { GRAPH ?g { >>>>>> ?s ?p ?o } } ---- Issue: The output puts the following triple >>>>>> into the GRAPH. See also syntax-quad-construct-08.arq >>>>>> >>>>>> ======== File: syntax-quad-construct-05.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { ?s ?p ?o GRAPH ?g { :s :p :o } } WHERE { GRAPH ?g { >>>>>> ?s ?p ?o } } >>>>>> >>>>>> ==== Output of qparse --file syntax-quad-construct-05.arq >>>>>> >>>>>> **** Check failure: reparsed query hashCode does not equal parsed >>>>>> input query Query (hashCode: -262437683)= PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH <urn:x-arq:DefaultGraphNode> {?s ?p ?o . :s :p >>>>>> :o .} } WHERE { GRAPH ?g { ?s ?p ?o } } >>>>>> >>>>>> >>>>>> Query2 (hashCode: -399379987)= PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH <urn:x-arq:DefaultGraphNode> {?s ?p ?o . :s :p >>>>>> :o .} } WHERE { GRAPH ?g { ?s ?p ?o } } >>>>>> >>>>>> PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH <urn:x-arq:DefaultGraphNode> {?s ?p ?o . :s :p >>>>>> :o .} } WHERE { GRAPH ?g { ?s ?p ?o } } ---- Issue: Plain ?s ?p >>>>>> ?o has been put into a named graph Adjacent blocks have merged. >>>>>> >>>>>> ======== File: syntax-quad-construct-06.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g { :s :p :o } ?s ?p ?o . ?s ?p ?o . GRAPH ?g >>>>>> { ?s ?p ?o } ?s ?p ?o . ?s ?p ?o GRAPH ?g { ?s ?p ?o } } WHERE { >>>>>> GRAPH ?g { ?s ?p ?o } } >>>>>> >>>>>> ==== Output of qparse --file syntax-quad-construct-06.arq >>>>>> >>>>>> **** Check failure: reparsed query hashCode does not equal parsed >>>>>> input query Query (hashCode: -1800516808)= PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . ?s ?p ?o . ?s ?p ?o . ?s ?p ?o >>>>>> . ?s ?p ?o . ?s ?p ?o . ?s ?p ?o .} } WHERE { GRAPH ?g { ?s ?p >>>>>> ?o } } >>>>>> >>>>>> >>>>>> Query2 (hashCode: -129418312)= PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . ?s ?p ?o . ?s ?p ?o . ?s ?p ?o >>>>>> . ?s ?p ?o . ?s ?p ?o . ?s ?p ?o .} } WHERE { GRAPH ?g { ?s ?p >>>>>> ?o } } >>>>>> >>>>>> PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . ?s ?p ?o . ?s ?p ?o . ?s ?p ?o >>>>>> . ?s ?p ?o . ?s ?p ?o . ?s ?p ?o .} } WHERE { GRAPH ?g { ?s ?p >>>>>> ?o } } ---- Issue: Same as previous. >>>>>> >>>>>> ======== File: syntax-quad-construct-07.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH <urn:x-arq:DefaultGraphNode> {:s :p :o .} } >>>>>> WHERE {} >>>>>> >>>>>> ==== Output of qparse --file syntax-quad-construct-07.arq PREFIX >>>>>> : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH <urn:x-arq:DefaultGraphNode> {:s :p :o .} } >>>>>> WHERE { } ---- Issue: Should be different. A named graph of >>>>>> GRAPH <urn:x-arq:DefaultGraphNode> is not the default graph. >>>>>> >>>>>> ======== File: syntax-quad-construct-08.arq PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g { :s :p :o } GRAPH ?g1 { :s :p :o } } WHERE >>>>>> { } >>>>>> >>>>>> ==== Output of qparse --file syntax-quad-construct-08.arq >>>>>> >>>>>> **** Check failure: reparsed query hashCode does not equal parsed >>>>>> input query Query (hashCode: 636900208)= PREFIX : >>>>>> <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . :s :p :o .} } WHERE { } >>>>>> >>>>>> >>>>>> Query2 (hashCode: 636999583)= PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . :s :p :o .} } WHERE { } >>>>>> >>>>>> PREFIX : <http://example/> >>>>>> >>>>>> CONSTRUCT { GRAPH ?g {:s :p :o . :s :p :o .} } WHERE { } ---- >>>>>> Issue: Adjacent GRAPH blocks have merged. >>>>>> >>> >
