Repository: jena Updated Branches: refs/heads/master a523a4066 -> 6eadb3662
Collecting ordering methods into OrderedTupleTable Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/b951c779 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/b951c779 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/b951c779 Branch: refs/heads/master Commit: b951c7797c59c251fe47a235622e9fdb81cf7e84 Parents: f066605 Author: ajs6f <[email protected]> Authored: Wed Jan 6 12:17:49 2016 -0500 Committer: ajs6f <[email protected]> Committed: Sun Jan 17 15:40:26 2016 -0500 ---------------------------------------------------------------------- .../jena/sparql/core/mem/OrderedTupleTable.java | 53 +++++++++++++++++--- .../apache/jena/sparql/core/mem/QuadTable.java | 36 +------------ .../jena/sparql/core/mem/TripleTable.java | 31 +----------- 3 files changed, 47 insertions(+), 73 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/b951c779/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/OrderedTupleTable.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/OrderedTupleTable.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/OrderedTupleTable.java index 21f2852..ffe91ad 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/OrderedTupleTable.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/OrderedTupleTable.java @@ -13,11 +13,6 @@ package org.apache.jena.sparql.core.mem; -import static org.apache.jena.sparql.core.mem.QuadTable.accept; -import static org.apache.jena.sparql.core.mem.QuadTable.apply; -import static org.apache.jena.sparql.core.mem.TripleTable.accept; -import static org.apache.jena.sparql.core.mem.TripleTable.apply; - import java.util.function.Consumer; import org.apache.jena.atlas.lib.tuple.TupleMap; @@ -72,7 +67,11 @@ public abstract class OrderedTupleTable<TupleType, ConsumerType> implements Tupl final Node s = q.getSubject(); final Node p = q.getPredicate(); final Node o = q.getObject(); - accept(order, g, s, p, o, consumer); + final Node first = get(order.mapIdx(0), g, s, p, o); + final Node second = get(order.mapIdx(1), g, s, p, o); + final Node third = get(order.mapIdx(2), g, s, p, o); + final Node fourth = get(order.mapIdx(3), g, s, p, o); + consumer.accept(first, second, third, fourth); }; } @@ -89,15 +88,53 @@ public abstract class OrderedTupleTable<TupleType, ConsumerType> implements Tupl final Node s = t.getSubject(); final Node p = t.getPredicate(); final Node o = t.getObject(); - accept(order, s, p, o, consumer); + final Node first = get(order.mapIdx(0), s, p, o); + final Node x2a = get(order.mapIdx(1), s, p, o); + final Node x3a = get(order.mapIdx(2), s, p, o); + consumer.accept(first, x2a, x3a); }; } protected <T, X> TriOperator<T, X> map(final TriOperator<T, X> f) { - return (s, p, o) -> apply(order, s, p, o, f); + return (s, p, o) -> OrderedTupleTable.apply(order, s, p, o, f); } protected Triple unmap(final Node first, final Node second, final Node third) { return apply(reverse, first, second, third, Triple::new); } + + private static <X> X get(final int i, final X x1, final X x2, final X x3) { + switch (i) { + case 0: return x1; + case 1: return x2; + case 2: return x3; + default: throw new IndexOutOfBoundsException("Triples have components 0, 1, 2 but index = " + i + "!"); + } + } + + private static <X> X get(final int i, final X x1, final X x2, final X x3, final X x4) { + switch (i) { + case 0: return x1; + case 1: return x2; + case 2: return x3; + case 3: return x4; + default: throw new IndexOutOfBoundsException("Quads have components 0, 1, 2, 3 but index = " + i + "!"); + } + } + + private static <X, Z> Z apply(final TupleMap tupleMap, final X x1, final X x2, final X x3, final X x4, + final QuadOperator<X, Z> f) { + final X x1a = get(tupleMap.mapIdx(0), x1, x2, x3, x4); + final X x2a = get(tupleMap.mapIdx(1), x1, x2, x3, x4); + final X x3a = get(tupleMap.mapIdx(2), x1, x2, x3, x4); + final X x4a = get(tupleMap.mapIdx(3), x1, x2, x3, x4); + return f.apply(x1a, x2a, x3a, x4a); + } + + private static <X, Z> Z apply(final TupleMap ordering, final X x1, final X x2, final X x3, final TriOperator<X, Z> f) { + final X x1a = get(ordering.mapIdx(0), x1, x2, x3); + final X x2a = get(ordering.mapIdx(1), x1, x2, x3); + final X x3a = get(ordering.mapIdx(2), x1, x2, x3); + return f.apply(x1a, x2a, x3a); + } } http://git-wip-us.apache.org/repos/asf/jena/blob/b951c779/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/QuadTable.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/QuadTable.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/QuadTable.java index 9d9f8f0..80eedb6 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/QuadTable.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/QuadTable.java @@ -18,9 +18,7 @@ import static org.apache.jena.graph.Node.ANY; import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; -import org.apache.jena.atlas.lib.tuple.QuadConsumer.Consumer4; -import org.apache.jena.atlas.lib.tuple.QuadFunction.QuadOperator; -import org.apache.jena.atlas.lib.tuple.TupleMap; + import org.apache.jena.graph.Node; import org.apache.jena.graph.Triple; import org.apache.jena.sparql.core.Quad; @@ -64,36 +62,4 @@ public interface QuadTable extends TupleTable<Quad> { .filter(seen::add) .map(t -> Quad.create(Quad.unionGraph, t)); } - - default Quad unmap(final TupleMap order, final Node first, final Node second, final Node third, final Node fourth) { - return apply(order, first, second, third, fourth, Quad::new); - } - - static <X, Z> Z apply(final TupleMap tupleMap, final X x1, final X x2, final X x3, final X x4, - final QuadOperator<X, Z> f) { - final X x1a = get(tupleMap.mapIdx(0), x1, x2, x3, x4); - final X x2a = get(tupleMap.mapIdx(1), x1, x2, x3, x4); - final X x3a = get(tupleMap.mapIdx(2), x1, x2, x3, x4); - final X x4a = get(tupleMap.mapIdx(3), x1, x2, x3, x4); - return f.apply(x1a, x2a, x3a, x4a); - } - - static <X> void accept(final TupleMap tupleMap, final X x1, final X x2, final X x3, final X x4, - final Consumer4<X> f) { - final X x1a = get(tupleMap.mapIdx(0), x1, x2, x3, x4); - final X x2a = get(tupleMap.mapIdx(1), x1, x2, x3, x4); - final X x3a = get(tupleMap.mapIdx(2), x1, x2, x3, x4); - final X x4a = get(tupleMap.mapIdx(3), x1, x2, x3, x4); - f.accept(x1a, x2a, x3a, x4a); - } - - static <X> X get(final int i, final X x1, final X x2, final X x3, final X x4) { - switch (i) { - case 0: return x1; - case 1: return x2; - case 2: return x3; - case 3: return x4; - default: throw new IndexOutOfBoundsException("Quads have components 0, 1, 2, 3 but index = " + i + "!"); - } - } } http://git-wip-us.apache.org/repos/asf/jena/blob/b951c779/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/TripleTable.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/TripleTable.java b/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/TripleTable.java index 069d73e..b2337b6 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/TripleTable.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/core/mem/TripleTable.java @@ -14,9 +14,7 @@ package org.apache.jena.sparql.core.mem; import java.util.stream.Stream; -import org.apache.jena.atlas.lib.tuple.TriFunction.TriOperator; -import org.apache.jena.atlas.lib.tuple.TriConsumer.Consumer3; -import org.apache.jena.atlas.lib.tuple.TupleMap; + import org.apache.jena.graph.Node; import org.apache.jena.graph.Triple; @@ -39,31 +37,4 @@ public interface TripleTable extends TupleTable<Triple> { default void clear() { find(null, null, null).forEach(this::delete); } - - static <X> void accept(final TupleMap ordering, final X x1, final X x2, final X x3, final Consumer3<X> c) { - final X x1a = get(ordering.mapIdx(0), x1, x2, x3); - final X x2a = get(ordering.mapIdx(1), x1, x2, x3); - final X x3a = get(ordering.mapIdx(2), x1, x2, x3); - c.accept(x1a, x2a, x3a); - } - - static <X, Z> Z apply(final TupleMap ordering, final X x1, final X x2, final X x3, final TriOperator<X, Z> f) { - final X x1a = get(ordering.mapIdx(0), x1, x2, x3); - final X x2a = get(ordering.mapIdx(1), x1, x2, x3); - final X x3a = get(ordering.mapIdx(2), x1, x2, x3); - return f.apply(x1a, x2a, x3a); - } - - default Triple unmap(final TupleMap order, final Node first, final Node second, final Node third) { - return apply(order, first, second, third, Triple::new); - } - - static <X> X get(final int i, final X x1, final X x2, final X x3) { - switch (i) { - case 0: return x1; - case 1: return x2; - case 2: return x3; - default: throw new IndexOutOfBoundsException("Triples have components 0, 1, 2 but index = " + i + "!"); - } - } }
