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 2015/12/17 21:58:19 UTC
[2/6] jena git commit: JENA-1102: EBV of "a"@en now handled.
JENA-1102: EBV of "a"@en now handled.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/2a50b822
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/2a50b822
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/2a50b822
Branch: refs/heads/master
Commit: 2a50b822d15d9505ae5c60fa02d2fd74ff34599c
Parents: 751e49c
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Dec 17 16:58:56 2015 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Dec 17 16:58:56 2015 +0000
----------------------------------------------------------------------
.../jena/sparql/expr/nodevalue/XSDFuncOp.java | 7 ++++--
.../apache/jena/sparql/expr/TestNodeValue.java | 26 +++++++++++++++++---
2 files changed, 27 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/2a50b822/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
index 6b2ea50..d0cadee 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/nodevalue/XSDFuncOp.java
@@ -218,14 +218,17 @@ public class XSDFuncOp
public static boolean booleanEffectiveValue(NodeValue nv) {
// Apply the "boolean effective value" rules
// boolean: value of the boolean (strictly, if derived from xsd:boolean)
- // string: length(string) > 0
+ // plain literal: lexical form length(string) > 0
// numeric: number != Nan && number != 0
// http://www.w3.org/TR/xquery/#dt-ebv
if ( nv.isBoolean() )
return nv.getBoolean() ;
if ( nv.isString() )
- return nv.getString().length() > 0 ;
+ return ! nv.getString().isEmpty() ;
+ if ( nv.isLiteral() && Util.isLangString(nv.asNode()) )
+ // Plain literals : no lang tag done by the test above.
+ return ! nv.getNode().getLiteralLexicalForm().isEmpty() ;
if ( nv.isInteger() )
return !nv.getInteger().equals(NodeValue.IntegerZERO) ;
if ( nv.isDecimal() )
http://git-wip-us.apache.org/repos/asf/jena/blob/2a50b822/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestNodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestNodeValue.java b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestNodeValue.java
index bb94098..465f896 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestNodeValue.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/expr/TestNodeValue.java
@@ -27,6 +27,7 @@ import org.apache.jena.JenaRuntime ;
import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.datatypes.xsd.XSDDatatype ;
import org.apache.jena.graph.Node ;
+import org.apache.jena.graph.NodeFactory ;
import org.apache.jena.sparql.expr.ExprEvalException ;
import org.apache.jena.sparql.expr.NodeValue ;
import org.apache.jena.sparql.expr.nodevalue.XSDFuncOp ;
@@ -554,8 +555,6 @@ public class TestNodeValue extends BaseTest
{
NodeValue v = NodeValue.makeInteger(1) ;
assertFalse("It's a boolean: "+v, v.isBoolean()) ;
- //assertTrue("Not a node: "+v, v.hasNode()) ;
- try { v.getBoolean() ; fail("getBoolean should fail") ; } catch (ExprEvalException e) {}
assertTrue("Not EBV true: "+v, XSDFuncOp.booleanEffectiveValue(v)) ;
}
@@ -563,7 +562,6 @@ public class TestNodeValue extends BaseTest
{
NodeValue v = NodeValue.makeInteger(0) ;
assertFalse("It's a boolean: "+v, v.isBoolean()) ;
- //assertTrue("Not a node: "+v, v.hasNode()) ;
try { v.getBoolean() ; fail("getBoolean should fail") ; } catch (ExprEvalException e) {}
assertFalse("Not EBV false: "+v, XSDFuncOp.booleanEffectiveValue(v)) ;
}
@@ -581,11 +579,31 @@ public class TestNodeValue extends BaseTest
{
NodeValue v = NodeValue.makeString("") ;
assertFalse("It's a boolean: "+v, v.isBoolean()) ;
- //assertTrue("Not a node: "+v, v.hasNode()) ;
try { v.getBoolean() ; fail("getBoolean should fail") ; } catch (ExprEvalException e) {}
assertFalse("Not EBV false: "+v, XSDFuncOp.booleanEffectiveValue(v)) ;
}
+ // EBV includes plain literals which includes language tagged literals.
+ @Test public void testEBV7()
+ {
+ Node x = NodeFactory.createLiteral("", "en") ;
+ NodeValue v = NodeValue.makeNode(x) ;
+ assertFalse("Not EBV false: "+v, XSDFuncOp.booleanEffectiveValue(v)) ;
+ }
+
+ @Test public void testEBV8()
+ {
+ Node x = NodeFactory.createLiteral("not empty", "en") ;
+ NodeValue v = NodeValue.makeNode(x) ;
+ assertTrue("Not EBV true: "+v, XSDFuncOp.booleanEffectiveValue(v)) ;
+ }
+
+ private static boolean filterEBV(NodeValue nv) {
+ try { return XSDFuncOp.booleanEffectiveValue(nv) ; }
+ catch (ExprEvalException ex) { return false ; }
+ }
+
+
@Test public void testFloatDouble1()
{
NodeValue v1 = NodeValue.makeNodeDouble("1.5") ;