jenkins-bot has submitted this change and it was merged.

Change subject: Fix T99006: omit statements with bnodes from value statements
......................................................................


Fix T99006: omit statements with bnodes from value statements

Change-Id: I424ce62d8974202afdfd992b1b752cf8d9048d95
---
M tools/src/main/java/org/wikidata/query/rdf/tool/rdf/UpdateBuilder.java
M tools/src/test/java/org/wikidata/query/rdf/tool/Matchers.java
M 
tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
3 files changed, 28 insertions(+), 0 deletions(-)

Approvals:
  Jdouglas: Looks good to me, approved
  jenkins-bot: Verified



diff --git 
a/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/UpdateBuilder.java 
b/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/UpdateBuilder.java
index e62bad0..728a386 100644
--- a/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/UpdateBuilder.java
+++ b/tools/src/main/java/org/wikidata/query/rdf/tool/rdf/UpdateBuilder.java
@@ -67,6 +67,10 @@
     public UpdateBuilder bindValues(String from, Collection<Statement> 
statements) {
         StringBuilder b = new StringBuilder(statements.size() * 30);
         for (Statement s : statements) {
+            if (s.getObject() instanceof BNode || s.getSubject() instanceof 
BNode) {
+                // skip bnodes since they can not be matched anyway
+                continue;
+            }
             b.append("( ").append(str(s.getSubject())).append(' ');
             b.append(str(s.getPredicate())).append(' ');
             b.append(str(s.getObject())).append(" )\n");
diff --git a/tools/src/test/java/org/wikidata/query/rdf/tool/Matchers.java 
b/tools/src/test/java/org/wikidata/query/rdf/tool/Matchers.java
index 7cb1e79..9212622 100644
--- a/tools/src/test/java/org/wikidata/query/rdf/tool/Matchers.java
+++ b/tools/src/test/java/org/wikidata/query/rdf/tool/Matchers.java
@@ -2,6 +2,7 @@
 
 import static org.hamcrest.Matchers.allOf;
 import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.instanceOf;
 import static org.wikidata.query.rdf.tool.StatementHelper.uri;
 
 import java.util.ArrayList;
@@ -32,12 +33,20 @@
     }
 
     /**
+     * Check binding to specific class.
+     */
+    public static Matcher<BindingSet> binds(String name, Class<?> value) {
+        return new BindsMatcher<Object>(name, instanceOf(value));
+    }
+
+    /**
      * Check a binding to a value.
      */
     public static <V> Matcher<BindingSet> binds(String name, V value) {
         return new BindsMatcher<V>(name, equalTo(value));
     }
 
+
     /**
      * Checks bindings.
      *
diff --git 
a/tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
 
b/tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
index c3604e7..15be401 100644
--- 
a/tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
+++ 
b/tools/src/test/java/org/wikidata/query/rdf/tool/rdf/RdfRepositoryIntegrationTest.java
@@ -17,7 +17,9 @@
 
 import org.junit.Before;
 import org.junit.Test;
+import org.openrdf.model.BNode;
 import org.openrdf.model.Statement;
+import org.openrdf.model.impl.BNodeImpl;
 import org.openrdf.model.impl.IntegerLiteralImpl;
 import org.openrdf.model.impl.LiteralImpl;
 import org.openrdf.query.QueryEvaluationException;
@@ -621,4 +623,17 @@
                 new IntegerLiteralImpl(new 
BigInteger(Integer.toString(version))));
         rdfRepository().sync(entityId, ImmutableList.of(statement));
     }
+
+    @Test
+    public void statementWithBnode() throws QueryEvaluationException {
+        rdfRepository().sync("Q42", ImmutableList.of(//
+                statement("Q42", "P396", new BNodeImpl("testBnode"))));
+        TupleQueryResult r = rdfRepository().query("SELECT * WHERE {?s ?p 
?o}");
+        assertTrue(r.hasNext());
+        assertThat(r.next(), allOf(//
+                binds("s", "Q42"), //
+                binds("p", "P396"), //
+                binds("o", BNode.class)));
+        assertFalse(r.hasNext());
+    }
 }

-- 
To view, visit https://gerrit.wikimedia.org/r/210818
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I424ce62d8974202afdfd992b1b752cf8d9048d95
Gerrit-PatchSet: 3
Gerrit-Project: wikidata/query/rdf
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <smalys...@wikimedia.org>
Gerrit-Reviewer: Jdouglas <jdoug...@wikimedia.org>
Gerrit-Reviewer: Manybubbles <never...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to