You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by cl...@apache.org on 2017/05/25 21:59:46 UTC

[5/7] jena git commit: fix JENA-1342 -- added support for Minus

fix JENA-1342 -- added support for Minus



Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/4e8574fc
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/4e8574fc
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/4e8574fc

Branch: refs/heads/master
Commit: 4e8574fcaefe558f30c412c53da3556eebaf13fb
Parents: 4cbf28e
Author: Claude Warren <cl...@apache.org>
Authored: Thu May 25 22:42:00 2017 +0100
Committer: Claude Warren <cl...@apache.org>
Committed: Thu May 25 22:42:00 2017 +0100

----------------------------------------------------------------------
 .../arq/querybuilder/AbstractQueryBuilder.java  |  5 ++
 .../jena/arq/querybuilder/AskBuilder.java       | 11 +--
 .../jena/arq/querybuilder/ConstructBuilder.java | 11 +--
 .../jena/arq/querybuilder/SelectBuilder.java    | 12 ++--
 .../arq/querybuilder/clauses/WhereClause.java   | 13 +++-
 .../arq/querybuilder/handlers/WhereHandler.java |  9 +++
 .../jena/arq/AbstractRegexpBasedTest.java       |  1 +
 .../querybuilder/clauses/WhereClauseTest.java   | 16 +++++
 .../querybuilder/handlers/WhereHandlerTest.java | 73 +++++++++++---------
 9 files changed, 102 insertions(+), 49 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java
index ea7d83b..447d5ff 100644
--- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java
+++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AbstractQueryBuilder.java
@@ -29,6 +29,7 @@ import org.apache.jena.arq.querybuilder.clauses.ValuesClause;
 import org.apache.jena.arq.querybuilder.handlers.HandlerBlock;
 import org.apache.jena.arq.querybuilder.handlers.PrologHandler;
 import org.apache.jena.arq.querybuilder.handlers.ValuesHandler;
+import org.apache.jena.arq.querybuilder.handlers.WhereHandler;
 import org.apache.jena.graph.FrontsNode ;
 import org.apache.jena.graph.Node ;
 import org.apache.jena.graph.NodeFactory ;
@@ -308,6 +309,10 @@ public abstract class AbstractQueryBuilder<T extends AbstractQueryBuilder<T>>
 	public ValuesHandler getValuesHandler() {
 		return getHandlerBlock().getValueHandler();
 	}
+	
+	public final WhereHandler getWhereHandler() {
+		return getHandlerBlock().getWhereHandler();
+	}
 
 	/**
 	 * Set a variable replacement. During build all instances of var in the

http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java
index 4835e66..c53bf04 100644
--- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java
+++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/AskBuilder.java
@@ -63,11 +63,6 @@ public class AskBuilder extends AbstractQueryBuilder<AskBuilder>
 	}
 
 	@Override
-	public WhereHandler getWhereHandler() {
-		return handlerBlock.getWhereHandler();
-	}
-
-	@Override
 	public AskBuilder clone() {
 		AskBuilder qb = new AskBuilder();
 		qb.handlerBlock.addAll(handlerBlock);
@@ -284,4 +279,10 @@ public class AskBuilder extends AbstractQueryBuilder<AskBuilder>
 	public Node list(Object... objs) {
 		return getWhereHandler().list(objs);
 	}
+	
+	@Override
+	public AskBuilder addMinus( AbstractQueryBuilder<?> t ) {
+		getWhereHandler().addMinus( t );
+		return this;
+	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java
index 434c5a9..804ff85 100644
--- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java
+++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/ConstructBuilder.java
@@ -56,11 +56,6 @@ public class ConstructBuilder extends AbstractQueryBuilder<ConstructBuilder> imp
 	}
 
 	@Override
-	public WhereHandler getWhereHandler() {
-		return handlerBlock.getWhereHandler();
-	}
-
-	@Override
 	public ConstructHandler getConstructHandler() {
 		return handlerBlock.getConstructHandler();
 	}
@@ -301,4 +296,10 @@ public class ConstructBuilder extends AbstractQueryBuilder<ConstructBuilder> imp
 	public Node list(Object... objs) {
 		return getWhereHandler().list(objs);
 	}
+	
+	@Override
+	public ConstructBuilder addMinus( AbstractQueryBuilder<?> t ) {
+		getWhereHandler().addMinus( t );
+		return this;
+	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java
index 3864cc9..6cd08a2 100644
--- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java
+++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/SelectBuilder.java
@@ -68,11 +68,6 @@ public class SelectBuilder extends AbstractQueryBuilder<SelectBuilder> implement
 	}
 
 	@Override
-	public WhereHandler getWhereHandler() {
-		return handlerBlock.getWhereHandler();
-	}
-
-	@Override
 	public SelectBuilder clone() {
 		SelectBuilder qb = new SelectBuilder();
 		qb.handlerBlock.addAll(handlerBlock);
@@ -385,5 +380,10 @@ public class SelectBuilder extends AbstractQueryBuilder<SelectBuilder> implement
 	public Node list(Object... objs) {
 		return getWhereHandler().list(objs);
 	}
-
+	
+	@Override
+	public SelectBuilder addMinus( AbstractQueryBuilder<?> t ) {
+		getWhereHandler().addMinus( t );
+		return this;
+	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/WhereClause.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/WhereClause.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/WhereClause.java
index 978255b..e67baa0 100644
--- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/WhereClause.java
+++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/clauses/WhereClause.java
@@ -123,7 +123,7 @@ public interface WhereClause<T extends AbstractQueryBuilder<T>> {
 	 * Adds an optional group pattern to the where clause.
 	 * 
 	 * @param t
-	 *            The select builder to add as a group pattern
+	 *            The select builder to add as an optional pattern
 	 * @return The Builder for chaining.
 	 */
 	public T addOptional(SelectBuilder t);
