Smalyshev has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/276659

Change subject: Fix service handling on ASK query
......................................................................

Fix service handling on ASK query

Bug: T128944
Change-Id: Icc79e228d60486ebdccf972e4868c6c0f13fda4f
---
M 
blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/label/EmptyLabelServiceOptimizer.java
M 
blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/AbstractRandomizedBlazegraphTestBase.java
M 
blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/label/LabelServiceUnitTest.java
M gui
4 files changed, 33 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/wikidata/query/rdf 
refs/changes/59/276659/1

diff --git 
a/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/label/EmptyLabelServiceOptimizer.java
 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/label/EmptyLabelServiceOptimizer.java
index a2c238f..3e28c0f 100644
--- 
a/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/label/EmptyLabelServiceOptimizer.java
+++ 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/label/EmptyLabelServiceOptimizer.java
@@ -18,6 +18,8 @@
 import com.bigdata.rdf.sparql.ast.ConstantNode;
 import com.bigdata.rdf.sparql.ast.JoinGroupNode;
 import com.bigdata.rdf.sparql.ast.ProjectionNode;
+import com.bigdata.rdf.sparql.ast.QueryRoot;
+import com.bigdata.rdf.sparql.ast.QueryType;
 import com.bigdata.rdf.sparql.ast.StatementPatternNode;
 import com.bigdata.rdf.sparql.ast.StaticAnalysis;
 import com.bigdata.rdf.sparql.ast.VarNode;
@@ -41,6 +43,10 @@
 
     @Override
     protected void optimizeJoinGroup(AST2BOpContext ctx, StaticAnalysis sa, 
IBindingSet[] bSets, JoinGroupNode op) {
+        final QueryRoot root = sa.getQueryRoot();
+        if (root.getQueryType() == QueryType.ASK) {
+            return;
+        }
         for (ServiceNode service : op.getServiceNodes()) {
             BigdataValue serviceRef = service.getServiceRef().getValue();
             if (serviceRef == null) {
@@ -63,7 +69,7 @@
                 continue;
             }
 
-            addResolutions(ctx, g, sa.getQueryRoot().getProjection());
+            addResolutions(ctx, g, root.getProjection());
             // We can really only do this once....
             return;
         }
@@ -74,6 +80,9 @@
      * service.
      */
     private void addResolutions(AST2BOpContext ctx, JoinGroupNode g, 
ProjectionNode p) {
+        if (p == null) {
+            return;
+        }
         for (AssignmentNode a : p) {
             IVariable<IV> var = a.getVar();
             if (a.getValueExpression() != var) {
diff --git 
a/blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/AbstractRandomizedBlazegraphTestBase.java
 
b/blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/AbstractRandomizedBlazegraphTestBase.java
index 00debf1..0052d05 100644
--- 
a/blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/AbstractRandomizedBlazegraphTestBase.java
+++ 
b/blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/AbstractRandomizedBlazegraphTestBase.java
@@ -53,6 +53,19 @@
     }
 
     /**
+     * Run an ASK query.
+     */
+    protected boolean ask(String query) {
+        try {
+            ASTContainer astContainer = new 
Bigdata2ASTSPARQLParser().parseQuery2(query, null);
+
+            return ASTEvalHelper.evaluateBooleanQuery(store(), astContainer, 
new QueryBindingSet(), null);
+        } catch (MalformedQueryException | QueryEvaluationException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
      * Add a triple to the store.
      */
     protected void add(Object s, Object p, Object o) {
diff --git 
a/blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/label/LabelServiceUnitTest.java
 
b/blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/label/LabelServiceUnitTest.java
index 4963ed5..0f09cef 100644
--- 
a/blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/label/LabelServiceUnitTest.java
+++ 
b/blazegraph/src/test/java/org/wikidata/query/rdf/blazegraph/label/LabelServiceUnitTest.java
@@ -188,4 +188,14 @@
                 + labelType.substring(start + 1);
     }
 
+    @Test
+    public void labelOnAsk() {
+        StringBuilder query = uris().prefixes(Ontology.prefix(new 
StringBuilder()));
+        query.append("ASK {\n");
+        query.append("  ontology:dummy ontology:dummy ?s .\n");
+        query.append("  SERVICE ontology:label { bd:serviceParam 
ontology:language \"en,de\" . }\n");
+        query.append("}\n");
+        assertFalse(ask(query.toString()));
+    }
+
 }
diff --git a/gui b/gui
index 653f08e..08c2428 160000
--- a/gui
+++ b/gui
-Subproject commit 653f08e654eff0bebf34ad088edddf60cb62bde2
+Subproject commit 08c24283ec80465e43cb34d24d86926bdd129ffc

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icc79e228d60486ebdccf972e4868c6c0f13fda4f
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/query/rdf
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to