[
https://issues.apache.org/jira/browse/JENA-1370?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16080052#comment-16080052
]
Daan Reid commented on JENA-1370:
---------------------------------
Several followup remarks (the users list seems to be quiet on this subject):
- We use a TDB database. According to the
[documentation|https://jena.apache.org/documentation/tdb/value_canonicalization.html]
`decimal` literals should be canonicalised. If this is extended to `double`
values our problem would be solved. Would this be a good feature request or is
there something about doubles that prevents canonicalisation?
- The inconsistency is located in the fact that
`GraphTripleStoreBase.contains()` checks by values, but
`GraphTripleStoreBase.delete()` defers to `NodeToTriplesMapMem.remove()` which
compares lexically. I believe this should be homogenised, or at least be made
configurable.
> Exponent values
> ----------------
>
> Key: JENA-1370
> URL: https://issues.apache.org/jira/browse/JENA-1370
> Project: Apache Jena
> Issue Type: Bug
> Components: Jena
> Affects Versions: Jena 3.2.0
> Environment: Java 1.8, Ubuntu Linux (xenial)
> Reporter: Daan Reid
>
> The equality between float values appears to be not working as I expected.
> Example code:
> {code:java}
> @Test
> public void testDeltaSimple() throws Exception {
> Graph oldGraph = GraphFactory.createGraphMem();
> Graph newGraph = GraphFactory.createGraphMem();
> // oldGraph:
> // <http://example.com/subject> <http://example.com/property>
> -1.700000e+00 ;
> // newGraph:
> // <http://example.com/subject> <http://example.com/property> -1.7E0 ;
> RDFDataMgr.read(oldGraph, "oldGraph.ttl");
> RDFDataMgr.read(newGraph, "newGraph.ttl");
> Delta delta = new Delta(oldGraph);
> delta.clear();
> GraphUtil.addInto(delta, newGraph);
> if (!delta.isIsomorphicWith(oldGraph)) {
>
> System.err.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
> RDFDataMgr.write(System.err, delta.getAdditions(), Lang.TURTLE);
>
> System.err.println("-------------------------------------------------------------------------------------");
> RDFDataMgr.write(System.err, delta.getDeletions(), Lang.TURTLE);
> fail("!!!!!!!!!!!!!!!!!!!!!! RDF not equal");
> }
> }
> {code}
> Result:
> {noformat}
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
> -------------------------------------------------------------------------------------
> <http://example.com/subject>
> <http://example.com/property> -1.700000e+00 .
> java.lang.AssertionError: !!!!!!!!!!!!!!!!!!!!!! RDF not equal
> {noformat}
> If I start with an empty graph for oldGraph, the new double value is properly
> added.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)