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:09 UTC

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

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 ;
     }