You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Greorg Bergman (JIRA)" <ji...@apache.org> on 2013/08/14 12:32:47 UTC

[jira] [Created] (JENA-511) Double-dot (two dots) at the end of triples in the SPARQL generated by the ARQ Serializer

Greorg Bergman created JENA-511:
-----------------------------------

             Summary: Double-dot (two dots) at the end of triples in the SPARQL generated by the ARQ Serializer
                 Key: JENA-511
                 URL: https://issues.apache.org/jira/browse/JENA-511
             Project: Apache Jena
          Issue Type: Bug
          Components: ARQ
    Affects Versions: Jena 2.10.1
            Reporter: Greorg Bergman
         Attachments: src.zip

Hello,

I do not know if this is a bug or not, but I have detected a weird behavior of the ARQ SPARQL Serializer (jena-arq-2.10.1.jar). 
When I build a SPARQL Query whose query pattern is defined by an ElementGroup with only one ElementTriplesBlock containing all the triples, the SPARQL produced by the ARQ Serializer is ok. 
See >>>
SELECT  ?x_1
WHERE
  { ?x_1  <http://www.test.com/predicate_1>  ?y_1 .
    ?y_1  <http://www.test.com/predicate_1>  <http://www.test.com/resource_1> .
    ?x_2  <http://www.test.com/predicate_2>  ?y_2 .
    ?y_2  <http://www.test.com/predicate_2>  <http://www.test.com/resource_2> .
  }

But when the SPARQL query pattern is defined by an ElementGroup with two ElementTriplesBlocks (each one containing several triples), the SPARQL generated is not anymore syntactically correct. Indeed, it contains a double-dot (two dots ". .") at the end of the last triple of the first ElementTriplesBlocks.
See >>>
SELECT  ?x_1
WHERE
  { ?x_1  <http://www.test.com/predicate_1>  ?y_1 .
    ?y_1  <http://www.test.com/predicate_1>  <http://www.test.com/resource_1> . . 
    ?x_2  <http://www.test.com/predicate_2>  ?y_2 .
    ?y_2  <http://www.test.com/predicate_2>  <http://www.test.com/resource_2> .
  }

Is this a bug ?
  
I have uploaded the source code which prints these two examples :
- the class AvoidBug shows the correct SPARQL query
- the class DisplayBug shows the bad SPARQL query
- Here follows the libs needed to run the project : 
	org/apache/jena/jena-arq/2.10.1/jena-arq-2.10.1.jar
	org/apache/jena/jena-core/2.10.1/jena-core-2.10.1.jar
	org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar
	log4j/log4j/1.2.16/log4j-1.2.16.jar"/>
	xerces/xercesImpl/2.11.0/xercesImpl-2.11.0.jar
	xml-apis/xml-apis/1.4.01/xml-apis-1.4.01.jar
	org/apache/jena/jena-iri/0.9.6/jena-iri-0.9.6.jar

I gave a look at the jena-arq code and - if this is an issue - the problem seems to be in the class com.hp.hpl.jena.sparql.serializer.FormatterElement :
(1) a dot is added at the end of the Triple serialisation : see the end of method formatSameSubject(...) at line 599. 
(2) but also during the ElementGroup serialisation when it contains one or more ElementTriplesBlock : see the middle of the method visit(ElementGroup el) at line 321.

When an ElementGroup contains two ElementTriplesBlock (or more), a dot is added during (1) (at the end of the last triple of the first ElementTriplesBlock processed) but also during (2) at the end of the first ElementTriplesBlock just after the previous dot. For me, the dot should be added during either (1) or (2) but not two times.

Hope this helps,
Greorg




--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira