[MediaWiki-commits] [Gerrit] wikidata...rdf[master]: Add stored query for category traversal

2017-09-24 Thread jenkins-bot (Code Review)
jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/379838 )

Change subject: Add stored query for category traversal
..


Add stored query for category traversal

Example:
 SELECT ?out ?depth WHERE {
  SERVICE mediawiki:categoryTree {
  bd:serviceParam mediawiki:start 
 .
  bd:serviceParam mediawiki:direction "Reverse" .
  bd:serviceParam mediawiki:depth 5 .
  }
} ORDER BY ASC(?depth)

Change-Id: Ice1615d3d75e47beb9943ca6ca9fb39f6fe27588
Bug: T157676
---
M 
blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
A 
blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/categories/CategoriesStoredQuery.java
M 
blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/mwapi/MWApiServiceFactory.java
A common/src/main/java/org/wikidata/query/rdf/common/uri/Mediawiki.java
M common/src/main/java/org/wikidata/query/rdf/common/uri/Ontology.java
M dist/src/script/loadCategoryDump.sh
M dist/src/script/prefixes.conf
7 files changed, 115 insertions(+), 7 deletions(-)

Approvals:
  Smalyshev: Looks good to me, approved
  jenkins-bot: Verified
  Gehel: Looks good to me, but someone else must approve



diff --git 
a/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
index 3a6abe7..d17a0d2 100644
--- 
a/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
+++ 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
@@ -14,6 +14,7 @@
 import org.openrdf.query.resultio.TupleQueryResultFormat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.wikidata.query.rdf.blazegraph.categories.CategoriesStoredQuery;
 import org.wikidata.query.rdf.blazegraph.constraints.CoordinatePartBOp;
 import org.wikidata.query.rdf.blazegraph.constraints.DecodeUriBOp;
 import org.wikidata.query.rdf.blazegraph.constraints.WikibaseCornerBOp;
@@ -88,6 +89,7 @@
 LabelService.register();
 GeoService.register();
 MWApiServiceFactory.register();
+CategoriesStoredQuery.register();
 
 // Whitelist services we like by default
 reg.addWhitelistURL(GASService.Options.SERVICE_KEY.toString());
diff --git 
a/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/categories/CategoriesStoredQuery.java
 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/categories/CategoriesStoredQuery.java
