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