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 2016/12/22 14:49:09 UTC
jena git commit: JENA-1269: Handle keywords 'true' and 'false' as
node values
Repository: jena
Updated Branches:
refs/heads/master 7443adf64 -> 9075e9ac2
JENA-1269: Handle keywords 'true' and 'false' as node values
Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/9075e9ac
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/9075e9ac
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/9075e9ac
Branch: refs/heads/master
Commit: 9075e9ac2b2969621691bee3b39fe85623b18e56
Parents: 7443adf
Author: Andy Seaborne <an...@apache.org>
Authored: Thu Dec 22 14:48:52 2016 +0000
Committer: Andy Seaborne <an...@apache.org>
Committed: Thu Dec 22 14:48:52 2016 +0000
----------------------------------------------------------------------
.../engine/binding/BindingInputStream.java | 25 ++++++++++++++++++--
.../engine/binding/TestBindingStreams.java | 9 +++++++
2 files changed, 32 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jena/blob/9075e9ac/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java
index e54c919..70e38bc 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/engine/binding/BindingInputStream.java
@@ -42,6 +42,7 @@ import org.apache.jena.riot.tokens.TokenType ;
import org.apache.jena.riot.tokens.Tokenizer ;
import org.apache.jena.riot.tokens.TokenizerFactory ;
import org.apache.jena.sparql.core.Var ;
+import org.apache.jena.sparql.graph.NodeConst ;
/** Language for reading in a stream of bindings.
* See <a href="https://cwiki.apache.org/confluence/display/JENA/BindingIO">BindingIO</a>
@@ -133,20 +134,28 @@ public class BindingInputStream extends LangEngine implements Iterator<Binding>,
{
while ( lookingAt(TokenType.KEYWORD) )
{
- Token t = nextToken() ;
+ Token t = peekToken() ;
if ( t.getImage().equalsIgnoreCase("VARS") )
{
+ nextToken();
directiveVars() ;
continue ;
}
if ( t.getImage().equalsIgnoreCase("PREFIX") )
{
+ nextToken();
directivePrefix() ;
continue ;
}
+ // Not a directive.
+ break;
}
}
+
+ protected final static String KW_TRUE = "true" ;
+ protected final static String KW_FALSE = "false" ;
+
@Override
protected Binding moveToNext()
{
@@ -172,8 +181,20 @@ public class BindingInputStream extends LangEngine implements Iterator<Binding>,
n = lastLine.get(v) ;
else if ( token.hasType(TokenType.BNODE) )
n = NodeFactory.createBlankNode(NodeFmtLib.decodeBNodeLabel(token.getImage())) ;
- else
+ else if ( token.hasType(TokenType.KEYWORD) ) {
+ // Keywords values.
+ String lex = token.getImage();
+ if ( lex.equals(KW_TRUE) )
+ n = NodeConst.nodeTrue ;
+ else if ( lex.equals(KW_FALSE) )
+ n = NodeConst.nodeFalse ;
+ else {
+ exception(token, "Keyword out of place: "+lex);
+ n = null;
+ }
+ } else {
n = profile.create(null, token) ;
+ }
binding.add(v, n) ;
}
i++ ;
http://git-wip-us.apache.org/repos/asf/jena/blob/9075e9ac/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TestBindingStreams.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TestBindingStreams.java b/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TestBindingStreams.java
index d10bf7e..557cdb9 100644
--- a/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TestBindingStreams.java
+++ b/jena-arq/src/test/java/org/apache/jena/sparql/engine/binding/TestBindingStreams.java
@@ -33,6 +33,7 @@ import org.apache.jena.riot.system.PrefixMapFactory ;
import org.apache.jena.riot.tokens.Tokenizer ;
import org.apache.jena.riot.tokens.TokenizerFactory ;
import org.apache.jena.sparql.core.Var ;
+import org.apache.jena.sparql.graph.NodeConst ;
import org.apache.jena.sparql.resultset.ResultSetCompare ;
import org.apache.jena.sparql.sse.Item ;
import org.apache.jena.sparql.sse.SSE ;
@@ -85,6 +86,14 @@ public class TestBindingStreams extends BaseTest
@Test public void bindingStream_10() { testRead("VARS ?a ?b . 1 2 . * 9 .", b12, b19) ; }
@Test public void bindingStream_11() { testRead("VARS ?a ?b ?c . 1 2 - . * 9 - .", b12, b19) ; }
+ @Test
+ public void bindingStream_12() {
+ BindingMap b = BindingFactory.create();
+ b.add(Var.alloc("a"), NodeConst.nodeTrue);
+ b.add(Var.alloc("c"), NodeConst.nodeFalse);
+ testRead("VARS ?a ?b ?c . true - false . ", b);
+ }
+
@Test public void bindingStream_20() { testRead("PREFIX : <http://example/> . VARS ?x .\n:abc .\n- .", x10, b0) ; }
@Test public void bindingStream_50() { testWriteRead(b12) ; }