[ 
https://issues.apache.org/jira/browse/CLEREZZA-670?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rupert Westenthaler updated CLEREZZA-670:
-----------------------------------------

    Attachment: 
CLEREZZA-670_rdf.rdfjson.int_value_overflow_and_wrong_datatypes_in_parser

After I added the equals assertion in the 

    RdfJsonSerializerProviderTest#testBigGraph()

I noticed that it still fails.

However after some debugging I found the error to be within the Parser.

When parsing typed literals such as

"http://www.w3.org/2006/vcard/ns#longitude": [
        {
          "value": "12.8407428",
          "type": "literal",
          "datatype": "http://www.w3.org/2001/XMLSchema#dateTime#float";
        }
      ]

the parser used the LiteralFactory to create a TypedLiteral based on the value.
This had the Result that all typed literal had the type xsd:string because the
"value" always returned a String.

The implementation included in this patch directly constructs a 
TypedLiteralImpl with the value and the datatype. 

In addition this new Patch updates the unit test mentioned above to make an
equals test between the serialized and parsed graph. In order to keep the
computation time of the equals check within some seconds I had to reduce the 
size of the graph to 5k triples.

This Patch replaces the first one

best
Rupert

                
> Integer MAX/MIN value overflow in Comparator of the RDF JSON serializer
> -----------------------------------------------------------------------
>
>                 Key: CLEREZZA-670
>                 URL: https://issues.apache.org/jira/browse/CLEREZZA-670
>             Project: Clerezza
>          Issue Type: Bug
>          Components: rdf.serialize
>            Reporter: Rupert Westenthaler
>              Labels: rdf/json
>         Attachments: 
> CLEREZZA-670_rdf.rdfjson.int_value_overflow_and_wrong_datatypes_in_parser, 
> CLEREZZA-670_rdf.rdfjson.int_value_overflow_in_subject_comparator
>
>
> The implementation of the SUBJECT_COMPARATOR within the 
> RdfJsonSerializingProvider sometimes encounters an int MAX/MIN value overflow.
> In such cases the compare method erroneously returns an 
>  * negative value - on a max value overflow or an
>  * positive value - on a min value overflow.
> what causes the Triple array used for the serialization not being correctly 
> sorted. In such cases subjects do appear multiple times within the generated 
> json output.
> To solve this one needs to replace the substraction of "hashA" from "hashB" 
> with a boolean check that returns a -1/+1.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to