[jira] [Commented] (TINKERPOP-1632) Create a set of default functions

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16192167#comment-16192167
 ] 

ASF GitHub Bot commented on TINKERPOP-1632:
---

Github user okram commented on the issue:

https://github.com/apache/tinkerpop/pull/729
  
```
[INFO] 

[INFO] BUILD SUCCESS
[INFO] 

[INFO] Total time: 02:34 h
[INFO] Finished at: 2017-10-04T16:21:53-06:00
[INFO] Final Memory: 165M/1543M
[INFO] 

```


> Create a set of default functions
> -
>
> Key: TINKERPOP-1632
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1632
> Project: TinkerPop
>  Issue Type: Improvement
>  Components: process
>Affects Versions: 3.3.0
>Reporter: Daniel Kuppitz
>
> We already have a a set of default BiFunctions / operators, that are not 
> treated as lambdas. We should also have a bunch of simple functions, that can 
> then be used in {{map()}} or {{sack()}} and that can be serialized as 
> bytecode. For example:
> {noformat}
> ...map(sqrt)
> ...map(log)
> ...sack(sigmoid) // compute sigmoid of the current sack and update the 
> sack
> ...sack(cos).by("x") // compute the cosine of the current element's "x" and 
> assign / overwrite the current sack value
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[GitHub] tinkerpop issue #729: TINKERPOP-1632: Create a set of default functions

2017-10-04 Thread okram
Github user okram commented on the issue:

https://github.com/apache/tinkerpop/pull/729
  
```
[INFO] 

[INFO] BUILD SUCCESS
[INFO] 

[INFO] Total time: 02:34 h
[INFO] Finished at: 2017-10-04T16:21:53-06:00
[INFO] Final Memory: 165M/1543M
[INFO] 

```


---


[jira] [Commented] (TINKERPOP-1632) Create a set of default functions

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16192106#comment-16192106
 ] 

ASF GitHub Bot commented on TINKERPOP-1632:
---

Github user okram commented on a diff in the pull request:

https://github.com/apache/tinkerpop/pull/729#discussion_r142803300
  
--- Diff: 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java
 ---
@@ -0,0 +1,171 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.step.map;
+
+import net.objecthunter.exp4j.Expression;
+import net.objecthunter.exp4j.ExpressionBuilder;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class MathStep extends MapStep implements 
ByModulating, TraversalParent, Scoping, PathProcessor {
+
+private static final String CURRENT = "_";
+private final String equation;
+private final Set variables;
+private TraversalRing traversalRing = new 
TraversalRing<>();
+private Set keepLabels;
+
+public MathStep(final Traversal.Admin traversal, final String 
equation) {
+super(traversal);
+this.equation = equation;
+this.variables = MathStep.getVariables(this.equation);
+
+}
+
+@Override
+protected Traverser.Admin processNextStart() {
+return 
PathProcessor.processTraverserPathLabels(super.processNextStart(), 
this.keepLabels);
+}
+
+@Override
+protected Double map(final Traverser.Admin traverser) {
+final Expression expression = new ExpressionBuilder(this.equation)
--- End diff --

Not with threading. Thus, OLAP and any other execution engine that uses 
threads will get inconsistent results.


> Create a set of default functions
> -
>
> Key: TINKERPOP-1632
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1632
> Project: TinkerPop
>  Issue Type: Improvement
>  Components: process
>Affects Versions: 3.3.0
>Reporter: Daniel Kuppitz
>
> We already have a a set of default BiFunctions / operators, that are not 
> treated as lambdas. We should also have a bunch of simple functions, that can 
> then be used in {{map()}} or {{sack()}} and that can be serialized as 
> bytecode. For example:
> {noformat}
> ...map(sqrt)
> ...map(log)
> ...sack(sigmoid) // compute sigmoid of the current sack and update the 
> sack
> ...sack(cos).by("x") // compute the cosine of the current element's "x" and 
> assign / overwrite the current sack value
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (TINKERPOP-1632) Create a set of default functions

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16192093#comment-16192093
 ] 

ASF GitHub Bot commented on TINKERPOP-1632:
---

Github user twilmes commented on a diff in the pull request:

https://github.com/apache/tinkerpop/pull/729#discussion_r142801689
  
--- Diff: 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java
 ---
@@ -0,0 +1,171 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.step.map;
+
+import net.objecthunter.exp4j.Expression;
+import net.objecthunter.exp4j.ExpressionBuilder;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class MathStep extends MapStep implements 
ByModulating, TraversalParent, Scoping, PathProcessor {
+
+private static final String CURRENT = "_";
+private final String equation;
+private final Set variables;
+private TraversalRing traversalRing = new 
TraversalRing<>();
+private Set keepLabels;
+
+public MathStep(final Traversal.Admin traversal, final String 
equation) {
+super(traversal);
+this.equation = equation;
+this.variables = MathStep.getVariables(this.equation);
+
+}
+
+@Override
+protected Traverser.Admin processNextStart() {
+return 
PathProcessor.processTraverserPathLabels(super.processNextStart(), 
this.keepLabels);
+}
+
+@Override
+protected Double map(final Traverser.Admin traverser) {
+final Expression expression = new ExpressionBuilder(this.equation)
--- End diff --

Looking at the exp4j source, I think an `Expression`  can be reused. If so, 
this could be moved up into the constructor to save the repeated initialization 
cost.


> Create a set of default functions
> -
>
> Key: TINKERPOP-1632
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1632
> Project: TinkerPop
>  Issue Type: Improvement
>  Components: process
>Affects Versions: 3.3.0
>Reporter: Daniel Kuppitz
>
> We already have a a set of default BiFunctions / operators, that are not 
> treated as lambdas. We should also have a bunch of simple functions, that can 
> then be used in {{map()}} or {{sack()}} and that can be serialized as 
> bytecode. For example:
> {noformat}
> ...map(sqrt)
> ...map(log)
> ...sack(sigmoid) // compute sigmoid of the current sack and update the 
> sack
> ...sack(cos).by("x") // compute the cosine of the current element's "x" and 
> assign / overwrite the current sack value
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[GitHub] tinkerpop pull request #729: TINKERPOP-1632: Create a set of default functio...

2017-10-04 Thread twilmes
Github user twilmes commented on a diff in the pull request:

https://github.com/apache/tinkerpop/pull/729#discussion_r142801689
  
--- Diff: 
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/MathStep.java
 ---
@@ -0,0 +1,171 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+
+package org.apache.tinkerpop.gremlin.process.traversal.step.map;
+
+import net.objecthunter.exp4j.Expression;
+import net.objecthunter.exp4j.ExpressionBuilder;
+import org.apache.tinkerpop.gremlin.process.traversal.Pop;
+import org.apache.tinkerpop.gremlin.process.traversal.Traversal;
+import org.apache.tinkerpop.gremlin.process.traversal.Traverser;
+import org.apache.tinkerpop.gremlin.process.traversal.step.ByModulating;
+import org.apache.tinkerpop.gremlin.process.traversal.step.PathProcessor;
+import org.apache.tinkerpop.gremlin.process.traversal.step.Scoping;
+import org.apache.tinkerpop.gremlin.process.traversal.step.TraversalParent;
+import 
org.apache.tinkerpop.gremlin.process.traversal.traverser.TraverserRequirement;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalRing;
+import org.apache.tinkerpop.gremlin.process.traversal.util.TraversalUtil;
+import org.apache.tinkerpop.gremlin.structure.util.StringFactory;
+
+import java.util.HashSet;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * @author Marko A. Rodriguez (http://markorodriguez.com)
+ */
+public final class MathStep extends MapStep implements 
ByModulating, TraversalParent, Scoping, PathProcessor {
+
+private static final String CURRENT = "_";
+private final String equation;
+private final Set variables;
+private TraversalRing traversalRing = new 
TraversalRing<>();
+private Set keepLabels;
+
+public MathStep(final Traversal.Admin traversal, final String 
equation) {
+super(traversal);
+this.equation = equation;
+this.variables = MathStep.getVariables(this.equation);
+
+}
+
+@Override
+protected Traverser.Admin processNextStart() {
+return 
PathProcessor.processTraverserPathLabels(super.processNextStart(), 
this.keepLabels);
+}
+
+@Override
+protected Double map(final Traverser.Admin traverser) {
+final Expression expression = new ExpressionBuilder(this.equation)
--- End diff --

Looking at the exp4j source, I think an `Expression`  can be reused. If so, 
this could be moved up into the constructor to save the repeated initialization 
cost.


---


Re: Im starting a new project, but tinkerpop3 seems incapable, considering forking tinkerpop2

2017-10-04 Thread Jeffrey Freeman
Awesome, yea let me know, would love to take a look. Much appreciated.

On Wed, Oct 4, 2017 at 1:51 PM, Joshua Shinavier  wrote:

> Sure. I had hacked together a basic implementation, minus tests and a few
> key methods, before I felt compelled to leave for work. Maybe I can put up
> the code tonight or tomorrow morning.
>
> On Wed, Oct 4, 2017 at 10:44 AM, Jeffrey Freeman <
> jeffrey.free...@syncleus.com> wrote:
>
> > I'd love to see that if its available somewhere.
> >
> > On Wed, Oct 4, 2017 at 12:56 PM, Joshua Shinavier 
> > wrote:
> >
> > > That's probably a worthwhile exercise. FYI, I have gotten a start on a
> > > minimal Redis-based impl -- not so much as a template as an example of
> > what
> > > can be done in a few lines of code.
> > >
> > >
> > > On Wed, Oct 4, 2017 at 9:51 AM, Jeffrey Freeman <
> > > jeffrey.free...@syncleus.com> wrote:
> > >
> > > > Thanks, ill try to take a stab at this and write a hello world i can
> > use
> > > as
> > > > a template. If i do such a hello world would it be useful for you
> guys.
> > > >
> > > > On Wed, Oct 4, 2017 at 11:37 AM, Marko Rodriguez <
> okramma...@gmail.com
> > >
> > > > wrote:
> > > >
> > > > > Hello,
> > > > >
> > > > > You have the following tasks:
> > > > >
> > > > > 1. Implement Graph, Vertex, Edge, VertexProperty, Property
> > > > > interfaces.
> > > > > 2. Implement Transactional interface (optional).
> > > > > 3. Write as many strategies as you want to take advantage
> of
> > > > > provider-specific capabilities.
> > > > > - TinkerGraph itself has 2:
> > > > > https://github.com/apache/
> > > tinkerpop/tree/master/
> > > > > tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> > > > > gremlin/tinkergraph/process/traversal/strategy/optimization <
> > > > > https://github.com/apache/tinkerpop/tree/master/
> > > > > tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> > > > > gremlin/tinkergraph/process/traversal/strategy/optimization>
> > > > >
> > > > > If you want a minimal “hello world,” then please look at
> TinkerGraph
> > > and
> > > > > Neo4jGraph in our repository. Those are both “reference
> > > implementations.”
> > > > >
> > > > > https://github.com/apache/tinkerpop/tree/master/
> > > > > tinkergraph-gremlin  > tinkerpop/tree/master/
> > > > > tinkergraph-gremlin>
> > > > > https://github.com/apache/tinkerpop/tree/master/neo4j-
> > gremlin
> > > <
> > > > > https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin>
> > > > >
> > > > > Good luck,
> > > > > Marko.
> > > > >
> > > > > http://markorodriguez.com
> > > > >
> > > > >
> > > > >
> > > > > > On Oct 4, 2017, at 5:55 AM, Jeffrey Freeman <
> > > > > jeffrey.free...@syncleus.com> wrote:
> > > > > >
> > > > > > Do you have any examples of what an absolute minimal hello world
> > sort
> > > > of
> > > > > > graph implementation might look like?
> > > > > >
> > > > > > On Wed, Oct 4, 2017 at 12:51 AM, Joshua Shinavier <
> > j...@fortytwo.net
> > > >
> > > > > wrote:
> > > > > >
> > > > > >> Hi Jeffrey,
> > > > > >>
> > > > > >> I agree that simplicity and hackability were a big plus for
> > > > TinkerPop2,
> > > > > and
> > > > > >> that these have taken a bit of a back seat, in TP3, to powerful
> > but
> > > > > >> heavyweight features like backend support for OLAP. The
> > > > > stackable/pluggable
> > > > > >> nature of graph implementations took a a hit, as the
> OOP-friendly
> > > > graph
> > > > > >> interfaces (TransactionalGraph, KeyIndexableGraph,
> IndexableGraph,
> > > > etc.)
> > > > > >> were replaced with the more nuanced GraphFeatures, traversal
> > > > strategies,
> > > > > >> etc.
> > > > > >>
> > > > > >> I wouldn't say that you have to "implement Gremlin" to implement
> > an
> > > > OLTP
> > > > > >> graph, though. You get GraphTraversalSource for free. A summer
> > > intern
> > > > I
> > > > > had
> > > > > >> the pleasure of working with recently wrote a Graph
> implementation
> > > > (as a
> > > > > >> wrapper for another, non-TP graph store) in 660 lines of code.
> > It's
> > > > not
> > > > > so
> > > > > >> hard that one would need to revert to TP2. With TP4 on the
> > horizon,
> > > it
> > > > > >> might be worth making a list of "nice to have (again)"s. There
> are
> > > > some
> > > > > >> features I would like to help to bring back, as well.
> > > > > >>
> > > > > >> Josh
> > > > > >>
> > > > > >>
> > > > > >>
> > > > > >> On Tue, Oct 3, 2017 at 5:49 PM, Jeffrey Freeman <
> > > > > >> jeffrey.free...@syncleus.com> wrote:
> > > > > >>
> > > > > >>> Hi, Some of you may already know me as the author of Ferma.
> This
> > > > thread
> > > > > >> is
> > > > > >>> unrelated to that project, it will continue to support TP2 and
> > TP3
> > > as
> > > > > is.
> > > > > >>>
> > > > > >>> So here's the thing, I sued to use TP2 a lot as part of some
> > > > > frameworks I
> > > > > >>> was working on 

[jira] [Commented] (TINKERPOP-1632) Create a set of default functions

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16191816#comment-16191816
 ] 

ASF GitHub Bot commented on TINKERPOP-1632:
---

Github user dkuppitz commented on the issue:

https://github.com/apache/tinkerpop/pull/729
  
You can add a static compiled regex pattern:

```
private static final Pattern EQUATION_PATTERN = 
Pattern.compile("\\b(?!abs|acos|asin|atan|cbrt|ceil|cos|cosh|exp|floor|log|log10|log2|sin|sinh|sqrt|tan|tanh|signum)(_|([A-Za-z][A-Za-z0-9]*))\\b");
```

...then `getVariables()` can be as simple as:

```
protected static final Set getVariables(final String equation) {
final Matcher matcher = EQUATION_PATTERN.matcher(equation);
final Set variables = new LinkedHashSet<>();
while (matcher.find()) {
variables.add(matcher.group());
}
return variables;
}
```

And perhaps to increase the readability and maintainability, we should do 
something like this:

```
private static final String[] FUNCTIONS = new String[] {
"abs", "acos", "asin", "atan",
"cbrt", "ceil", "cos", "cosh",
"exp",
"floor",
"log", "log10", "log2",
"signum", "sin", "sinh", "sqrt",
"tan", "tanh"
};

private static final Pattern EQUATION_PATTERN = Pattern.compile("\\b(?!" +
String.join("|", FUNCTIONS) + ")(_|([A-Za-z][A-Za-z0-9]*))\\b");
```


> Create a set of default functions
> -
>
> Key: TINKERPOP-1632
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1632
> Project: TinkerPop
>  Issue Type: Improvement
>  Components: process
>Affects Versions: 3.3.0
>Reporter: Daniel Kuppitz
>
> We already have a a set of default BiFunctions / operators, that are not 
> treated as lambdas. We should also have a bunch of simple functions, that can 
> then be used in {{map()}} or {{sack()}} and that can be serialized as 
> bytecode. For example:
> {noformat}
> ...map(sqrt)
> ...map(log)
> ...sack(sigmoid) // compute sigmoid of the current sack and update the 
> sack
> ...sack(cos).by("x") // compute the cosine of the current element's "x" and 
> assign / overwrite the current sack value
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[GitHub] tinkerpop issue #729: TINKERPOP-1632: Create a set of default functions

2017-10-04 Thread dkuppitz
Github user dkuppitz commented on the issue:

https://github.com/apache/tinkerpop/pull/729
  
You can add a static compiled regex pattern:

```
private static final Pattern EQUATION_PATTERN = 
Pattern.compile("\\b(?!abs|acos|asin|atan|cbrt|ceil|cos|cosh|exp|floor|log|log10|log2|sin|sinh|sqrt|tan|tanh|signum)(_|([A-Za-z][A-Za-z0-9]*))\\b");
```

...then `getVariables()` can be as simple as:

```
protected static final Set getVariables(final String equation) {
final Matcher matcher = EQUATION_PATTERN.matcher(equation);
final Set variables = new LinkedHashSet<>();
while (matcher.find()) {
variables.add(matcher.group());
}
return variables;
}
```

And perhaps to increase the readability and maintainability, we should do 
something like this:

```
private static final String[] FUNCTIONS = new String[] {
"abs", "acos", "asin", "atan",
"cbrt", "ceil", "cos", "cosh",
"exp",
"floor",
"log", "log10", "log2",
"signum", "sin", "sinh", "sqrt",
"tan", "tanh"
};

private static final Pattern EQUATION_PATTERN = Pattern.compile("\\b(?!" +
String.join("|", FUNCTIONS) + ")(_|([A-Za-z][A-Za-z0-9]*))\\b");
```


---


Re: Im starting a new project, but tinkerpop3 seems incapable, considering forking tinkerpop2

2017-10-04 Thread Joshua Shinavier
Sure. I had hacked together a basic implementation, minus tests and a few
key methods, before I felt compelled to leave for work. Maybe I can put up
the code tonight or tomorrow morning.

On Wed, Oct 4, 2017 at 10:44 AM, Jeffrey Freeman <
jeffrey.free...@syncleus.com> wrote:

> I'd love to see that if its available somewhere.
>
> On Wed, Oct 4, 2017 at 12:56 PM, Joshua Shinavier 
> wrote:
>
> > That's probably a worthwhile exercise. FYI, I have gotten a start on a
> > minimal Redis-based impl -- not so much as a template as an example of
> what
> > can be done in a few lines of code.
> >
> >
> > On Wed, Oct 4, 2017 at 9:51 AM, Jeffrey Freeman <
> > jeffrey.free...@syncleus.com> wrote:
> >
> > > Thanks, ill try to take a stab at this and write a hello world i can
> use
> > as
> > > a template. If i do such a hello world would it be useful for you guys.
> > >
> > > On Wed, Oct 4, 2017 at 11:37 AM, Marko Rodriguez  >
> > > wrote:
> > >
> > > > Hello,
> > > >
> > > > You have the following tasks:
> > > >
> > > > 1. Implement Graph, Vertex, Edge, VertexProperty, Property
> > > > interfaces.
> > > > 2. Implement Transactional interface (optional).
> > > > 3. Write as many strategies as you want to take advantage of
> > > > provider-specific capabilities.
> > > > - TinkerGraph itself has 2:
> > > > https://github.com/apache/
> > tinkerpop/tree/master/
> > > > tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> > > > gremlin/tinkergraph/process/traversal/strategy/optimization <
> > > > https://github.com/apache/tinkerpop/tree/master/
> > > > tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> > > > gremlin/tinkergraph/process/traversal/strategy/optimization>
> > > >
> > > > If you want a minimal “hello world,” then please look at TinkerGraph
> > and
> > > > Neo4jGraph in our repository. Those are both “reference
> > implementations.”
> > > >
> > > > https://github.com/apache/tinkerpop/tree/master/
> > > > tinkergraph-gremlin  tinkerpop/tree/master/
> > > > tinkergraph-gremlin>
> > > > https://github.com/apache/tinkerpop/tree/master/neo4j-
> gremlin
> > <
> > > > https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin>
> > > >
> > > > Good luck,
> > > > Marko.
> > > >
> > > > http://markorodriguez.com
> > > >
> > > >
> > > >
> > > > > On Oct 4, 2017, at 5:55 AM, Jeffrey Freeman <
> > > > jeffrey.free...@syncleus.com> wrote:
> > > > >
> > > > > Do you have any examples of what an absolute minimal hello world
> sort
> > > of
> > > > > graph implementation might look like?
> > > > >
> > > > > On Wed, Oct 4, 2017 at 12:51 AM, Joshua Shinavier <
> j...@fortytwo.net
> > >
> > > > wrote:
> > > > >
> > > > >> Hi Jeffrey,
> > > > >>
> > > > >> I agree that simplicity and hackability were a big plus for
> > > TinkerPop2,
> > > > and
> > > > >> that these have taken a bit of a back seat, in TP3, to powerful
> but
> > > > >> heavyweight features like backend support for OLAP. The
> > > > stackable/pluggable
> > > > >> nature of graph implementations took a a hit, as the OOP-friendly
> > > graph
> > > > >> interfaces (TransactionalGraph, KeyIndexableGraph, IndexableGraph,
> > > etc.)
> > > > >> were replaced with the more nuanced GraphFeatures, traversal
> > > strategies,
> > > > >> etc.
> > > > >>
> > > > >> I wouldn't say that you have to "implement Gremlin" to implement
> an
> > > OLTP
> > > > >> graph, though. You get GraphTraversalSource for free. A summer
> > intern
> > > I
> > > > had
> > > > >> the pleasure of working with recently wrote a Graph implementation
> > > (as a
> > > > >> wrapper for another, non-TP graph store) in 660 lines of code.
> It's
> > > not
> > > > so
> > > > >> hard that one would need to revert to TP2. With TP4 on the
> horizon,
> > it
> > > > >> might be worth making a list of "nice to have (again)"s. There are
> > > some
> > > > >> features I would like to help to bring back, as well.
> > > > >>
> > > > >> Josh
> > > > >>
> > > > >>
> > > > >>
> > > > >> On Tue, Oct 3, 2017 at 5:49 PM, Jeffrey Freeman <
> > > > >> jeffrey.free...@syncleus.com> wrote:
> > > > >>
> > > > >>> Hi, Some of you may already know me as the author of Ferma. This
> > > thread
> > > > >> is
> > > > >>> unrelated to that project, it will continue to support TP2 and
> TP3
> > as
> > > > is.
> > > > >>>
> > > > >>> So here's the thing, I sued to use TP2 a lot as part of some
> > > > frameworks I
> > > > >>> was working on building (evolutionary algorithms, big data
> > > processing,
> > > > >>> extremely massive datasets, etc). One technique i was leveraging
> is
> > > how
> > > > >>> easy it was for TP2 to support a backend system as a graph. I
> could
> > > > take
> > > > >>> almost any existing system completely unrelated to graph
> databases
> > > and
> > > > by
> > > > >>> simply implementing edges and vertex in blueprints in a few
> > minutes i
> > > > 

Re: Im starting a new project, but tinkerpop3 seems incapable, considering forking tinkerpop2

2017-10-04 Thread Jeffrey Freeman
I'd love to see that if its available somewhere.

On Wed, Oct 4, 2017 at 12:56 PM, Joshua Shinavier  wrote:

> That's probably a worthwhile exercise. FYI, I have gotten a start on a
> minimal Redis-based impl -- not so much as a template as an example of what
> can be done in a few lines of code.
>
>
> On Wed, Oct 4, 2017 at 9:51 AM, Jeffrey Freeman <
> jeffrey.free...@syncleus.com> wrote:
>
> > Thanks, ill try to take a stab at this and write a hello world i can use
> as
> > a template. If i do such a hello world would it be useful for you guys.
> >
> > On Wed, Oct 4, 2017 at 11:37 AM, Marko Rodriguez 
> > wrote:
> >
> > > Hello,
> > >
> > > You have the following tasks:
> > >
> > > 1. Implement Graph, Vertex, Edge, VertexProperty, Property
> > > interfaces.
> > > 2. Implement Transactional interface (optional).
> > > 3. Write as many strategies as you want to take advantage of
> > > provider-specific capabilities.
> > > - TinkerGraph itself has 2:
> > > https://github.com/apache/
> tinkerpop/tree/master/
> > > tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> > > gremlin/tinkergraph/process/traversal/strategy/optimization <
> > > https://github.com/apache/tinkerpop/tree/master/
> > > tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> > > gremlin/tinkergraph/process/traversal/strategy/optimization>
> > >
> > > If you want a minimal “hello world,” then please look at TinkerGraph
> and
> > > Neo4jGraph in our repository. Those are both “reference
> implementations.”
> > >
> > > https://github.com/apache/tinkerpop/tree/master/
> > > tinkergraph-gremlin  > > tinkergraph-gremlin>
> > > https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin
> <
> > > https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin>
> > >
> > > Good luck,
> > > Marko.
> > >
> > > http://markorodriguez.com
> > >
> > >
> > >
> > > > On Oct 4, 2017, at 5:55 AM, Jeffrey Freeman <
> > > jeffrey.free...@syncleus.com> wrote:
> > > >
> > > > Do you have any examples of what an absolute minimal hello world sort
> > of
> > > > graph implementation might look like?
> > > >
> > > > On Wed, Oct 4, 2017 at 12:51 AM, Joshua Shinavier  >
> > > wrote:
> > > >
> > > >> Hi Jeffrey,
> > > >>
> > > >> I agree that simplicity and hackability were a big plus for
> > TinkerPop2,
> > > and
> > > >> that these have taken a bit of a back seat, in TP3, to powerful but
> > > >> heavyweight features like backend support for OLAP. The
> > > stackable/pluggable
> > > >> nature of graph implementations took a a hit, as the OOP-friendly
> > graph
> > > >> interfaces (TransactionalGraph, KeyIndexableGraph, IndexableGraph,
> > etc.)
> > > >> were replaced with the more nuanced GraphFeatures, traversal
> > strategies,
> > > >> etc.
> > > >>
> > > >> I wouldn't say that you have to "implement Gremlin" to implement an
> > OLTP
> > > >> graph, though. You get GraphTraversalSource for free. A summer
> intern
> > I
> > > had
> > > >> the pleasure of working with recently wrote a Graph implementation
> > (as a
> > > >> wrapper for another, non-TP graph store) in 660 lines of code. It's
> > not
> > > so
> > > >> hard that one would need to revert to TP2. With TP4 on the horizon,
> it
> > > >> might be worth making a list of "nice to have (again)"s. There are
> > some
> > > >> features I would like to help to bring back, as well.
> > > >>
> > > >> Josh
> > > >>
> > > >>
> > > >>
> > > >> On Tue, Oct 3, 2017 at 5:49 PM, Jeffrey Freeman <
> > > >> jeffrey.free...@syncleus.com> wrote:
> > > >>
> > > >>> Hi, Some of you may already know me as the author of Ferma. This
> > thread
> > > >> is
> > > >>> unrelated to that project, it will continue to support TP2 and TP3
> as
> > > is.
> > > >>>
> > > >>> So here's the thing, I sued to use TP2 a lot as part of some
> > > frameworks I
> > > >>> was working on building (evolutionary algorithms, big data
> > processing,
> > > >>> extremely massive datasets, etc). One technique i was leveraging is
> > how
> > > >>> easy it was for TP2 to support a backend system as a graph. I could
> > > take
> > > >>> almost any existing system completely unrelated to graph databases
> > and
> > > by
> > > >>> simply implementing edges and vertex in blueprints in a few
> minutes i
> > > >> could
> > > >>> have the entire TP2 ecosystem working on it and performing
> > traversals.
> > > >> Some
> > > >>> examples of ways i leveraged this in TP2:
> > > >>>
> > > >>> Fusion Graph - A graph driver that allowed me to take two
> completely
> > > >>> different graph systems (say neo4j and titan) and fuse them so they
> > > look
> > > >>> like one graph. I could even connect edges from a vertex in titan
> > with
> > > a
> > > >>> vertex in neo4j.
> > > >>>
> > > >>> Recursive graphs - I could make it so edges could contain clusters
> of
> > > >> edges

[jira] [Commented] (TINKERPOP-1632) Create a set of default functions

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16191631#comment-16191631
 ] 

ASF GitHub Bot commented on TINKERPOP-1632:
---

GitHub user okram opened a pull request:

https://github.com/apache/tinkerpop/pull/729

TINKERPOP-1632: Create a set of default functions

https://issues.apache.org/jira/browse/TINKERPOP-1632

This is an implementation of lambda-less math capabilities in Gremlin 
leveraging the String-based calculator model proposed by @twilmes. This model 
deviates from Gremlin's standard function composition and nesting model to 
provide a easy to read "math processor" that leverages Gremlin scopes for data 
access (e.g. path data, map keys, and side-effects). The feature is 
encapsulated in `MathStep` which implements `PathProcessor` and `Scoping`. 
Furthermore, `by()`-modulation is supported. `by()`-modulators are applied in 
the order in which the variable is first used in the equation. Thus:

```
g.V().as("a").out("knows").by("b").
  math("b + a").
by(out().count()).
by("age")
```

In the above: `a` -> `age` and `b` -> `out().count()`. More complex 
examples are provided below:

```
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().as('a').out('knows').as('b').math('a + b').by('age')
==>56.0
==>61.0
gremlin> g.V().as('a').out('created').as('b').
..1>   math('b + a').
..2> by(both().count().math('_ + 100')).
..3> by('age')
==>132.0
==>133.0
==>135.0
==>138.0
gremlin> g.withSideEffect('x',10).V().values('age').math('_ / x')
==>2.9
==>2.7
==>3.2
==>3.5
gremlin> 
g.withSack(1).V(1).repeat(sack(sum).by(constant(1))).times(10).emit().sack().math('sin
 _')
==>0.9092974268256817
==>0.1411200080598672
==>-0.7568024953079282
==>-0.9589242746631385
==>-0.27941549819892586
==>0.6569865987187891
==>0.9893582466233818
==>0.4121184852417566
==>-0.5440211108893698
==>-0.902065507035
```

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/apache/tinkerpop TINKERPOP-1632

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/tinkerpop/pull/729.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #729


commit 6f1a1f7028f285c6e45b7e7596320710b91114c5
Author: Marko A. Rodriguez 
Date:   2017-10-03T23:37:10Z

first non-tested implementation of math()-step. It uses the @twilmes model 
which parses a String representation of the expression.

commit 624a8d706e150cc15dc2412d66d3ac9a61b90682
Author: Marko A. Rodriguez 
Date:   2017-10-04T16:27:48Z

I wrote a small parser that is able to extract variables from an exp4j 
equation. So far, it is pretty durable. This is a much cleaner way of 
determining variables than via label, side-effect, and map analysis. However, 
this means that the by()-modulations are with respects to the order in which 
the variables are contained in the equation.

commit c36493b6d66406b0d6b50e6c292e6d43216b4c4c
Author: Marko A. Rodriguez 
Date:   2017-10-04T16:42:06Z

added MathTest to test math() using step labels, side-effects, and implicit 
current -- and with various uses of by()-modulation. This is a really cool step.

commit dfddccaaa85898e046e6b7a5bd81da3d94777d7d
Author: Marko A. Rodriguez 
Date:   2017-10-04T17:01:53Z

added MathStepTest to test hashCode() and the custom variable finder. Found 
a couple of problems in my parser and I fixed them. Forgot to make MathStep a 
PathProcessor so that OLAP is smart about data access. Both OLTP and OLAP tests 
pass.

commit 7217823c3ea73f2d32ffa975e417dcd49d40cbdd
Author: Marko A. Rodriguez 
Date:   2017-10-04T17:30:55Z

added math()-step to the reference docs and updated CHANGELOG and upgrade 
docs.




> Create a set of default functions
> -
>
> Key: TINKERPOP-1632
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1632
> Project: TinkerPop
>  Issue Type: Improvement
>  Components: process
>Affects Versions: 3.3.0
>Reporter: Daniel Kuppitz
>
> We already have a a set of default BiFunctions / operators, that are not 
> treated as lambdas. We should also have a bunch of simple functions, that can 
> then be used in {{map()}} or {{sack()}} and that can be serialized as 
> bytecode. For example:
> {noformat}
> ...map(sqrt)
> ...map(log)
> ...sack(sigmoid) // compute sigmoid of the 

[GitHub] tinkerpop pull request #729: TINKERPOP-1632: Create a set of default functio...

2017-10-04 Thread okram
GitHub user okram opened a pull request:

https://github.com/apache/tinkerpop/pull/729

TINKERPOP-1632: Create a set of default functions

https://issues.apache.org/jira/browse/TINKERPOP-1632

This is an implementation of lambda-less math capabilities in Gremlin 
leveraging the String-based calculator model proposed by @twilmes. This model 
deviates from Gremlin's standard function composition and nesting model to 
provide a easy to read "math processor" that leverages Gremlin scopes for data 
access (e.g. path data, map keys, and side-effects). The feature is 
encapsulated in `MathStep` which implements `PathProcessor` and `Scoping`. 
Furthermore, `by()`-modulation is supported. `by()`-modulators are applied in 
the order in which the variable is first used in the equation. Thus:

```
g.V().as("a").out("knows").by("b").
  math("b + a").
by(out().count()).
by("age")
```

In the above: `a` -> `age` and `b` -> `out().count()`. More complex 
examples are provided below:

```
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().as('a').out('knows').as('b').math('a + b').by('age')
==>56.0
==>61.0
gremlin> g.V().as('a').out('created').as('b').
..1>   math('b + a').
..2> by(both().count().math('_ + 100')).
..3> by('age')
==>132.0
==>133.0
==>135.0
==>138.0
gremlin> g.withSideEffect('x',10).V().values('age').math('_ / x')
==>2.9
==>2.7
==>3.2
==>3.5
gremlin> 
g.withSack(1).V(1).repeat(sack(sum).by(constant(1))).times(10).emit().sack().math('sin
 _')
==>0.9092974268256817
==>0.1411200080598672
==>-0.7568024953079282
==>-0.9589242746631385
==>-0.27941549819892586
==>0.6569865987187891
==>0.9893582466233818
==>0.4121184852417566
==>-0.5440211108893698
==>-0.902065507035
```

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/apache/tinkerpop TINKERPOP-1632

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/tinkerpop/pull/729.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #729


commit 6f1a1f7028f285c6e45b7e7596320710b91114c5
Author: Marko A. Rodriguez 
Date:   2017-10-03T23:37:10Z

first non-tested implementation of math()-step. It uses the @twilmes model 
which parses a String representation of the expression.

commit 624a8d706e150cc15dc2412d66d3ac9a61b90682
Author: Marko A. Rodriguez 
Date:   2017-10-04T16:27:48Z

I wrote a small parser that is able to extract variables from an exp4j 
equation. So far, it is pretty durable. This is a much cleaner way of 
determining variables than via label, side-effect, and map analysis. However, 
this means that the by()-modulations are with respects to the order in which 
the variables are contained in the equation.

commit c36493b6d66406b0d6b50e6c292e6d43216b4c4c
Author: Marko A. Rodriguez 
Date:   2017-10-04T16:42:06Z

added MathTest to test math() using step labels, side-effects, and implicit 
current -- and with various uses of by()-modulation. This is a really cool step.

commit dfddccaaa85898e046e6b7a5bd81da3d94777d7d
Author: Marko A. Rodriguez 
Date:   2017-10-04T17:01:53Z

added MathStepTest to test hashCode() and the custom variable finder. Found 
a couple of problems in my parser and I fixed them. Forgot to make MathStep a 
PathProcessor so that OLAP is smart about data access. Both OLTP and OLAP tests 
pass.

commit 7217823c3ea73f2d32ffa975e417dcd49d40cbdd
Author: Marko A. Rodriguez 
Date:   2017-10-04T17:30:55Z

added math()-step to the reference docs and updated CHANGELOG and upgrade 
docs.




---


Re: Im starting a new project, but tinkerpop3 seems incapable, considering forking tinkerpop2

2017-10-04 Thread Joshua Shinavier
That's probably a worthwhile exercise. FYI, I have gotten a start on a
minimal Redis-based impl -- not so much as a template as an example of what
can be done in a few lines of code.


On Wed, Oct 4, 2017 at 9:51 AM, Jeffrey Freeman <
jeffrey.free...@syncleus.com> wrote:

> Thanks, ill try to take a stab at this and write a hello world i can use as
> a template. If i do such a hello world would it be useful for you guys.
>
> On Wed, Oct 4, 2017 at 11:37 AM, Marko Rodriguez 
> wrote:
>
> > Hello,
> >
> > You have the following tasks:
> >
> > 1. Implement Graph, Vertex, Edge, VertexProperty, Property
> > interfaces.
> > 2. Implement Transactional interface (optional).
> > 3. Write as many strategies as you want to take advantage of
> > provider-specific capabilities.
> > - TinkerGraph itself has 2:
> > https://github.com/apache/tinkerpop/tree/master/
> > tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> > gremlin/tinkergraph/process/traversal/strategy/optimization <
> > https://github.com/apache/tinkerpop/tree/master/
> > tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> > gremlin/tinkergraph/process/traversal/strategy/optimization>
> >
> > If you want a minimal “hello world,” then please look at TinkerGraph and
> > Neo4jGraph in our repository. Those are both “reference implementations.”
> >
> > https://github.com/apache/tinkerpop/tree/master/
> > tinkergraph-gremlin  > tinkergraph-gremlin>
> > https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin <
> > https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin>
> >
> > Good luck,
> > Marko.
> >
> > http://markorodriguez.com
> >
> >
> >
> > > On Oct 4, 2017, at 5:55 AM, Jeffrey Freeman <
> > jeffrey.free...@syncleus.com> wrote:
> > >
> > > Do you have any examples of what an absolute minimal hello world sort
> of
> > > graph implementation might look like?
> > >
> > > On Wed, Oct 4, 2017 at 12:51 AM, Joshua Shinavier 
> > wrote:
> > >
> > >> Hi Jeffrey,
> > >>
> > >> I agree that simplicity and hackability were a big plus for
> TinkerPop2,
> > and
> > >> that these have taken a bit of a back seat, in TP3, to powerful but
> > >> heavyweight features like backend support for OLAP. The
> > stackable/pluggable
> > >> nature of graph implementations took a a hit, as the OOP-friendly
> graph
> > >> interfaces (TransactionalGraph, KeyIndexableGraph, IndexableGraph,
> etc.)
> > >> were replaced with the more nuanced GraphFeatures, traversal
> strategies,
> > >> etc.
> > >>
> > >> I wouldn't say that you have to "implement Gremlin" to implement an
> OLTP
> > >> graph, though. You get GraphTraversalSource for free. A summer intern
> I
> > had
> > >> the pleasure of working with recently wrote a Graph implementation
> (as a
> > >> wrapper for another, non-TP graph store) in 660 lines of code. It's
> not
> > so
> > >> hard that one would need to revert to TP2. With TP4 on the horizon, it
> > >> might be worth making a list of "nice to have (again)"s. There are
> some
> > >> features I would like to help to bring back, as well.
> > >>
> > >> Josh
> > >>
> > >>
> > >>
> > >> On Tue, Oct 3, 2017 at 5:49 PM, Jeffrey Freeman <
> > >> jeffrey.free...@syncleus.com> wrote:
> > >>
> > >>> Hi, Some of you may already know me as the author of Ferma. This
> thread
> > >> is
> > >>> unrelated to that project, it will continue to support TP2 and TP3 as
> > is.
> > >>>
> > >>> So here's the thing, I sued to use TP2 a lot as part of some
> > frameworks I
> > >>> was working on building (evolutionary algorithms, big data
> processing,
> > >>> extremely massive datasets, etc). One technique i was leveraging is
> how
> > >>> easy it was for TP2 to support a backend system as a graph. I could
> > take
> > >>> almost any existing system completely unrelated to graph databases
> and
> > by
> > >>> simply implementing edges and vertex in blueprints in a few minutes i
> > >> could
> > >>> have the entire TP2 ecosystem working on it and performing
> traversals.
> > >> Some
> > >>> examples of ways i leveraged this in TP2:
> > >>>
> > >>> Fusion Graph - A graph driver that allowed me to take two completely
> > >>> different graph systems (say neo4j and titan) and fuse them so they
> > look
> > >>> like one graph. I could even connect edges from a vertex in titan
> with
> > a
> > >>> vertex in neo4j.
> > >>>
> > >>> Recursive graphs - I could make it so edges could contain clusters of
> > >> edges
> > >>> and vertexes could contain complete graphs embedded inside them, they
> > >> could
> > >>> even be defined by completely different underlying systems. This gave
> > me
> > >> a
> > >>> sort of hierarchical graph.
> > >>>
> > >>> Apache Storm graphs - I was able to encapsulate the topology from
> > apache
> > >>> storm as a graph so one could perform traversals across a storm
> > topology
> > >> as

Re: Im starting a new project, but tinkerpop3 seems incapable, considering forking tinkerpop2

2017-10-04 Thread Jeffrey Freeman
Thanks, ill try to take a stab at this and write a hello world i can use as
a template. If i do such a hello world would it be useful for you guys.

On Wed, Oct 4, 2017 at 11:37 AM, Marko Rodriguez 
wrote:

> Hello,
>
> You have the following tasks:
>
> 1. Implement Graph, Vertex, Edge, VertexProperty, Property
> interfaces.
> 2. Implement Transactional interface (optional).
> 3. Write as many strategies as you want to take advantage of
> provider-specific capabilities.
> - TinkerGraph itself has 2:
> https://github.com/apache/tinkerpop/tree/master/
> tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> gremlin/tinkergraph/process/traversal/strategy/optimization <
> https://github.com/apache/tinkerpop/tree/master/
> tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/
> gremlin/tinkergraph/process/traversal/strategy/optimization>
>
> If you want a minimal “hello world,” then please look at TinkerGraph and
> Neo4jGraph in our repository. Those are both “reference implementations.”
>
> https://github.com/apache/tinkerpop/tree/master/
> tinkergraph-gremlin  tinkergraph-gremlin>
> https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin <
> https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin>
>
> Good luck,
> Marko.
>
> http://markorodriguez.com
>
>
>
> > On Oct 4, 2017, at 5:55 AM, Jeffrey Freeman <
> jeffrey.free...@syncleus.com> wrote:
> >
> > Do you have any examples of what an absolute minimal hello world sort of
> > graph implementation might look like?
> >
> > On Wed, Oct 4, 2017 at 12:51 AM, Joshua Shinavier 
> wrote:
> >
> >> Hi Jeffrey,
> >>
> >> I agree that simplicity and hackability were a big plus for TinkerPop2,
> and
> >> that these have taken a bit of a back seat, in TP3, to powerful but
> >> heavyweight features like backend support for OLAP. The
> stackable/pluggable
> >> nature of graph implementations took a a hit, as the OOP-friendly graph
> >> interfaces (TransactionalGraph, KeyIndexableGraph, IndexableGraph, etc.)
> >> were replaced with the more nuanced GraphFeatures, traversal strategies,
> >> etc.
> >>
> >> I wouldn't say that you have to "implement Gremlin" to implement an OLTP
> >> graph, though. You get GraphTraversalSource for free. A summer intern I
> had
> >> the pleasure of working with recently wrote a Graph implementation (as a
> >> wrapper for another, non-TP graph store) in 660 lines of code. It's not
> so
> >> hard that one would need to revert to TP2. With TP4 on the horizon, it
> >> might be worth making a list of "nice to have (again)"s. There are some
> >> features I would like to help to bring back, as well.
> >>
> >> Josh
> >>
> >>
> >>
> >> On Tue, Oct 3, 2017 at 5:49 PM, Jeffrey Freeman <
> >> jeffrey.free...@syncleus.com> wrote:
> >>
> >>> Hi, Some of you may already know me as the author of Ferma. This thread
> >> is
> >>> unrelated to that project, it will continue to support TP2 and TP3 as
> is.
> >>>
> >>> So here's the thing, I sued to use TP2 a lot as part of some
> frameworks I
> >>> was working on building (evolutionary algorithms, big data processing,
> >>> extremely massive datasets, etc). One technique i was leveraging is how
> >>> easy it was for TP2 to support a backend system as a graph. I could
> take
> >>> almost any existing system completely unrelated to graph databases and
> by
> >>> simply implementing edges and vertex in blueprints in a few minutes i
> >> could
> >>> have the entire TP2 ecosystem working on it and performing traversals.
> >> Some
> >>> examples of ways i leveraged this in TP2:
> >>>
> >>> Fusion Graph - A graph driver that allowed me to take two completely
> >>> different graph systems (say neo4j and titan) and fuse them so they
> look
> >>> like one graph. I could even connect edges from a vertex in titan with
> a
> >>> vertex in neo4j.
> >>>
> >>> Recursive graphs - I could make it so edges could contain clusters of
> >> edges
> >>> and vertexes could contain complete graphs embedded inside them, they
> >> could
> >>> even be defined by completely different underlying systems. This gave
> me
> >> a
> >>> sort of hierarchical graph.
> >>>
> >>> Apache Storm graphs - I was able to encapsulate the topology from
> apache
> >>> storm as a graph so one could perform traversals across a storm
> topology
> >> as
> >>> it is running to produce statistics or to effect its behavior based on
> >>> traffic or usage
> >>>
> >>> MapDB graphs - using MapDB as a graph backend or even a traditional
> >>> database or any other storage system not usually seen a a graph.
> >>>
> >>> The list is really endless. But the problem I'm facing with TP3 is that
> >> it
> >>> is no longer trivial to implement a Graph. Now you have to pretty much
> >>> implement Gremlin for your graph and countless other methods. I get why
> >>> this is done, from a performance 

Re: Im starting a new project, but tinkerpop3 seems incapable, considering forking tinkerpop2

2017-10-04 Thread Marko Rodriguez
Hello,

You have the following tasks:

1. Implement Graph, Vertex, Edge, VertexProperty, Property interfaces.
2. Implement Transactional interface (optional).
3. Write as many strategies as you want to take advantage of 
provider-specific capabilities.
- TinkerGraph itself has 2:

https://github.com/apache/tinkerpop/tree/master/tinkergraph-gremlin/src/main/java/org/apache/tinkerpop/gremlin/tinkergraph/process/traversal/strategy/optimization
 


If you want a minimal “hello world,” then please look at TinkerGraph and 
Neo4jGraph in our repository. Those are both “reference implementations.”

https://github.com/apache/tinkerpop/tree/master/tinkergraph-gremlin 

https://github.com/apache/tinkerpop/tree/master/neo4j-gremlin 


Good luck,
Marko.

http://markorodriguez.com



> On Oct 4, 2017, at 5:55 AM, Jeffrey Freeman  
> wrote:
> 
> Do you have any examples of what an absolute minimal hello world sort of
> graph implementation might look like?
> 
> On Wed, Oct 4, 2017 at 12:51 AM, Joshua Shinavier  wrote:
> 
>> Hi Jeffrey,
>> 
>> I agree that simplicity and hackability were a big plus for TinkerPop2, and
>> that these have taken a bit of a back seat, in TP3, to powerful but
>> heavyweight features like backend support for OLAP. The stackable/pluggable
>> nature of graph implementations took a a hit, as the OOP-friendly graph
>> interfaces (TransactionalGraph, KeyIndexableGraph, IndexableGraph, etc.)
>> were replaced with the more nuanced GraphFeatures, traversal strategies,
>> etc.
>> 
>> I wouldn't say that you have to "implement Gremlin" to implement an OLTP
>> graph, though. You get GraphTraversalSource for free. A summer intern I had
>> the pleasure of working with recently wrote a Graph implementation (as a
>> wrapper for another, non-TP graph store) in 660 lines of code. It's not so
>> hard that one would need to revert to TP2. With TP4 on the horizon, it
>> might be worth making a list of "nice to have (again)"s. There are some
>> features I would like to help to bring back, as well.
>> 
>> Josh
>> 
>> 
>> 
>> On Tue, Oct 3, 2017 at 5:49 PM, Jeffrey Freeman <
>> jeffrey.free...@syncleus.com> wrote:
>> 
>>> Hi, Some of you may already know me as the author of Ferma. This thread
>> is
>>> unrelated to that project, it will continue to support TP2 and TP3 as is.
>>> 
>>> So here's the thing, I sued to use TP2 a lot as part of some frameworks I
>>> was working on building (evolutionary algorithms, big data processing,
>>> extremely massive datasets, etc). One technique i was leveraging is how
>>> easy it was for TP2 to support a backend system as a graph. I could take
>>> almost any existing system completely unrelated to graph databases and by
>>> simply implementing edges and vertex in blueprints in a few minutes i
>> could
>>> have the entire TP2 ecosystem working on it and performing traversals.
>> Some
>>> examples of ways i leveraged this in TP2:
>>> 
>>> Fusion Graph - A graph driver that allowed me to take two completely
>>> different graph systems (say neo4j and titan) and fuse them so they look
>>> like one graph. I could even connect edges from a vertex in titan with a
>>> vertex in neo4j.
>>> 
>>> Recursive graphs - I could make it so edges could contain clusters of
>> edges
>>> and vertexes could contain complete graphs embedded inside them, they
>> could
>>> even be defined by completely different underlying systems. This gave me
>> a
>>> sort of hierarchical graph.
>>> 
>>> Apache Storm graphs - I was able to encapsulate the topology from apache
>>> storm as a graph so one could perform traversals across a storm topology
>> as
>>> it is running to produce statistics or to effect its behavior based on
>>> traffic or usage
>>> 
>>> MapDB graphs - using MapDB as a graph backend or even a traditional
>>> database or any other storage system not usually seen a a graph.
>>> 
>>> The list is really endless. But the problem I'm facing with TP3 is that
>> it
>>> is no longer trivial to implement a Graph. Now you have to pretty much
>>> implement Gremlin for your graph and countless other methods. I get why
>>> this is done, from a performance standpoint if your going to view gremlin
>>> as a query language for graph databases it is needed. But what i need is
>>> some middle ground where I can still implement a Graph as easy as i could
>>> in TP2 even if the end result is rather poor performance on the gremlin
>>> queries (which can be optimized later in some cases as the development
>>> matures).
>>> 
>>> As far as i can tell this just isnt possible in TP3, correct me if im
>> 

[jira] [Closed] (TINKERPOP-1795) Getting Lambda comparator message for .profile() step

2017-10-04 Thread stephen mallette (JIRA)

 [ 
https://issues.apache.org/jira/browse/TINKERPOP-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stephen mallette closed TINKERPOP-1795.
---
   Resolution: Fixed
Fix Version/s: 3.3.1

re-opened to add 3.3.1 as we now include all fix versions 

> Getting Lambda  comparator message for .profile() step
> --
>
> Key: TINKERPOP-1795
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1795
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.2.6
>Reporter: Shaunak Das
>Assignee: Marko A. Rodriguez
>Priority: Minor
> Fix For: 3.2.7, 3.3.1
>
>
> Ran into this message when adding a .profile() step, even though Gremlin 
> query does not have any lambda steps:
> {code}
> gremlin> 
> g.V().has("Question","questionType","yes/no").in("has_question").order().by(inE("reviewed").values("rating").mean()).profile()
> The provided step contains a lambda comparator: 
> OrderGlobalStep([[[VertexStep(IN,[reviewed],edge), 
> PropertiesStep([rating],value), MeanGlobalStep@[~gremlin.profile]], incr]])
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Reopened] (TINKERPOP-1795) Getting Lambda comparator message for .profile() step

2017-10-04 Thread stephen mallette (JIRA)

 [ 
https://issues.apache.org/jira/browse/TINKERPOP-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stephen mallette reopened TINKERPOP-1795:
-

> Getting Lambda  comparator message for .profile() step
> --
>
> Key: TINKERPOP-1795
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1795
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.2.6
>Reporter: Shaunak Das
>Assignee: Marko A. Rodriguez
>Priority: Minor
> Fix For: 3.2.7
>
>
> Ran into this message when adding a .profile() step, even though Gremlin 
> query does not have any lambda steps:
> {code}
> gremlin> 
> g.V().has("Question","questionType","yes/no").in("has_question").order().by(inE("reviewed").values("rating").mean()).profile()
> The provided step contains a lambda comparator: 
> OrderGlobalStep([[[VertexStep(IN,[reviewed],edge), 
> PropertiesStep([rating],value), MeanGlobalStep@[~gremlin.profile]], incr]])
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Closed] (TINKERPOP-1795) Getting Lambda comparator message for .profile() step

2017-10-04 Thread Marko A. Rodriguez (JIRA)

 [ 
https://issues.apache.org/jira/browse/TINKERPOP-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marko A. Rodriguez closed TINKERPOP-1795.
-
   Resolution: Fixed
Fix Version/s: 3.2.7

> Getting Lambda  comparator message for .profile() step
> --
>
> Key: TINKERPOP-1795
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1795
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.2.6
>Reporter: Shaunak Das
>Assignee: Marko A. Rodriguez
>Priority: Minor
> Fix For: 3.2.7
>
>
> Ran into this message when adding a .profile() step, even though Gremlin 
> query does not have any lambda steps:
> {code}
> gremlin> 
> g.V().has("Question","questionType","yes/no").in("has_question").order().by(inE("reviewed").values("rating").mean()).profile()
> The provided step contains a lambda comparator: 
> OrderGlobalStep([[[VertexStep(IN,[reviewed],edge), 
> PropertiesStep([rating],value), MeanGlobalStep@[~gremlin.profile]], incr]])
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (TINKERPOP-1795) Getting Lambda comparator message for .profile() step

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16191289#comment-16191289
 ] 

ASF GitHub Bot commented on TINKERPOP-1795:
---

Github user asfgit closed the pull request at:

https://github.com/apache/tinkerpop/pull/726


> Getting Lambda  comparator message for .profile() step
> --
>
> Key: TINKERPOP-1795
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1795
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.2.6
>Reporter: Shaunak Das
>Assignee: Marko A. Rodriguez
>Priority: Minor
> Fix For: 3.2.7
>
>
> Ran into this message when adding a .profile() step, even though Gremlin 
> query does not have any lambda steps:
> {code}
> gremlin> 
> g.V().has("Question","questionType","yes/no").in("has_question").order().by(inE("reviewed").values("rating").mean()).profile()
> The provided step contains a lambda comparator: 
> OrderGlobalStep([[[VertexStep(IN,[reviewed],edge), 
> PropertiesStep([rating],value), MeanGlobalStep@[~gremlin.profile]], incr]])
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[GitHub] tinkerpop pull request #726: TINKERPOP-1795: Getting Lambda comparator messa...

2017-10-04 Thread asfgit
Github user asfgit closed the pull request at:

https://github.com/apache/tinkerpop/pull/726


---


[jira] [Commented] (TINKERPOP-1761) GremlinExecutor: Timeout future not cancelled on successful script evaluation

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16191281#comment-16191281
 ] 

ASF GitHub Bot commented on TINKERPOP-1761:
---

Github user robertdale commented on the issue:

https://github.com/apache/tinkerpop/pull/709
  
Looks good.
VOTE +1


> GremlinExecutor: Timeout future not cancelled on successful script evaluation
> -
>
> Key: TINKERPOP-1761
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1761
> Project: TinkerPop
>  Issue Type: Bug
>  Components: groovy
>Affects Versions: 3.2.6
>Reporter: Konstantin Müller
>
> This bug seems to be introduced by TINKERPOP-1714. The timeout future in 
> GremlinExecutor.eval() is not cancelled when the evaluation future is 
> completed successfully before the timeout (lines 304ff). This was done 
> correctly before the changes introduced by TINKERPOP-1714. Code to reproduce:
> {code:java}
> try (GremlinExecutor executor = 
> GremlinExecutor.build().scriptEvaluationTimeout(15_000).create()) {
>   executor.eval("1+1").get();
> } catch (Exception e) {
>   // NOOP
> }
> {code}
> When the code leaves the try-block it calls GremlinExecutor.close() which 
> will clean up executorService and scheduledExecutorService, but because the 
> timeout future is not cancelled this will hang until the future is finished 
> (here 15s).
> Workaround: Provide an own ExecutorService when constructing a 
> GremlinExecutor instance and cancel all tasks when the script evaluation is 
> finished successfully.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[GitHub] tinkerpop issue #709: TINKERPOP-1761: Cancel script evaluation timeout

2017-10-04 Thread robertdale
Github user robertdale commented on the issue:

https://github.com/apache/tinkerpop/pull/709
  
Looks good.
VOTE +1


---


[jira] [Commented] (TINKERPOP-1795) Getting Lambda comparator message for .profile() step

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16191228#comment-16191228
 ] 

ASF GitHub Bot commented on TINKERPOP-1795:
---

Github user dkuppitz commented on the issue:

https://github.com/apache/tinkerpop/pull/726
  
VOTE: +1


> Getting Lambda  comparator message for .profile() step
> --
>
> Key: TINKERPOP-1795
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1795
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.2.6
>Reporter: Shaunak Das
>Assignee: Marko A. Rodriguez
>Priority: Minor
>
> Ran into this message when adding a .profile() step, even though Gremlin 
> query does not have any lambda steps:
> {code}
> gremlin> 
> g.V().has("Question","questionType","yes/no").in("has_question").order().by(inE("reviewed").values("rating").mean()).profile()
> The provided step contains a lambda comparator: 
> OrderGlobalStep([[[VertexStep(IN,[reviewed],edge), 
> PropertiesStep([rating],value), MeanGlobalStep@[~gremlin.profile]], incr]])
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[GitHub] tinkerpop issue #726: TINKERPOP-1795: Getting Lambda comparator message for ...

2017-10-04 Thread dkuppitz
Github user dkuppitz commented on the issue:

https://github.com/apache/tinkerpop/pull/726
  
VOTE: +1


---


[jira] [Commented] (TINKERPOP-1761) GremlinExecutor: Timeout future not cancelled on successful script evaluation

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16191206#comment-16191206
 ] 

ASF GitHub Bot commented on TINKERPOP-1761:
---

Github user spmallette commented on the issue:

https://github.com/apache/tinkerpop/pull/709
  
@BrynCooke i've been looking at this on and off since it was submitted and 
i can't come up with any concrete reason not to vote to merge this. i think we 
still get to release the {{evaluationFuture}} for GC with this added blob of 
code that handles cancellation of the cancellation. any last words?


> GremlinExecutor: Timeout future not cancelled on successful script evaluation
> -
>
> Key: TINKERPOP-1761
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1761
> Project: TinkerPop
>  Issue Type: Bug
>  Components: groovy
>Affects Versions: 3.2.6
>Reporter: Konstantin Müller
>
> This bug seems to be introduced by TINKERPOP-1714. The timeout future in 
> GremlinExecutor.eval() is not cancelled when the evaluation future is 
> completed successfully before the timeout (lines 304ff). This was done 
> correctly before the changes introduced by TINKERPOP-1714. Code to reproduce:
> {code:java}
> try (GremlinExecutor executor = 
> GremlinExecutor.build().scriptEvaluationTimeout(15_000).create()) {
>   executor.eval("1+1").get();
> } catch (Exception e) {
>   // NOOP
> }
> {code}
> When the code leaves the try-block it calls GremlinExecutor.close() which 
> will clean up executorService and scheduledExecutorService, but because the 
> timeout future is not cancelled this will hang until the future is finished 
> (here 15s).
> Workaround: Provide an own ExecutorService when constructing a 
> GremlinExecutor instance and cancel all tasks when the script evaluation is 
> finished successfully.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


Re: Im starting a new project, but tinkerpop3 seems incapable, considering forking tinkerpop2

2017-10-04 Thread Jeffrey Freeman
Do you have any examples of what an absolute minimal hello world sort of
graph implementation might look like?

On Wed, Oct 4, 2017 at 12:51 AM, Joshua Shinavier  wrote:

> Hi Jeffrey,
>
> I agree that simplicity and hackability were a big plus for TinkerPop2, and
> that these have taken a bit of a back seat, in TP3, to powerful but
> heavyweight features like backend support for OLAP. The stackable/pluggable
> nature of graph implementations took a a hit, as the OOP-friendly graph
> interfaces (TransactionalGraph, KeyIndexableGraph, IndexableGraph, etc.)
> were replaced with the more nuanced GraphFeatures, traversal strategies,
> etc.
>
> I wouldn't say that you have to "implement Gremlin" to implement an OLTP
> graph, though. You get GraphTraversalSource for free. A summer intern I had
> the pleasure of working with recently wrote a Graph implementation (as a
> wrapper for another, non-TP graph store) in 660 lines of code. It's not so
> hard that one would need to revert to TP2. With TP4 on the horizon, it
> might be worth making a list of "nice to have (again)"s. There are some
> features I would like to help to bring back, as well.
>
> Josh
>
>
>
> On Tue, Oct 3, 2017 at 5:49 PM, Jeffrey Freeman <
> jeffrey.free...@syncleus.com> wrote:
>
> > Hi, Some of you may already know me as the author of Ferma. This thread
> is
> > unrelated to that project, it will continue to support TP2 and TP3 as is.
> >
> > So here's the thing, I sued to use TP2 a lot as part of some frameworks I
> > was working on building (evolutionary algorithms, big data processing,
> > extremely massive datasets, etc). One technique i was leveraging is how
> > easy it was for TP2 to support a backend system as a graph. I could take
> > almost any existing system completely unrelated to graph databases and by
> > simply implementing edges and vertex in blueprints in a few minutes i
> could
> > have the entire TP2 ecosystem working on it and performing traversals.
> Some
> > examples of ways i leveraged this in TP2:
> >
> > Fusion Graph - A graph driver that allowed me to take two completely
> > different graph systems (say neo4j and titan) and fuse them so they look
> > like one graph. I could even connect edges from a vertex in titan with a
> > vertex in neo4j.
> >
> > Recursive graphs - I could make it so edges could contain clusters of
> edges
> > and vertexes could contain complete graphs embedded inside them, they
> could
> > even be defined by completely different underlying systems. This gave me
> a
> > sort of hierarchical graph.
> >
> > Apache Storm graphs - I was able to encapsulate the topology from apache
> > storm as a graph so one could perform traversals across a storm topology
> as
> > it is running to produce statistics or to effect its behavior based on
> > traffic or usage
> >
> > MapDB graphs - using MapDB as a graph backend or even a traditional
> > database or any other storage system not usually seen a a graph.
> >
> > The list is really endless. But the problem I'm facing with TP3 is that
> it
> > is no longer trivial to implement a Graph. Now you have to pretty much
> > implement Gremlin for your graph and countless other methods. I get why
> > this is done, from a performance standpoint if your going to view gremlin
> > as a query language for graph databases it is needed. But what i need is
> > some middle ground where I can still implement a Graph as easy as i could
> > in TP2 even if the end result is rather poor performance on the gremlin
> > queries (which can be optimized later in some cases as the development
> > matures).
> >
> > As far as i can tell this just isnt possible in TP3, correct me if im
> wrong
> > because I'd love to use it for these use cases. If that turns out to be
> > true and no one here has any better ideas (which id very much welcome) my
> > next resort would be to revive TP2, fork it as a new project under a new
> > name, and continue to maintain it as a solution that addresses some of
> > these needs. i welcome any ideas or inputs from the community on this for
> > me.
> >
>


[GitHub] tinkerpop issue #727: TINKERPOP-1796: Driver connection pool SSL properties ...

2017-10-04 Thread spmallette
Github user spmallette commented on the issue:

https://github.com/apache/tinkerpop/pull/727
  
Good fix - VOTE +1


---


[jira] [Commented] (TINKERPOP-1796) Driver connection pool SSL properties missing

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1796?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16191089#comment-16191089
 ] 

