You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2017/06/15 12:47:08 UTC

[1/3] jena git commit: JENA-1313: Some cleanup

Repository: jena
Updated Branches:
  refs/heads/master 61526b892 -> fbd93e37f


JENA-1313: Some cleanup

NodeValue.sameAs (complete switch statement)
Add NodeValue.getSortKey and use instead of casts.
javadoc fixes


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/11f7ef8b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/11f7ef8b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/11f7ef8b

Branch: refs/heads/master
Commit: 11f7ef8b20d21151a0282015d3cda916e73bcf58
Parents: 739a718
Author: Andy Seaborne <an...@apache.org>
Authored: Wed Jun 14 21:23:50 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Wed Jun 14 21:23:50 2017 +0100

----------------------------------------------------------------------
 .../org/apache/jena/sparql/expr/NodeValue.java  | 19 +++++------
 .../sparql/expr/nodevalue/NodeValueSortKey.java | 34 +++++++++++---------
 .../sparql/function/library/FN_Collation.java   |  2 +-
 .../expr/nodevalue/TestNodeFunctions.java       |  2 +-
 4 files changed, 31 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/11f7ef8b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
index e84a6b5..b5b8f17 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
@@ -586,7 +586,9 @@ public abstract class NodeValue extends ExprNode
                 raise(new ExprEvalException("Unknown equality test: "+nv1+" and "+nv2)) ;
                 throw new ARQInternalErrorException("raise returned (sameValueAs)") ;
             }
-            
+            case VSPACE_SORTKEY:
+                return nv1.getSortKey().compareTo(nv2.getSortKey()) == 0 ;
+                
             case VSPACE_DIFFERENT:
                 // Known to be incompatible.
                 if ( ! SystemARQ.ValueExtensions && ( nv1.isLiteral() && nv2.isLiteral() ) )
@@ -771,13 +773,10 @@ public abstract class NodeValue extends ExprNode
                 return Expr.CMP_EQUAL;  // Both plain or both xsd:string.
             }
             case VSPACE_SORTKEY :
-            {
-                if (!(nv1 instanceof NodeValueSortKey) || !(nv2 instanceof NodeValueSortKey)) {
-                    raise(new ExprNotComparableException("Can't compare (not node value sort keys) "+nv1+" and "+nv2)) ;
-                }
-                return ((NodeValueSortKey) nv1).compareTo((NodeValueSortKey) nv2);
-            }
-            case VSPACE_BOOLEAN:    return XSDFuncOp.compareBoolean(nv1, nv2) ;
+                return nv1.getSortKey().compareTo(nv2.getSortKey());
+                
+            case VSPACE_BOOLEAN:
+                return XSDFuncOp.compareBoolean(nv1, nv2) ;
             
             case VSPACE_LANG:
             {
@@ -878,7 +877,8 @@ public abstract class NodeValue extends ExprNode
             return VSPACE_DATE ;
         
         if ( nv.isString())         return VSPACE_STRING ;
-        if ( nv.isSortKey())        return VSPACE_SORTKEY ;
+        if ( SystemARQ.ValueExtensions && nv.isSortKey() )
+            return VSPACE_SORTKEY ;
         if ( nv.isBoolean())        return VSPACE_BOOLEAN ;
         
         if ( ! nv.isLiteral() )     return VSPACE_NODE ;
@@ -967,6 +967,7 @@ public abstract class NodeValue extends ExprNode
     public boolean     getBoolean()     { raise(new ExprEvalTypeException("Not a boolean: "+this)) ; return false ; }
     public String      getString()      { raise(new ExprEvalTypeException("Not a string: "+this)) ; return null ; }
     public String      getLang()        { raise(new ExprEvalTypeException("Not a string: "+this)) ; return null ; }
+    public NodeValueSortKey getSortKey()        { raise(new ExprEvalTypeException("Not a sort key: "+this)) ; return null ; }
 
     public BigInteger  getInteger()     { raise(new ExprEvalTypeException("Not an integer: "+this)) ; return null ; }
     public BigDecimal  getDecimal()     { raise(new ExprEvalTypeException("Not a decimal: "+this)) ; return null ; }

http://git-wip-us.apache.org/repos/asf/jena/blob/11f7ef8b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeValueSortKey.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeValueSortKey.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeValueSortKey.java
index e14adb9..44051a3 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeValueSortKey.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/NodeValueSortKey.java
@@ -20,10 +20,12 @@ package org.apache.jena.sparql.expr.nodevalue;
 
 import java.text.Collator;
 import java.util.Locale;
+import java.util.Objects;
 
 import org.apache.jena.graph.Node;
 import org.apache.jena.graph.NodeFactory;
 import org.apache.jena.graph.Node_Literal;
+import org.apache.jena.sparql.expr.Expr;
 import org.apache.jena.sparql.expr.NodeValue;
 import org.apache.jena.sparql.util.FmtUtils;
 
@@ -57,6 +59,11 @@ public final class NodeValueSortKey extends NodeValue implements Comparable<Node
     public boolean isSortKey() {
         return Boolean.TRUE;
     }
+    
+    @Override
+    public NodeValueSortKey getSortKey() {
+        return this;
+    }
 
     @Override
     public String getString() {
@@ -98,21 +105,18 @@ public final class NodeValueSortKey extends NodeValue implements Comparable<Node
 
     @Override
     public int compareTo(NodeValueSortKey other) {
-        int cmp = 0;
-        if (other != null) {
-            String c1 = this.getCollation();
-            String c2 = other.getCollation();
-            if (c1 != null && c2 != null && c1.equals(c2)) {
-                // locales are parsed. Here we could think about caching if necessary
-                Locale desiredLocale = Locale.forLanguageTag(c1);
-                // collators are already stored in a concurrent map by the JVM, with <locale, softref<collator>>
-                Collator collator = Collator.getInstance(desiredLocale);
-                cmp = collator.compare(this.getString(), other.getString());
-            } else {
-                cmp = XSDFuncOp.compareString(this, other) ;
-            }
-        }
-        return cmp;
+        Objects.requireNonNull(other);
+        if ( this == other )
+            return Expr.CMP_EQUAL;
+        String c1 = this.getCollation();
+        String c2 = other.getCollation();
+        if (c1 == null || c2 == null || ! c1.equals(c2))
+            return XSDFuncOp.compareString(this, other) ;
+        // locales are parsed. Here we could think about caching if necessary
+        Locale desiredLocale = Locale.forLanguageTag(c1);
+        // collators are already stored in a concurrent map by the JVM, with <locale, softref<collator>>
+        Collator collator = Collator.getInstance(desiredLocale);
+        return collator.compare(this.getString(), other.getString());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/11f7ef8b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_Collation.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_Collation.java b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_Collation.java
index 4df2f47..cd28a37 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_Collation.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/function/library/FN_Collation.java
@@ -45,7 +45,7 @@ import org.apache.jena.sparql.function.FunctionBase2;
  * be discarded, and only the literal string value (i.e. Casa) will be taken into account
  * for this function.</p>
  *
- * @see {@link NodeValueSortKey}
+ * @see NodeValueSortKey
  */
 public class FN_Collation extends FunctionBase2 {
 

http://git-wip-us.apache.org/repos/asf/jena/blob/11f7ef8b/jena-arq/src/test/java/org/apache/jena/sparql/expr/nodevalue/TestNodeFunctions.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/expr/nodevalue/TestNodeFunctions.java b/jena-arq/src/test/java/org/apache/jena/sparql/expr/nodevalue/TestNodeFunctions.java
index b9de6d6..0c09ab4 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/expr/nodevalue/TestNodeFunctions.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/expr/nodevalue/TestNodeFunctions.java
@@ -34,7 +34,7 @@ public class TestNodeFunctions {
         NodeValue noveValue = NodeValue.makeString("Casa");
         NodeValue nv = NodeFunctions.sortKey(noveValue, "es");
         assertTrue(nv instanceof NodeValueSortKey);
-        assertEquals("es", ((NodeValueSortKey) nv).getCollation());
+        assertEquals("es", nv.getSortKey().getCollation());
     }
 
 }


[3/3] jena git commit: JENA-1313: Merge commit 'refs/pull/262/head' of github.com:apache/jena

Posted by an...@apache.org.
JENA-1313: Merge commit 'refs/pull/262/head' of github.com:apache/jena

This closes #262.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/fbd93e37
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/fbd93e37
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/fbd93e37

Branch: refs/heads/master
Commit: fbd93e37f35cfbc45af4ac3e5916853547d588d9
Parents: 61526b8 6cde9bd
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Jun 15 13:46:18 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Jun 15 13:46:18 2017 +0100

----------------------------------------------------------------------
 .../org/apache/jena/sparql/expr/NodeValue.java  | 58 +++++++++++---------
 .../sparql/expr/nodevalue/NodeValueSortKey.java | 34 +++++++-----
 .../sparql/function/library/FN_Collation.java   |  2 +-
 .../expr/nodevalue/TestNodeFunctions.java       |  2 +-
 4 files changed, 53 insertions(+), 43 deletions(-)
----------------------------------------------------------------------



[2/3] jena git commit: Some refinements of comments and handling of SystemARQ.ValueExtensions

Posted by an...@apache.org.
Some refinements of comments and handling of SystemARQ.ValueExtensions

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/6cde9bd3
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/6cde9bd3
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/6cde9bd3

Branch: refs/heads/master
Commit: 6cde9bd3b64026abdabd9cc58208675ac90ab2bd
Parents: 11f7ef8
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Jun 15 10:19:00 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Jun 15 10:25:59 2017 +0100

----------------------------------------------------------------------
 .../org/apache/jena/sparql/expr/NodeValue.java  | 43 +++++++++++---------
 1 file changed, 24 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/6cde9bd3/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
index b5b8f17..fc6e606 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
@@ -37,6 +37,7 @@ import javax.xml.datatype.DatatypeFactory ;
 import javax.xml.datatype.Duration ;
 import javax.xml.datatype.XMLGregorianCalendar ;
 
+import org.apache.jena.JenaRuntime;
 import org.apache.jena.atlas.lib.DateTimeUtils ;
 import org.apache.jena.atlas.lib.StrUtils ;
 import org.apache.jena.atlas.logging.Log ;
@@ -710,8 +711,8 @@ public abstract class NodeValue extends ExprNode
             {
                 int x = XSDFuncOp.compareDuration(nv1, nv2) ;
                 // Fix up - Java (Oracle java7 at least) returns "equals" for 
-                // "D1Y"/"D365D" and "D1M"/"D28D", and others split over 
-                // YearMoth/DayTime.
+                // "P1Y"/"P365D" and "P1M"/"P28D", and others split over 
+                // YearMonth/DayTime.
                 
                 // OR return Expr.CMP_INDETERMINATE ??
                 if ( x == Expr.CMP_EQUAL ) {
@@ -723,12 +724,11 @@ public abstract class NodeValue extends ExprNode
                 }
                 if ( x != Expr.CMP_INDETERMINATE )
                     return x ;
-                // Indeterminate => can't compare as strict values.
                 compType = ValueSpaceClassification.VSPACE_DIFFERENT ;
                 break ;
             }
 
-            //default:
+            // No special cases.
             case VSPACE_BOOLEAN :
             case VSPACE_DIFFERENT :
             case VSPACE_LANG :
@@ -758,11 +758,18 @@ public abstract class NodeValue extends ExprNode
             {
                 int cmp = XSDFuncOp.compareString(nv1, nv2) ;
                 
-                // Split plain literals and xsd:strings for sorting purposes.
                 if ( ! sortOrderingCompare )
                     return cmp ;
                 if ( cmp != Expr.CMP_EQUAL )
                     return cmp ;
+                
+                // Equality.
+                if ( JenaRuntime.isRDF11 )
+                    // RDF 1.1 : No literals without datatype.
+                    return cmp ;
+                
+                // RDF 1.0
+                // Split plain literals and xsd:strings for sorting purposes.
                 // Same by string value.
                 String dt1 = nv1.asNode().getLiteralDatatypeURI() ;
                 String dt2 = nv2.asNode().getLiteralDatatypeURI() ;
@@ -863,31 +870,29 @@ public abstract class NodeValue extends ExprNode
     {
         if ( nv.isNumber() )        return VSPACE_NUM ;
         if ( nv.isDateTime() )      return VSPACE_DATETIME ;
+        if ( nv.isString())         return VSPACE_STRING ;
+        if ( nv.isBoolean())        return VSPACE_BOOLEAN ;
+        if ( ! nv.isLiteral() )     return VSPACE_NODE ;
+
+        if ( ! SystemARQ.ValueExtensions )
+            return VSPACE_UNKNOWN ;
+        
+        // Datatypes and their value spaces that are an extension of strict SPARQL.
         if ( nv.isDate() )          return VSPACE_DATE ;
         if ( nv.isTime() )          return VSPACE_TIME ;
         if ( nv.isDuration() )      return VSPACE_DURATION ;
-        
+
         if ( nv.isGYear() )         return VSPACE_G_YEAR ;
         if ( nv.isGYearMonth() )    return VSPACE_G_YEARMONTH ;
         if ( nv.isGMonth() )        return VSPACE_G_MONTH ;
         if ( nv.isGMonthDay() )     return VSPACE_G_MONTHDAY ;
         if ( nv.isGDay() )          return VSPACE_G_DAY ;
         
-        if ( SystemARQ.ValueExtensions && nv.isDate() )
-            return VSPACE_DATE ;
-        
-        if ( nv.isString())         return VSPACE_STRING ;
-        if ( SystemARQ.ValueExtensions && nv.isSortKey() )
-            return VSPACE_SORTKEY ;
-        if ( nv.isBoolean())        return VSPACE_BOOLEAN ;
+        if ( nv.isSortKey() )       return VSPACE_SORTKEY ;
         
-        if ( ! nv.isLiteral() )     return VSPACE_NODE ;
-
-        if ( SystemARQ.ValueExtensions && nv.getNode() != null &&
-             nv.getNode().isLiteral() &&
-             ! nv.getNode().getLiteralLanguage().equals("") )
+        // Already a literal by this point.
+        if ( NodeUtils.hasLang(nv.asNode()) )
             return VSPACE_LANG ;
-        
         return VSPACE_UNKNOWN ;
     }