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