ASF GitHub Bot commented on TINKERPOP-1796:
---

Github user spmallette commented on the issue:

https://github.com/apache/tinkerpop/pull/727
  
Good fix - VOTE +1


> Driver connection pool SSL properties missing
> -
>
> Key: TINKERPOP-1796
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1796
> Project: TinkerPop
>  Issue Type: Bug
>  Components: driver
>Affects Versions: 3.3.0, 3.2.6
>Reporter: Robert Dale
>Assignee: Robert Dale
> Fix For: 3.2.7, 3.3.1
>
>
> When using `Configuration` properties, the keys keyCertChainFile, keyFile, 
> keyPassword are not picked up.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (TINKERPOP-1795) Getting Lambda comparator message for .profile() step

2017-10-04 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/TINKERPOP-1795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16191088#comment-16191088
 ] 

ASF GitHub Bot commented on TINKERPOP-1795:
---

Github user spmallette commented on the issue:

https://github.com/apache/tinkerpop/pull/726
  
All tests pass with `docker/build.sh -t -n -i`

VOTE +1


> Getting Lambda  comparator message for .profile() step
> --
>
> Key: TINKERPOP-1795
> URL: https://issues.apache.org/jira/browse/TINKERPOP-1795
> Project: TinkerPop
>  Issue Type: Bug
>  Components: process
>Affects Versions: 3.2.6
>Reporter: Shaunak Das
>Assignee: Marko A. Rodriguez
>Priority: Minor
>
> Ran into this message when adding a .profile() step, even though Gremlin 
> query does not have any lambda steps:
> {code}
> gremlin> 
> g.V().has("Question","questionType","yes/no").in("has_question").order().by(inE("reviewed").values("rating").mean()).profile()
> The provided step contains a lambda comparator: 
> OrderGlobalStep([[[VertexStep(IN,[reviewed],edge), 
> PropertiesStep([rating],value), MeanGlobalStep@[~gremlin.profile]], incr]])
> Type ':help' or ':h' for help.
> Display stack trace? [yN]
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[GitHub] tinkerpop issue #726: TINKERPOP-1795: Getting Lambda comparator message for ...

2017-10-04 Thread spmallette
Github user spmallette commented on the issue:

https://github.com/apache/tinkerpop/pull/726
  
All tests pass with `docker/build.sh -t -n -i`

VOTE +1


---