[ https://issues.apache.org/jira/browse/JENA-1402?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Greg Albiston updated JENA-1402: -------------------------------- Description: 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: {code: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) } {code} was: 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) } > 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: > {code: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) > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029)