@@ -216,5 +216,16 @@ public interface WhereClause<T extends AbstractQueryBuilder<T>> {
 	 * @return the first blank node in the list.
 	 */
 	public Node list( Object ... objs );
+	
+	/**
+	 * Add a minus clause to the query.
+	 * 
+	 * https://www.w3.org/TR/2013/REC-sparql11-query-20130321/#rMinusGraphPattern
+	 * 
+	 * @param t 
+	 *            The select builder to add as a minus pattern
+	 * @return this builder for chaining
+	 */
+	public T addMinus( AbstractQueryBuilder<?> t );
 
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
index 0198006..9b52687 100644
--- a/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
+++ b/jena-extras/jena-querybuilder/src/main/java/org/apache/jena/arq/querybuilder/handlers/WhereHandler.java
@@ -419,4 +419,13 @@ public class WhereHandler implements Handler {
 
 		return retval;
 	}
+	
+	public void addMinus( AbstractQueryBuilder<?> t )
+	{
+		PrologHandler ph = new PrologHandler(query);
+		ph.addPrefixes( t.getPrologHandler().getPrefixes() );
+		ElementGroup clause = getClause();
+		ElementMinus minus = new ElementMinus(t.getWhereHandler().getClause());
+		clause.addElement(minus);
+	}
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/AbstractRegexpBasedTest.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/AbstractRegexpBasedTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/AbstractRegexpBasedTest.java
index ce7cf11..47e907b 100644
--- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/AbstractRegexpBasedTest.java
+++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/AbstractRegexpBasedTest.java
@@ -51,6 +51,7 @@ public abstract class AbstractRegexpBasedTest {
 	protected static final String BIND = "BIND";
 	protected static final String SEMI = OPT_SPACE+"\\;";
 	protected static final String VALUES = "VALUES" + SPACE;
+	protected static final String MINUS = "MINUS" + SPACE;
 
 	protected static String quote(String s) {
 		return String.format("%s%s%s", QUOTE, s, QUOTE);

http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java
index ba43404..6264222 100644
--- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java
+++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/clauses/WhereClauseTest.java
@@ -389,4 +389,20 @@ public class WhereClauseTest<T extends WhereClause<?>> extends
 		assertContainsRegex(
 				 "_:b0"+SPACE+ uri("foo") + SPACE	+ uri("bar"), builder.buildString());
 	}
+	
+	@ContractTest
+	public void testAddMinus() {
+		SelectBuilder sb = new SelectBuilder();
+		sb.addPrefix("pfx", "uri").addVar("?x")
+				.addWhere("<one>", "<two>", "three");
+		WhereClause<?> whereClause = getProducer().newInstance();
+		AbstractQueryBuilder<?> builder = whereClause.addMinus( sb );
+		
+		String str = builder.buildString();
+		
+		assertContainsRegex(MINUS + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE + quote("three") + CLOSE_CURLY,
+				str);	
+
+	}
+
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/4e8574fc/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java
----------------------------------------------------------------------
diff --git a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java
index aebacee..c7df825 100644
--- a/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java
+++ b/jena-extras/jena-querybuilder/src/test/java/org/apache/jena/arq/querybuilder/handlers/WhereHandlerTest.java
@@ -83,8 +83,8 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 
 	@Test
 	public void addWhereTriple() {
-		handler.addWhere( new TriplePath(
-				new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three"))));
+		handler.addWhere(new TriplePath(new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"),
+				NodeFactory.createURI("three"))));
 		assertContainsRegex(
 				WHERE + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE + uri("three") + OPT_SPACE + CLOSE_CURLY,
 				query.toString());
@@ -92,8 +92,9 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 
 	@Test
 	public void testAddWhereObjects() {
-		handler.addWhere(new TriplePath(new Triple(NodeFactory.createURI("one"), ResourceFactory.createResource("two").asNode(),
-				ResourceFactory.createLangLiteral("three", "en-US").asNode())));
+		handler.addWhere(
+				new TriplePath(new Triple(NodeFactory.createURI("one"), ResourceFactory.createResource("two").asNode(),
+						ResourceFactory.createLangLiteral("three", "en-US").asNode())));
 		assertContainsRegex(WHERE + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE + quote("three") + "@en-US"
 				+ OPT_SPACE + CLOSE_CURLY, query.toString());
 	}
@@ -102,13 +103,13 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 	public void testAddWhereObjectsWithPath() {
 		PrefixMapping pmap = new PrefixMappingImpl();
 		pmap.setNsPrefix("ts", "urn:test:");
-		Path path = PathParser.parse( "ts:two/ts:dos", pmap);
+		Path path = PathParser.parse("ts:two/ts:dos", pmap);
 		handler.addWhere(new TriplePath(NodeFactory.createURI("one"), path,
 				ResourceFactory.createLangLiteral("three", "en-US").asNode()));
-		assertContainsRegex(WHERE + OPEN_CURLY + uri("one") + SPACE + 
-				uri("urn:test:two")+"/"+uri("urn:test:dos") + SPACE + quote("three") + "@en-US"
-				+ OPT_SPACE + CLOSE_CURLY, query.toString());
+		assertContainsRegex(WHERE + OPEN_CURLY + uri("one") + SPACE + uri("urn:test:two") + "/" + uri("urn:test:dos")
+				+ SPACE + quote("three") + "@en-US" + OPT_SPACE + CLOSE_CURLY, query.toString());
 	}
+
 	@Test
 	public void testAddWhereAnonymous() {
 		handler.addWhere(new TriplePath(new Triple(Node.ANY, RDF.first.asNode(), Node.ANY)));
@@ -119,8 +120,8 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 
 	@Test
 	public void testAddOptionalStrings() {
-		handler.addOptional( new TriplePath(
-				new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three"))));
+		handler.addOptional(new TriplePath(new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"),
+				NodeFactory.createURI("three"))));
 		assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + OPEN_CURLY + uri("one") + SPACE + uri("two")
 				+ SPACE + uri("three") + OPT_SPACE + CLOSE_CURLY + CLOSE_CURLY, query.toString());
 	}
@@ -158,29 +159,30 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 
 	@Test
 	public void testAddOptionalObjects() {
-		handler.addOptional(new TriplePath(new Triple(NodeFactory.createURI("one"), ResourceFactory.createResource("two").asNode(),
-				ResourceFactory.createLangLiteral("three", "en-US").asNode())));
+		handler.addOptional(
+				new TriplePath(new Triple(NodeFactory.createURI("one"), ResourceFactory.createResource("two").asNode(),
+						ResourceFactory.createLangLiteral("three", "en-US").asNode())));
 		assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + OPEN_CURLY + uri("one") + SPACE + uri("two")
 				+ SPACE + quote("three") + "@en-US" + OPT_SPACE + CLOSE_CURLY + CLOSE_CURLY, query.toString());
 	}
-	
+
 	@Test
 	public void testAddOptionalObjectsWithPath() {
 		PrefixMapping pmap = new PrefixMappingImpl();
 		pmap.setNsPrefix("ts", "urn:test:");
-		Path path = PathParser.parse( "ts:two/ts:dos", pmap);
+		Path path = PathParser.parse("ts:two/ts:dos", pmap);
 
 		handler.addOptional(new TriplePath(NodeFactory.createURI("one"), path,
 				ResourceFactory.createLangLiteral("three", "en-US").asNode()));
-		assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + OPEN_CURLY + uri("one") 
-		+ SPACE + uri("urn:test:two")+"/"+uri("urn:test:dos")
-				+ SPACE + quote("three") + "@en-US" + OPT_SPACE + CLOSE_CURLY + CLOSE_CURLY, query.toString());
+		assertContainsRegex(WHERE + OPEN_CURLY + "OPTIONAL" + SPACE + OPEN_CURLY + uri("one") + SPACE
+				+ uri("urn:test:two") + "/" + uri("urn:test:dos") + SPACE + quote("three") + "@en-US" + OPT_SPACE
+				+ CLOSE_CURLY + CLOSE_CURLY, query.toString());
 	}
-	
+
 	@Test
 	public void testAddWhereStrings() {
-		handler.addWhere(new TriplePath(
-				new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three"))));
+		handler.addWhere(new TriplePath(new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"),
+				NodeFactory.createURI("three"))));
 		assertContainsRegex(
 				WHERE + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE + uri("three") + OPT_SPACE + CLOSE_CURLY,
 				query.toString());
@@ -219,8 +221,8 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 		SelectBuilder sb = new SelectBuilder();
 		sb.addPrefix("pfx", "uri").addVar("?x").addWhere("<one>", "<two>", "three");
 		handler.addSubQuery(sb);
-		assertContainsRegex(SELECT + var("x") + SPACE + WHERE + OPEN_CURLY + uri("one") + SPACE + uri("two")
-				+ SPACE + quote("three") + CLOSE_CURLY, query.toString());
+		assertContainsRegex(SELECT + var("x") + SPACE + WHERE + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE
+				+ quote("three") + CLOSE_CURLY, query.toString());
 	}
 
 	@Test
@@ -228,19 +230,17 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 		SelectBuilder sb = new SelectBuilder();
 		sb.addPrefix("pfx", "uri").addVar("count(*)", "?x").addWhere("<one>", "<two>", "three");
 		handler.addSubQuery(sb);
-		assertContainsRegex( SELECT + OPEN_PAREN+"count"+OPEN_PAREN+"\\*"+CLOSE_PAREN+SPACE+"AS" +SPACE+var("x")+CLOSE_PAREN+ SPACE + WHERE + OPEN_CURLY + uri("one") + 
-				SPACE + uri("two")
-				+ SPACE + quote("three") + CLOSE_CURLY, query.toString());
+		assertContainsRegex(SELECT + OPEN_PAREN + "count" + OPEN_PAREN + "\\*" + CLOSE_PAREN + SPACE + "AS" + SPACE
+				+ var("x") + CLOSE_PAREN + SPACE + WHERE + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE
+				+ quote("three") + CLOSE_CURLY, query.toString());
 	}
 
-
 	@Test
 	public void testAddSubQueryWithoutVars() {
 		SelectBuilder sb = new SelectBuilder();
 		sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", "three");
 		handler.addSubQuery(sb);
-		assertContainsRegex(
-				WHERE + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE + quote("three") + CLOSE_CURLY,
+		assertContainsRegex(WHERE + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE + quote("three") + CLOSE_CURLY,
 				query.toString());
 	}
 
@@ -257,7 +257,7 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 
 	@Test
 	public void testAddUnionToExisting() {
-		handler.addWhere( new TriplePath(
+		handler.addWhere(new TriplePath(
 				new Triple(NodeFactory.createURI("s"), NodeFactory.createURI("p"), NodeFactory.createURI("o"))));
 		SelectBuilder sb = new SelectBuilder();
 		sb.addWhere(
@@ -281,7 +281,7 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 
 	@Test
 	public void testAddUnionToExistingWithVar() {
-		handler.addWhere( new TriplePath(
+		handler.addWhere(new TriplePath(
 				new Triple(NodeFactory.createURI("s"), NodeFactory.createURI("p"), NodeFactory.createURI("o"))));
 		SelectBuilder sb = new SelectBuilder().addVar("x").addWhere(
 				new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three")));
@@ -296,8 +296,8 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 	public void addGraph() {
 
 		WhereHandler handler2 = new WhereHandler(new Query());
-		handler2.addWhere(new TriplePath(
-				new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"), NodeFactory.createURI("three"))));
+		handler2.addWhere(new TriplePath(new Triple(NodeFactory.createURI("one"), NodeFactory.createURI("two"),
+				NodeFactory.createURI("three"))));
 
 		handler.addGraph(NodeFactory.createURI("graph"), handler2);
 		assertContainsRegex(WHERE + OPEN_CURLY + "GRAPH" + SPACE + uri("graph") + SPACE + OPEN_CURLY + uri("one")
@@ -429,4 +429,13 @@ public class WhereHandlerTest extends AbstractHandlerTest {
 		assertContainsRegex("_:b0" + SPACE + uri("foo") + SPACE + uri("bar"), query.toString());
 
 	}
+
+	@Test
+	public void testAddMinus() {
+		SelectBuilder sb = new SelectBuilder();
+		sb.addPrefix("pfx", "uri").addWhere("<one>", "<two>", "three");
+		handler.addMinus(sb);
+		assertContainsRegex(MINUS + OPEN_CURLY + uri("one") + SPACE + uri("two") + SPACE + quote("three") + CLOSE_CURLY,
+				query.toString());		
+	}
 }