You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@marmotta.apache.org by ss...@apache.org on 2014/11/11 13:39:52 UTC
marmotta git commit: SPARQL: - fix rounding issue in postgres - tests
for ceil, floor and round
Repository: marmotta
Updated Branches:
refs/heads/develop d1357660a -> d8ff4c8d3
SPARQL:
- fix rounding issue in postgres
- tests for ceil, floor and round
Project: http://git-wip-us.apache.org/repos/asf/marmotta/repo
Commit: http://git-wip-us.apache.org/repos/asf/marmotta/commit/d8ff4c8d
Tree: http://git-wip-us.apache.org/repos/asf/marmotta/tree/d8ff4c8d
Diff: http://git-wip-us.apache.org/repos/asf/marmotta/diff/d8ff4c8d
Branch: refs/heads/develop
Commit: d8ff4c8d3a53292a9d828fe77115569c8858a0ea
Parents: d135766
Author: Sebastian Schaffert <ss...@apache.org>
Authored: Tue Nov 11 13:40:31 2014 +0100
Committer: Sebastian Schaffert <ss...@apache.org>
Committed: Tue Nov 11 13:40:31 2014 +0100
----------------------------------------------------------------------
.../kiwi/sparql/function/numeric/NRound.java | 6 +++++-
.../testsuite/KiWiSparqlComplianceTest.java | 16 ++++++++++++++++
.../marmotta/kiwi/sparql/testsuite/ceil.sparql | 5 +++++
.../marmotta/kiwi/sparql/testsuite/floor.sparql | 5 +++++
.../marmotta/kiwi/sparql/testsuite/round.sparql | 5 +++++
.../kiwi/model/rdf/KiWiDoubleLiteral.java | 20 ++++++++++----------
6 files changed, 46 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/marmotta/blob/d8ff4c8d/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/numeric/NRound.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/numeric/NRound.java b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/numeric/NRound.java
index 0048b71..17bc217 100644
--- a/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/numeric/NRound.java
+++ b/libraries/kiwi/kiwi-sparql/src/main/java/org/apache/marmotta/kiwi/sparql/function/numeric/NRound.java
@@ -52,7 +52,11 @@ public class NRound extends Round implements NativeFunction {
*/
@Override
public String getNative(KiWiDialect dialect, String... args) {
- return String.format("round(%s)", args[0]);
+ if(dialect instanceof PostgreSQLDialect) {
+ return String.format("round(CAST(%s as decimal))", args[0]);
+ } else {
+ return String.format("round(%s)", args[0]);
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/marmotta/blob/d8ff4c8d/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/testsuite/KiWiSparqlComplianceTest.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/testsuite/KiWiSparqlComplianceTest.java b/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/testsuite/KiWiSparqlComplianceTest.java
index 1938b29..d73abd1 100644
--- a/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/testsuite/KiWiSparqlComplianceTest.java
+++ b/libraries/kiwi/kiwi-sparql/src/test/java/org/apache/marmotta/kiwi/sparql/testsuite/KiWiSparqlComplianceTest.java
@@ -163,6 +163,22 @@ public class KiWiSparqlComplianceTest {
}
+ @Test
+ public void testQueryFloor() throws Exception {
+ testQuery("floor.sparql");
+ }
+
+ @Test
+ public void testQueryCeil() throws Exception {
+ testQuery("ceil.sparql");
+ }
+
+ @Test
+ public void testQueryRound() throws Exception {
+ testQuery("round.sparql");
+ }
+
+
private void testQuery(String filename) throws Exception {
String queryString = IOUtils.toString(this.getClass().getResourceAsStream(filename), "UTF-8");
http://git-wip-us.apache.org/repos/asf/marmotta/blob/d8ff4c8d/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/ceil.sparql
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/ceil.sparql b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/ceil.sparql
new file mode 100644
index 0000000..1f19fe5
--- /dev/null
+++ b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/ceil.sparql
@@ -0,0 +1,5 @@
+PREFIX : <http://example.org/>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+SELECT ?s ?num (CEIL(?num) AS ?ceil) WHERE {
+ ?s :num ?num
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/marmotta/blob/d8ff4c8d/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/floor.sparql
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/floor.sparql b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/floor.sparql
new file mode 100644
index 0000000..fdc5747
--- /dev/null
+++ b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/floor.sparql
@@ -0,0 +1,5 @@
+PREFIX : <http://example.org/>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+SELECT ?s ?num (FLOOR(?num) AS ?floor) WHERE {
+ ?s :num ?num
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/marmotta/blob/d8ff4c8d/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/round.sparql
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/round.sparql b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/round.sparql
new file mode 100644
index 0000000..b588024
--- /dev/null
+++ b/libraries/kiwi/kiwi-sparql/src/test/resources/org/apache/marmotta/kiwi/sparql/testsuite/round.sparql
@@ -0,0 +1,5 @@
+PREFIX : <http://example.org/>
+PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
+SELECT ?s ?num (ROUND(?num) AS ?round) WHERE {
+ ?s :num ?num
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/marmotta/blob/d8ff4c8d/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java
----------------------------------------------------------------------
diff --git a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java
index 7f749b9..37636b4 100644
--- a/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java
+++ b/libraries/kiwi/kiwi-triplestore/src/main/java/org/apache/marmotta/kiwi/model/rdf/KiWiDoubleLiteral.java
@@ -17,10 +17,6 @@
*/
package org.apache.marmotta.kiwi.model.rdf;
-import org.apache.marmotta.commons.vocabulary.XSD;
-
-import java.math.BigDecimal;
-import java.math.MathContext;
import java.util.Date;
/**
@@ -67,12 +63,7 @@ public class KiWiDoubleLiteral extends KiWiStringLiteral {
public void setDoubleContent(Double doubleContent) {
this.doubleContent = doubleContent;
-
- if(XSD.Decimal.equals(getType())) {
- this.content = new BigDecimal(doubleContent, MathContext.DECIMAL64).toString();
- } else {
- this.content = doubleContent.toString();
- }
+ this.content = fmt(doubleContent);
}
@@ -97,4 +88,13 @@ public class KiWiDoubleLiteral extends KiWiStringLiteral {
public double doubleValue() {
return getDoubleContent().doubleValue();
}
+
+
+ private static String fmt(double d)
+ {
+ if(d == (long) d)
+ return String.format("%d",(long)d);
+ else
+ return String.format("%s",d);
+ }
}