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 2012/05/23 22:10:01 UTC
svn commit: r1342011 - in /jena/trunk/jena-arq/src:
main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java
Author: andy
Date: Wed May 23 20:10:00 2012
New Revision: 1342011
URL: http://svn.apache.org/viewvc?rev=1342011&view=rev
Log:
Fit STRBEFORE and STRAFTER to latest SPARQL 1.1
Modified:
jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java
Modified: jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java?rev=1342011&r1=1342010&r2=1342011&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java (original)
+++ jena/trunk/jena-arq/src/main/java/com/hp/hpl/jena/sparql/expr/nodevalue/XSDFuncOp.java Wed May 23 20:10:00 2012
@@ -559,16 +559,11 @@ public class XSDFuncOp
Node mainArg = string.asNode() ;
if ( lex2.length() == 0 )
- // This is considered to be "no match" in fn:substring-before
- // SPARQL-WG proposed change::
- // return NodeValue.nvEmptyString ;
return calcReturn("", mainArg) ;
int i = lex1.indexOf(lex2) ;
if ( i < 0 )
- // SPARQL-WG proposed change::
- //return NodeValue.nvEmptyString ;
- return calcReturn("", mainArg) ;
+ return NodeValue.nvEmptyString ;
String s = lex1.substring(0, i) ;
return calcReturn(s, string.asNode()) ;
@@ -582,17 +577,11 @@ public class XSDFuncOp
Node mainArg = string.asNode() ;
if ( lex2.length() == 0 )
- // This is considered to be "no match" in fn:substring-after
- // SPARQL-WG proposed change::
- // return NodeValue.nvEmptyString ;
return calcReturn(lex1, mainArg) ;
int i = lex1.indexOf(lex2) ;
if ( i < 0 )
- // This is considered to be "no match" in fn:substring-before
- // SPARQL-WG proposed change::
- // return NodeValue.nvEmptyString ;
- return calcReturn("", mainArg) ;
+ return NodeValue.nvEmptyString ;
i += lex2.length() ;
String s = lex1.substring(i) ;
return calcReturn(s, string.asNode()) ;
Modified: jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java
URL: http://svn.apache.org/viewvc/jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java?rev=1342011&r1=1342010&r2=1342011&view=diff
==============================================================================
--- jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java (original)
+++ jena/trunk/jena-arq/src/test/java/com/hp/hpl/jena/sparql/expr/TestFunctions.java Wed May 23 20:10:00 2012
@@ -91,7 +91,11 @@ public class TestFunctions
@Test public void exprStrBefore6() { testEvalException("STRBEFORE('ab'@en, 'ab'@fr)") ; }
@Test public void exprStrBefore7() { testEvalException("STRBEFORE(123, 'ab'@fr)") ; }
@Test public void exprStrBefore8() { testEvalException("STRBEFORE('123'^^xsd:string, 12.3)") ; }
-
+ // No match case
+ @Test public void exprStrBefore9() { test("STRBEFORE('abc'^^xsd:string, 'z')", NodeValue.nvEmptyString) ; }
+ // Empty string case
+ @Test public void exprStrBefore10() { test("STRBEFORE('abc'^^xsd:string, '')", NodeValue.makeNode("", XSDDatatype.XSDstring)) ; }
+
@Test public void exprStrAfter0() { test("STRAFTER('abc', 'abcd')", NodeValue.nvEmptyString) ; }
@Test public void exprStrAfter1() { test("STRAFTER('abc'@en, 'b')", NodeValue.makeNode("c", "en", (String)null)) ; }
@Test public void exprStrAfter2() { test("STRAFTER('abc'^^xsd:string, 'a')", NodeValue.makeNode("bc", XSDDatatype.XSDstring)) ; }
@@ -102,6 +106,10 @@ public class TestFunctions
@Test public void exprStrAfter6() { testEvalException("STRAFTER('ab'@en, 'ab'@fr)") ; }
@Test public void exprStrAfter7() { testEvalException("STRAFTER(123, 'ab'@fr)") ; }
@Test public void exprStrAfter8() { testEvalException("STRAFTER('123'^^xsd:string, 12.3)") ; }
+ // No match case
+ @Test public void exprStrAfter9() { test("STRAFTER('abc'^^xsd:string, 'z')", NodeValue.nvEmptyString) ; }
+ // Empty string case
+ @Test public void exprStrAfter10() { test("STRAFTER('abc'^^xsd:string, '')", NodeValue.makeNode("abc", XSDDatatype.XSDstring)) ; }
@Test public void exprStrEnds0() { test("fn:ends-with('abc', '')", TRUE) ; }
@Test public void exprStrEnds1() { test("fn:ends-with('abc', 'c')", TRUE) ; }