This is an automated email from the ASF dual-hosted git repository. okram pushed a commit to branch tp4 in repository https://gitbox.apache.org/repos/asf/tinkerpop.git
The following commit(s) were added to refs/heads/tp4 by this push: new 4ac1cb8 added rdf/. Super easy. FlatMapInitial is used to wrap FlatMap functions that can serve as initials so we don't have to duplicate code. 4ac1cb8 is described below commit 4ac1cb896126f54eeb334667d4bfbd0ff3d25b62 Author: Marko A. Rodriguez <okramma...@gmail.com> AuthorDate: Mon Apr 29 16:31:43 2019 -0600 added rdf/. Super easy. FlatMapInitial is used to wrap FlatMap functions that can serve as initials so we don't have to duplicate code. --- .../bytecode/compiler/BytecodeCompiler.java | 6 ++--- .../machine/function/initial/FlatMapInitial.java | 9 +++---- .../tinkerpop/machine/structure/rdf/TQuad.java | 27 ++++++++++++++++++++ .../machine/structure/rdf/TStatement.java | 28 +++++++++++++++++++++ .../tinkerpop/machine/structure/rdf/TStore.java | 28 +++++++++++++++++++++ .../tinkerpop/machine/structure/rdf/TTriple.java | 29 ++++++++++++++++++++++ 6 files changed, 118 insertions(+), 9 deletions(-) diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/compiler/BytecodeCompiler.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/compiler/BytecodeCompiler.java index 07b49ed..eca364f 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/compiler/BytecodeCompiler.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/bytecode/compiler/BytecodeCompiler.java @@ -19,7 +19,6 @@ package org.apache.tinkerpop.machine.bytecode.compiler; import org.apache.tinkerpop.machine.bytecode.Bytecode; -import org.apache.tinkerpop.machine.bytecode.BytecodeUtil; import org.apache.tinkerpop.machine.bytecode.Instruction; import org.apache.tinkerpop.machine.function.CFunction; import org.apache.tinkerpop.machine.function.initial.FlatMapInitial; @@ -37,8 +36,9 @@ public interface BytecodeCompiler { final List<CFunction<C>> functions = new ArrayList<>(); for (final Instruction<C> instruction : bytecode.getInstructions()) { final CFunction function = this.compile(instruction); - functions.add(functions.isEmpty() && bytecode.getParent().isEmpty() && function instanceof Initializing ? - new FlatMapInitial<>(function.coefficient(), function.label(), (Initializing) function, BytecodeUtil.getTraverserFactory(bytecode).get()) : function); + functions.add(functions.isEmpty() && bytecode.getParent().isEmpty() && function instanceof Initializing ? // if this is the first function, then wrap it in an InitialFunction + new FlatMapInitial<>(function.coefficient(), function.label(), (Initializing) function) : + function); } return functions; } diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/initial/FlatMapInitial.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/initial/FlatMapInitial.java index 8b06567..2a2ca21 100644 --- a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/initial/FlatMapInitial.java +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/function/initial/FlatMapInitial.java @@ -21,7 +21,7 @@ package org.apache.tinkerpop.machine.function.initial; import org.apache.tinkerpop.machine.coefficient.Coefficient; import org.apache.tinkerpop.machine.function.AbstractFunction; import org.apache.tinkerpop.machine.function.InitialFunction; -import org.apache.tinkerpop.machine.traverser.TraverserFactory; +import org.apache.tinkerpop.machine.traverser.species.EmptyTraverser; import java.util.Iterator; @@ -31,17 +31,14 @@ import java.util.Iterator; public final class FlatMapInitial<C, S> extends AbstractFunction<C> implements InitialFunction<C, S> { private final Initializing<C, ?, S> function; - private final TraverserFactory<C> traverserFactory; - - public FlatMapInitial(final Coefficient<C> coefficient, final String label, final Initializing<C, ?, S> function, final TraverserFactory<C> traverserFactory) { + public FlatMapInitial(final Coefficient<C> coefficient, final String label, final Initializing<C, ?, S> function) { super(coefficient, label); this.function = function; - this.traverserFactory = traverserFactory; } @Override public Iterator<S> get() { - return this.function.apply(traverserFactory.create(this, null)); + return this.function.apply(EmptyTraverser.instance()); } } diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TQuad.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TQuad.java new file mode 100644 index 0000000..a860491 --- /dev/null +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TQuad.java @@ -0,0 +1,27 @@ +/* + * 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.machine.structure.rdf; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public interface TQuad extends TTriple { + + public String graph(); +} diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TStatement.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TStatement.java new file mode 100644 index 0000000..f530eff --- /dev/null +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TStatement.java @@ -0,0 +1,28 @@ +/* + * 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.machine.structure.rdf; + +import org.apache.tinkerpop.machine.structure.TTuple; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public interface TStatement extends TTuple<String,String> { + +} diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TStore.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TStore.java new file mode 100644 index 0000000..98726f6 --- /dev/null +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TStore.java @@ -0,0 +1,28 @@ +/* + * 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.machine.structure.rdf; + +import org.apache.tinkerpop.machine.structure.Structure; +import org.apache.tinkerpop.machine.structure.TSequence; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public interface TStore extends TSequence<TStatement>, Structure { +} diff --git a/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TTriple.java b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TTriple.java new file mode 100644 index 0000000..e15e4d1 --- /dev/null +++ b/java/machine/machine-core/src/main/java/org/apache/tinkerpop/machine/structure/rdf/TTriple.java @@ -0,0 +1,29 @@ +/* + * 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.machine.structure.rdf; + +/** + * @author Marko A. Rodriguez (http://markorodriguez.com) + */ +public interface TTriple extends TStatement { + + public String subject(); + public String predicate(); + public String object(); +}