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 <a...@apache.org> 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 <jpz6311...@gmail.com>
>> 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 <a...@apache.org>
>>> 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.
>>>>
>

Reply via email to