new file mode 100644
index 000..5fe4719
--- /dev/null
+++ 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/categories/CategoriesStoredQuery.java
@@ -0,0 +1,84 @@
+package org.wikidata.query.rdf.blazegraph.categories;
+
+import org.openrdf.model.URI;
+import org.openrdf.model.impl.URIImpl;
+import org.wikidata.query.rdf.common.uri.Mediawiki;
+
+import com.bigdata.rdf.sparql.ast.eval.ServiceParams;
+import com.bigdata.rdf.sparql.ast.service.ServiceCallCreateParams;
+import com.bigdata.rdf.sparql.ast.service.ServiceRegistry;
+import com.bigdata.rdf.sparql.ast.service.storedquery.SimpleStoredQueryService;
+
+/**
+ * Stored query for categories:
+ * SELECT ?out ?depth WHERE {
+ *  SERVICE mediawiki:categoryTree {
+ *  bd:serviceParam mediawiki:start 
 .
+ *  bd:serviceParam mediawiki:direction "Reverse" .
+ *  bd:serviceParam mediawiki:depth 5 .
+ *  }
+ * } ORDER BY ASC(?depth)
+ *
+ * Directions are:
+ * - Forward: get parent category tree
+ * - Reverse: get subcategory tree
+ * - Undirected: both directions
+ */
+public class CategoriesStoredQuery extends SimpleStoredQueryService {
+/**
+ * The URI service key.
+ */
+public static final URI SERVICE_KEY = new URIImpl(Mediawiki.NAMESPACE + 
"categoryTree");
+/**
+ * start parameter.
+ */
+public static final URI START_PARAM = new URIImpl(Mediawiki.NAMESPACE + 
"start");
+/**
+ * direction parameter.
+ */
+public static final URI DIRECTION_PARAM = new URIImpl(Mediawiki.NAMESPACE 
+ "direction");
+/**
+ * max depth parameter.
+ */
+public static final URI DEPTH_PARAM = new URIImpl(Mediawiki.NAMESPACE + 
"depth");
+/**
+ * Default max depth.
+ */
+public static final int MAX_DEPTH = 8;
+/**
+ * Register the service so it is recognized by Blazegraph.
+ */
+public static void register() {
+ServiceRegistry reg = ServiceRegistry.getInstance();
+reg.add(SERVICE_KEY, new CategoriesStoredQuery());
+reg.addWhitelistURL(SERVICE_KEY.toString());
+}
+
+@Override
+protected String getQuery(ServiceCallCreateParams createParams,
+ServiceParams serviceParams) {
+final StringBuilder sb = new StringBuilder();
+
+final URI start = 

[MediaWiki-commits] [Gerrit] wikidata...rdf[master]: Add stored query for category traversal

2017-09-22 Thread Smalyshev (Code Review)
Smalyshev has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/379838 )

Change subject: Add stored query for category traversal
..

Add stored query for category traversal

Example:
 SELECT ?out ?depth WHERE {
  SERVICE mediawiki:categoryTree {
  bd:serviceParam mediawiki:start 
 .
  bd:serviceParam mediawiki:direction "Reverse" .
  bd:serviceParam mediawiki:depth 5 .
  }
} ORDER BY ASC(?depth)

Change-Id: Ice1615d3d75e47beb9943ca6ca9fb39f6fe27588
---
M 
blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
A 
blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/categories/CategoriesStoredQuery.java
M 
blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/mwapi/MWApiServiceFactory.java
A common/src/main/java/org/wikidata/query/rdf/common/uri/Mediawiki.java
M common/src/main/java/org/wikidata/query/rdf/common/uri/Ontology.java
M dist/src/script/loadCategoryDump.sh
M dist/src/script/prefixes.conf
7 files changed, 115 insertions(+), 7 deletions(-)


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

diff --git 
a/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
index 3a6abe7..d17a0d2 100644
--- 
a/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
+++ 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/WikibaseContextListener.java
@@ -14,6 +14,7 @@
 import org.openrdf.query.resultio.TupleQueryResultFormat;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.wikidata.query.rdf.blazegraph.categories.CategoriesStoredQuery;
 import org.wikidata.query.rdf.blazegraph.constraints.CoordinatePartBOp;
 import org.wikidata.query.rdf.blazegraph.constraints.DecodeUriBOp;
 import org.wikidata.query.rdf.blazegraph.constraints.WikibaseCornerBOp;
@@ -88,6 +89,7 @@
 LabelService.register();
 GeoService.register();
 MWApiServiceFactory.register();
+CategoriesStoredQuery.register();
 
 // Whitelist services we like by default
 reg.addWhitelistURL(GASService.Options.SERVICE_KEY.toString());
diff --git 
a/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/categories/CategoriesStoredQuery.java
 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/categories/CategoriesStoredQuery.java
new file mode 100644
index 000..5fe4719
--- /dev/null
+++ 
b/blazegraph/src/main/java/org/wikidata/query/rdf/blazegraph/categories/CategoriesStoredQuery.java
@@ -0,0 +1,84 @@
+package org.wikidata.query.rdf.blazegraph.categories;
+
+import org.openrdf.model.URI;
+import org.openrdf.model.impl.URIImpl;
+import org.wikidata.query.rdf.common.uri.Mediawiki;
+
+import com.bigdata.rdf.sparql.ast.eval.ServiceParams;
+import com.bigdata.rdf.sparql.ast.service.ServiceCallCreateParams;
+import com.bigdata.rdf.sparql.ast.service.ServiceRegistry;
+import com.bigdata.rdf.sparql.ast.service.storedquery.SimpleStoredQueryService;
+
+/**
+ * Stored query for categories:
+ * SELECT ?out ?depth WHERE {
+ *  SERVICE mediawiki:categoryTree {
+ *  bd:serviceParam mediawiki:start 
 .
+ *  bd:serviceParam mediawiki:direction "Reverse" .
+ *  bd:serviceParam mediawiki:depth 5 .
+ *  }
+ * } ORDER BY ASC(?depth)
+ *
+ * Directions are:
+ * - Forward: get parent category tree
+ * - Reverse: get subcategory tree
+ * - Undirected: both directions
+ */
+public class CategoriesStoredQuery extends SimpleStoredQueryService {
+/**
+ * The URI service key.
+ */
+public static final URI SERVICE_KEY = new URIImpl(Mediawiki.NAMESPACE + 
"categoryTree");
+/**
+ * start parameter.
+ */
+public static final URI START_PARAM = new URIImpl(Mediawiki.NAMESPACE + 
"start");
+/**
+ * direction parameter.
+ */
+public static final URI DIRECTION_PARAM = new URIImpl(Mediawiki.NAMESPACE 
+ "direction");
+/**
+ * max depth parameter.
+ */
+public static final URI DEPTH_PARAM = new URIImpl(Mediawiki.NAMESPACE + 
"depth");
+/**
+ * Default max depth.
+ */
+public static final int MAX_DEPTH = 8;
+/**
+ * Register the service so it is recognized by Blazegraph.
+ */
+public static void register() {
+ServiceRegistry reg = ServiceRegistry.getInstance();
+reg.add(SERVICE_KEY, new CategoriesStoredQuery());
+reg.addWhitelistURL(SERVICE_KEY.toString());
+}
+
+@Override
+protected String getQuery(ServiceCallCreateParams createParams,
+ServiceParams serviceParams) {
+final StringBuilder sb = new StringBuilder();
+
+final URI start = serviceParams.getAsURI(START_PARAM);
+final String direction =