Smalyshev has uploaded a new change for review.
https://gerrit.wikimedia.org/r/183147
Change subject: more files
......................................................................
more files
Change-Id: I3347dc9367c0a2b8c6d70647d643d4ba21f7bc2b
---
A rexster-init.groovy
A rexster-wikidata.xml
A runit.groovy
A runit.sh
A src/main/java/org/wikidata/gremlin/TreePipe.java
5 files changed, 183 insertions(+), 0 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/wikidata/gremlin
refs/changes/47/183147/1
diff --git a/rexster-init.groovy b/rexster-init.groovy
new file mode 100644
index 0000000..c36109b
--- /dev/null
+++ b/rexster-init.groovy
@@ -0,0 +1,6 @@
+w = org.wikidata.gremlin.RexsterInit.init(this)
+// Utility function for Rexster console
+groovy.lang.Script.metaClass.gg = {
+ rexster.getGraph('wikidata')
+}
+
diff --git a/rexster-wikidata.xml b/rexster-wikidata.xml
new file mode 100644
index 0000000..d70c5f0
--- /dev/null
+++ b/rexster-wikidata.xml
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<rexster>
+ <http>
+ <server-port>8182</server-port>
+ <server-host>0.0.0.0</server-host>
+ <base-uri>http://localhost</base-uri>
+ <web-root>public</web-root>
+ <character-set>UTF-8</character-set>
+ <enable-jmx>false</enable-jmx>
+ <enable-doghouse>true</enable-doghouse>
+ <max-post-size>2097152</max-post-size>
+ <max-header-size>8192</max-header-size>
+ <upload-timeout-millis>30000</upload-timeout-millis>
+ <thread-pool>
+ <worker>
+ <core-size>8</core-size>
+ <max-size>8</max-size>
+ </worker>
+ <kernal>
+ <core-size>4</core-size>
+ <max-size>4</max-size>
+ </kernal>
+ </thread-pool>
+ <io-strategy>leader-follower</io-strategy>
+ </http>
+ <rexpro>
+ <server-port>8184</server-port>
+ <server-host>0.0.0.0</server-host>
+ <session-max-idle>1790000</session-max-idle>
+ <session-check-interval>3000000</session-check-interval>
+ <connection-max-idle>180000</connection-max-idle>
+ <connection-check-interval>3000000</connection-check-interval>
+ <enable-jmx>false</enable-jmx>
+ <thread-pool>
+ <worker>
+ <core-size>16</core-size>
+ <max-size>256</max-size>
+ </worker>
+ <kernal>
+ <core-size>16</core-size>
+ <max-size>256</max-size>
+ </kernal>
+ </thread-pool>
+ <io-strategy>leader-follower</io-strategy>
+ </rexpro>
+ <shutdown-port>8183</shutdown-port>
+ <shutdown-host>127.0.0.1</shutdown-host>
+ <script-engines>
+ <script-engine>
+ <name>gremlin-groovy</name>
+ <reset-threshold>-1</reset-threshold>
+
<imports>com.tinkerpop.gremlin.*,com.tinkerpop.gremlin.java.*,com.tinkerpop.gremlin.pipes.filter.*,com.tinkerpop.gremlin.pipes.sideeffect.*,com.tinkerpop.gremlin.pipes.transform.*,com.tinkerpop.blueprints.*,com.tinkerpop.blueprints.impls.*,com.tinkerpop.blueprints.impls.tg.*,com.tinkerpop.blueprints.impls.neo4j.*,com.tinkerpop.blueprints.impls.neo4j.batch.*,com.tinkerpop.blueprints.impls.neo4j2.*,com.tinkerpop.blueprints.impls.neo4j2.batch.*,com.tinkerpop.blueprints.impls.orient.*,com.tinkerpop.blueprints.impls.orient.batch.*,com.tinkerpop.blueprints.impls.dex.*,com.tinkerpop.blueprints.impls.rexster.*,com.tinkerpop.blueprints.impls.sail.*,com.tinkerpop.blueprints.impls.sail.impls.*,com.tinkerpop.blueprints.util.*,com.tinkerpop.blueprints.util.io.*,com.tinkerpop.blueprints.util.io.gml.*,com.tinkerpop.blueprints.util.io.graphml.*,com.tinkerpop.blueprints.util.io.graphson.*,com.tinkerpop.blueprints.util.wrappers.*,com.tinkerpop.blueprints.util.wrappers.batch.*,com.tinkerpop.blueprints.util.wrappers.batch.cache.*,com.tinkerpop.blueprints.util.wrappers.event.*,com.tinkerpop.blueprints.util.wrappers.event.listener.*,com.tinkerpop.blueprints.util.wrappers.id.*,com.tinkerpop.blueprints.util.wrappers.partition.*,com.tinkerpop.blueprints.util.wrappers.readonly.*,com.tinkerpop.blueprints.oupls.sail.*,com.tinkerpop.blueprints.oupls.sail.pg.*,com.tinkerpop.blueprints.oupls.jung.*,com.tinkerpop.pipes.*,com.tinkerpop.pipes.branch.*,com.tinkerpop.pipes.filter.*,com.tinkerpop.pipes.sideeffect.*,com.tinkerpop.pipes.transform.*,com.tinkerpop.pipes.util.*,com.tinkerpop.pipes.util.iterators.*,com.tinkerpop.pipes.util.structures.*,org.apache.commons.configuration.*,com.thinkaurelius.titan.core.*,com.thinkaurelius.titan.core.attribute.*,com.thinkaurelius.titan.core.log.*,com.thinkaurelius.titan.core.olap.*,com.thinkaurelius.titan.core.schema.*,com.thinkaurelius.titan.core.util.*,com.thinkaurelius.titan.example.*,org.apache.commons.configuration.*,com.tinkerpop.gremlin.Tokens.T,com.tinkerpop.gremlin.groovy.*,org.wikidata.gremlin.*</imports>
+
<static-imports>com.tinkerpop.blueprints.Direction.*,com.tinkerpop.blueprints.TransactionalGraph$Conclusion.*,com.tinkerpop.blueprints.Compare.*,com.thinkaurelius.titan.core.attribute.Geo.*,com.thinkaurelius.titan.core.attribute.Text.*,com.tinkerpop.blueprints.Query$Compare.*</static-imports>
+ <init-scripts>rexster-init.groovy</init-scripts>
+ </script-engine>
+ </script-engines>
+ <security>
+ <authentication>
+ <type>none</type>
+ <configuration>
+ <users>
+ <user>
+ <username>rexster</username>
+ <password>rexster</password>
+ </user>
+ </users>
+ </configuration>
+ </authentication>
+ </security>
+ <metrics>
+ <reporter>
+ <type>jmx</type>
+ </reporter>
+ <reporter>
+ <type>http</type>
+ </reporter>
+ <reporter>
+ <type>console</type>
+ <properties>
+ <rates-time-unit>SECONDS</rates-time-unit>
+ <duration-time-unit>SECONDS</duration-time-unit>
+ <report-period>10</report-period>
+ <report-time-unit>MINUTES</report-time-unit>
+ <includes>http.rest.*</includes>
+ <excludes>http.rest.*.delete</excludes>
+ </properties>
+ </reporter>
+ </metrics>
+ <graphs>
+<graph>
+ <graph-name>wikidata</graph-name>
+
<graph-type>com.thinkaurelius.titan.tinkerpop.rexster.TitanGraphConfiguration</graph-type>
+ <graph-location></graph-location>
+ <graph-read-only>false</graph-read-only>
+ <properties>
+ <storage.backend>cassandrathrift</storage.backend>
+ <storage.hostname>localhost</storage.hostname>
+ <storage.buffer-size>2048</storage.buffer-size>
+ <cache.tx-dirty-size>2000</cache.tx-dirty-size>
+
<storage.cassandra.thrift.frame-size>256</storage.cassandra.thrift.frame-size>
+ <index.search.backend>elasticsearch</index.search.backend>
+
<index.search.elasticsearch.client-only>true</index.search.elasticsearch.client-only>
+ <query.force-index>true</query.force-index>
+ <query.smart-limit>true</query.smart-limit>
+ <tx.log-tx>true</tx.log-tx>
+ <tx.max-commit-time>10000</tx.max-commit-time>
+ </properties>
+ <extensions>
+ <allows>
+ <allow>tp:gremlin</allow>
+ <allow>tp-sample:*</allow>
+ <allow>tp:sparql</allow>
+ </allows>
+ </extensions>
+</graph>
+ </graphs>
+</rexster>
diff --git a/runit.groovy b/runit.groovy
new file mode 100644
index 0000000..a656fa6
--- /dev/null
+++ b/runit.groovy
@@ -0,0 +1,11 @@
+props = new org.apache.commons.configuration.PropertiesConfiguration()
+props.load("config.properties")
+//props.setProperty("storage.machine-id-appendix", index)
+g = TitanFactory.open(props)
+groovy.grape.Grape.grab(group:'org.wikidata', module:'gremlin',
version:'0.0.1-SNAPSHOT')
+import org.wikidata.gremlin.*;
+w = org.wikidata.gremlin.ConsoleInit.init(this)
+propLoader = new org.wikidata.gremlin.DataLoader(g, false).failOnError(true)
+dataLoader = new org.wikidata.gremlin.DataLoader(g, true)
+batchLoader = new org.wikidata.gremlin.DataLoader(g,
true).batch(true).failOnError(true)
+q = new org.wikidata.gremlin.QueryEngine(g)
diff --git a/runit.sh b/runit.sh
new file mode 100644
index 0000000..e351500
--- /dev/null
+++ b/runit.sh
@@ -0,0 +1,2 @@
+export INSTANCE=$1
+sh bin/gremlin.sh -l INFO runit.groovy
diff --git a/src/main/java/org/wikidata/gremlin/TreePipe.java
b/src/main/java/org/wikidata/gremlin/TreePipe.java
new file mode 100644
index 0000000..f4df445
--- /dev/null
+++ b/src/main/java/org/wikidata/gremlin/TreePipe.java
@@ -0,0 +1,47 @@
+package org.wikidata.gremlin;
+
+import java.util.NoSuchElementException;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.tinkerpop.blueprints.Vertex;
+import com.tinkerpop.gremlin.groovy.Gremlin;
+import com.tinkerpop.pipes.AbstractPipe;
+import com.tinkerpop.pipes.Pipe;
+import com.tinkerpop.pipes.transform.TransformPipe;
+import com.tinkerpop.pipes.util.iterators.SingleIterator;
+
+public class TreePipe extends AbstractPipe<Vertex,Vertex> implements
TransformPipe<Vertex, Vertex> {
+ public enum Direction {
+ IN, OUT
+ }
+
+ private Pipe<Vertex, Vertex> subtree = null;
+ private String[] props;
+ private Direction dir;
+
+ public TreePipe(Direction dir, String... props) {
+ if(props.length == 0) {
+ throw new RuntimeException("Property list should not be
empty");
+ }
+ this.props = props;
+ this.dir = dir;
+ }
+
+ @SuppressWarnings("unchecked")
+ public Vertex processNextStart() throws NoSuchElementException {
+ if(subtree == null) {
+ Vertex v = this.starts.next();
+ String propsList = StringUtils.join(props, "','");
+ String dirCall = ((dir ==
Direction.IN)?"in":"out")+"('"+propsList+"')";
+ String groovy =
String.format("_().as('x').%s.loop('x'){it.object.%s.hasNext()}{true}.dedup()",
+ dirCall, dirCall);
+ //System.out.println(groovy);
+ subtree = Gremlin.compile(groovy);
+ subtree.setStarts(new SingleIterator<Vertex>(v));
+ return v;
+ } else {
+ return subtree.next();
+ }
+ }
+}
--
To view, visit https://gerrit.wikimedia.org/r/183147
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3347dc9367c0a2b8c6d70647d643d4ba21f7bc2b
Gerrit-PatchSet: 1
Gerrit-Project: wikidata/gremlin
Gerrit-Branch: master
Gerrit-Owner: Smalyshev <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits