You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Greg Albiston (JIRA)" <ji...@apache.org> on 2017/10/18 16:00:02 UTC

[jira] [Created] (JENA-1402) Subtracting two xsd:Duration gives incorrect results in SPARQL query

Greg Albiston created JENA-1402:
-----------------------------------

             Summary: Subtracting two xsd:Duration gives incorrect results in SPARQL query
                 Key: JENA-1402
                 URL: https://issues.apache.org/jira/browse/JENA-1402
             Project: Apache Jena
          Issue Type: Bug
          Components: ARQ
    Affects Versions: Jena 3.4.0
            Reporter: Greg Albiston


There is an issue when subtracting two xsd:durations that include:
* decimal seconds
* non-zero minutes
* second operand has a greater number of seconds than the first operand, i.e. the minutes are reduced. 

The result is a large number of minutes and incorrect seconds.

For example:
Integer, Larger: "PT2M3S" - "PT1M10S"  = "PT0M53S" CORRECT
Decimal, Smaller: "PT2M3.123S" - "PT1M1.123S" = "PT1M2.000S" CORRECT
Decimal, Larger, Seconds: "PT0M3.123S" - "PT1M10.123S"  = "-PT1M7.000S" CORRECT
Decimal, Larger, Minutes: "PT2M3.123S" - "PT1M10.123S"  = "PT883M0.020S" INCORRECT
Decimal, Larger, Hours: "PT1H4M3.123S" - "PT0M10.123S" = "PT1H3883M0.020S" INCORRECT

Example SPARQL:

SELECT ?res ?op1 ?op2
WHERE{

   VALUES (?op1 ?op2) {
        ("PT2M3S"^^<http://www.w3.org/2001/XMLSchema#duration> "PT1M10S"^^<http://www.w3.org/2001/XMLSchema#duration>)
        ("PT2M3.123S"^^<http://www.w3.org/2001/XMLSchema#duration> "PT1M1.123S"^^<http://www.w3.org/2001/XMLSchema#duration>)
        ("PT0M3.123S"^^<http://www.w3.org/2001/XMLSchema#duration> "PT1M10.123S"^^<http://www.w3.org/2001/XMLSchema#duration>)
        ("PT2M3.123S"^^<http://www.w3.org/2001/XMLSchema#duration> "PT1M10.123S"^^<http://www.w3.org/2001/XMLSchema#duration>)
        ("PT1H4M3.123S"^^<http://www.w3.org/2001/XMLSchema#duration> "PT0M10.123S"^^<http://www.w3.org/2001/XMLSchema#duration>)
    }

    BIND(?op1 - ?op2 AS ?res)

}




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)