Search in sources :

Example 1 with TitanGraphQuery

use of com.thinkaurelius.titan.core.TitanGraphQuery in project titan by thinkaurelius.

the class TitanGraphTest method evaluateQuery.

public static void evaluateQuery(TitanGraphQuery query, ElementCategory resultType, int expectedResults, boolean[] subQuerySpecs, Map<PropertyKey, Order> orderMap, String... intersectingIndexes) {
    if (intersectingIndexes == null)
        intersectingIndexes = new String[0];
    SimpleQueryProfiler profiler = new SimpleQueryProfiler();
    ((GraphCentricQueryBuilder) query).profiler(profiler);
    Iterable<? extends TitanElement> result;
    switch(resultType) {
        case PROPERTY:
            result = query.properties();
            break;
        case EDGE:
            result = query.edges();
            break;
        case VERTEX:
            result = query.vertices();
            break;
        default:
            throw new AssertionError();
    }
    OrderList orders = profiler.getAnnotation(QueryProfiler.ORDERS_ANNOTATION);
    //Check elements and that they are returned in the correct order
    int no = 0;
    TitanElement previous = null;
    for (TitanElement e : result) {
        assertNotNull(e);
        no++;
        if (previous != null && !orders.isEmpty()) {
            assertTrue(orders.compare(previous, e) <= 0);
        }
        previous = e;
    }
    assertEquals(expectedResults, no);
    //Check OrderList of query
    assertNotNull(orders);
    assertEquals(orderMap.size(), orders.size());
    for (int i = 0; i < orders.size(); i++) {
        assertEquals(orderMap.get(orders.getKey(i)), orders.getOrder(i));
    }
    for (PropertyKey key : orderMap.keySet()) assertTrue(orders.containsKey(key));
    //Check subqueries
    SimpleQueryProfiler subp = Iterables.getOnlyElement(Iterables.filter(profiler, p -> !p.getGroupName().equals(QueryProfiler.OPTIMIZATION)));
    if (subQuerySpecs.length == 2) {
        //0=>fitted, 1=>ordered
        assertEquals(subQuerySpecs[0], (Boolean) subp.getAnnotation(QueryProfiler.FITTED_ANNOTATION));
        assertEquals(subQuerySpecs[1], (Boolean) subp.getAnnotation(QueryProfiler.ORDERED_ANNOTATION));
    }
    Set<String> indexNames = new HashSet<>();
    int indexQueries = 0;
    boolean fullscan = false;
    for (SimpleQueryProfiler indexp : subp) {
        if (indexp.getAnnotation(QueryProfiler.FULLSCAN_ANNOTATION) != null) {
            fullscan = true;
        } else {
            indexNames.add(indexp.getAnnotation(QueryProfiler.INDEX_ANNOTATION));
            indexQueries++;
        }
    }
    if (indexQueries > 0)
        assertFalse(fullscan);
    if (fullscan)
        assertTrue(intersectingIndexes.length == 0);
    assertEquals(intersectingIndexes.length, indexQueries);
    assertEquals(Sets.newHashSet(intersectingIndexes), indexNames);
}
Also used : BrittleTests(com.thinkaurelius.titan.testcategory.BrittleTests) StandardTitanTx(com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx) Arrays(java.util.Arrays) EdgeSerializer(com.thinkaurelius.titan.graphdb.database.EdgeSerializer) GraphOfTheGodsFactory(com.thinkaurelius.titan.example.GraphOfTheGodsFactory) PropertyKey(com.thinkaurelius.titan.core.PropertyKey) BasicVertexCentricQueryBuilder(com.thinkaurelius.titan.graphdb.query.vertex.BasicVertexCentricQueryBuilder) TransactionId(com.thinkaurelius.titan.core.log.TransactionId) Change(com.thinkaurelius.titan.core.log.Change) BaseVertexLabel(com.thinkaurelius.titan.graphdb.types.system.BaseVertexLabel) EdgeLabel(com.thinkaurelius.titan.core.EdgeLabel) Cardinality.single(org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality.single) Duration(java.time.Duration) Map(java.util.Map) ManagementUtil(com.thinkaurelius.titan.core.util.ManagementUtil) StaticBuffer(com.thinkaurelius.titan.diskstorage.StaticBuffer) Metrics(org.apache.tinkerpop.gremlin.process.traversal.util.Metrics) EnumSet(java.util.EnumSet) InternalRelationType(com.thinkaurelius.titan.graphdb.internal.InternalRelationType) TitanVertex(com.thinkaurelius.titan.core.TitanVertex) ChangeState(com.thinkaurelius.titan.core.log.ChangeState) SimpleQueryProfiler(com.thinkaurelius.titan.graphdb.query.profile.SimpleQueryProfiler) ConfigOption(com.thinkaurelius.titan.diskstorage.configuration.ConfigOption) KCVSLog(com.thinkaurelius.titan.diskstorage.log.kcvs.KCVSLog) SpecialInt(com.thinkaurelius.titan.graphdb.serializer.SpecialInt) EnumMap(java.util.EnumMap) Order.decr(org.apache.tinkerpop.gremlin.process.traversal.Order.decr) Set(java.util.Set) ConsistencyModifier(com.thinkaurelius.titan.core.schema.ConsistencyModifier) ImplicitKey(com.thinkaurelius.titan.graphdb.types.system.ImplicitKey) Vertex(org.apache.tinkerpop.gremlin.structure.Vertex) Mapping(com.thinkaurelius.titan.core.schema.Mapping) Category(org.junit.experimental.categories.Category) StandardEdgeLabelMaker(com.thinkaurelius.titan.graphdb.types.StandardEdgeLabelMaker) CountDownLatch(java.util.concurrent.CountDownLatch) IndexRemoveJob(com.thinkaurelius.titan.graphdb.olap.job.IndexRemoveJob) TitanGraphStep(com.thinkaurelius.titan.graphdb.tinkerpop.optimize.TitanGraphStep) IndexRepairJob(com.thinkaurelius.titan.graphdb.olap.job.IndexRepairJob) GraphTraversalSource(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource) Iterables(com.google.common.collect.Iterables) StartStep(org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.StartStep) TitanVertexQuery(com.thinkaurelius.titan.core.TitanVertexQuery) Message(com.thinkaurelius.titan.diskstorage.log.Message) Cardinality(com.thinkaurelius.titan.core.Cardinality) LogProcessorFramework(com.thinkaurelius.titan.core.log.LogProcessorFramework) QueryProfiler(com.thinkaurelius.titan.graphdb.query.profile.QueryProfiler) ArrayList(java.util.ArrayList) OrderList(com.thinkaurelius.titan.graphdb.internal.OrderList) LogTxMeta(com.thinkaurelius.titan.graphdb.database.log.LogTxMeta) Lists(com.google.common.collect.Lists) GraphDatabaseConfiguration(com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration) LogTxStatus(com.thinkaurelius.titan.graphdb.database.log.LogTxStatus) GraphStep(org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GraphStep) TitanAssert(com.thinkaurelius.titan.testutil.TitanAssert) MessageReader(com.thinkaurelius.titan.diskstorage.log.MessageReader) PropertyKeyDefinition(com.thinkaurelius.titan.graphdb.schema.PropertyKeyDefinition) TransactionRecovery(com.thinkaurelius.titan.core.log.TransactionRecovery) VertexLabelDefinition(com.thinkaurelius.titan.graphdb.schema.VertexLabelDefinition) TitanGraphIndex(com.thinkaurelius.titan.core.schema.TitanGraphIndex) Test(org.junit.Test) T(org.apache.tinkerpop.gremlin.structure.T) TitanManagement(com.thinkaurelius.titan.core.schema.TitanManagement) ExecutionException(java.util.concurrent.ExecutionException) Direction(org.apache.tinkerpop.gremlin.structure.Direction) ChronoUnit(java.time.temporal.ChronoUnit) Cmp(com.thinkaurelius.titan.core.attribute.Cmp) Traversal(org.apache.tinkerpop.gremlin.process.traversal.Traversal) TransactionLogHeader(com.thinkaurelius.titan.graphdb.database.log.TransactionLogHeader) Preconditions(com.google.common.base.Preconditions) TraversalMetrics(org.apache.tinkerpop.gremlin.process.traversal.util.TraversalMetrics) Assert(org.junit.Assert) Geoshape(com.thinkaurelius.titan.core.attribute.Geoshape) TitanVertexStep(com.thinkaurelius.titan.graphdb.tinkerpop.optimize.TitanVertexStep) TitanSchemaType(com.thinkaurelius.titan.core.schema.TitanSchemaType) Multiplicity(com.thinkaurelius.titan.core.Multiplicity) LoggerFactory(org.slf4j.LoggerFactory) SchemaStatus(com.thinkaurelius.titan.core.schema.SchemaStatus) Order(com.thinkaurelius.titan.graphdb.internal.Order) Random(java.util.Random) Order.incr(org.apache.tinkerpop.gremlin.process.traversal.Order.incr) RelationCategory(com.thinkaurelius.titan.graphdb.internal.RelationCategory) SpecialIntSerializer(com.thinkaurelius.titan.graphdb.serializer.SpecialIntSerializer) SchemaViolationException(com.thinkaurelius.titan.core.SchemaViolationException) TitanFactory(com.thinkaurelius.titan.core.TitanFactory) ChangeProcessor(com.thinkaurelius.titan.core.log.ChangeProcessor) VertexLabel(com.thinkaurelius.titan.core.VertexLabel) ElementCategory(com.thinkaurelius.titan.graphdb.internal.ElementCategory) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) TimestampProvider(com.thinkaurelius.titan.diskstorage.util.time.TimestampProvider) P(org.apache.tinkerpop.gremlin.process.traversal.P) RelationIdentifier(com.thinkaurelius.titan.graphdb.relations.RelationIdentifier) TitanPropertiesStep(com.thinkaurelius.titan.graphdb.tinkerpop.optimize.TitanPropertiesStep) ImmutableMap(com.google.common.collect.ImmutableMap) BackendException(com.thinkaurelius.titan.diskstorage.BackendException) Serializer(com.thinkaurelius.titan.graphdb.database.serialize.Serializer) TitanConfigurationException(com.thinkaurelius.titan.core.TitanConfigurationException) SchemaAction(com.thinkaurelius.titan.core.schema.SchemaAction) Instant(java.time.Instant) TitanCleanup(com.thinkaurelius.titan.core.util.TitanCleanup) Sets(com.google.common.collect.Sets) List(java.util.List) LocalStep(org.apache.tinkerpop.gremlin.process.traversal.step.branch.LocalStep) TitanVertexProperty(com.thinkaurelius.titan.core.TitanVertexProperty) TitanTransaction(com.thinkaurelius.titan.core.TitanTransaction) TitanElement(com.thinkaurelius.titan.core.TitanElement) RelationType(com.thinkaurelius.titan.core.RelationType) StandardTransactionLogProcessor(com.thinkaurelius.titan.graphdb.log.StandardTransactionLogProcessor) StandardTitanGraph(com.thinkaurelius.titan.graphdb.database.StandardTitanGraph) TitanGraph(com.thinkaurelius.titan.core.TitanGraph) EdgeLabelDefinition(com.thinkaurelius.titan.graphdb.schema.EdgeLabelDefinition) WriteConfiguration(com.thinkaurelius.titan.diskstorage.configuration.WriteConfiguration) Log(com.thinkaurelius.titan.diskstorage.log.Log) GraphCentricQueryBuilder(com.thinkaurelius.titan.graphdb.query.graph.GraphCentricQueryBuilder) TitanException(com.thinkaurelius.titan.core.TitanException) ManagementSystem(com.thinkaurelius.titan.graphdb.database.management.ManagementSystem) StandardPropertyKeyMaker(com.thinkaurelius.titan.graphdb.types.StandardPropertyKeyMaker) Iterators(com.google.common.collect.Iterators) OrderGlobalStep(org.apache.tinkerpop.gremlin.process.traversal.step.map.OrderGlobalStep) HashSet(java.util.HashSet) VertexProperty(org.apache.tinkerpop.gremlin.structure.VertexProperty) ImmutableList(com.google.common.collect.ImmutableList) RelationTypeIndex(com.thinkaurelius.titan.core.schema.RelationTypeIndex) TitanEdge(com.thinkaurelius.titan.core.TitanEdge) VertexList(com.thinkaurelius.titan.core.VertexList) Edge(org.apache.tinkerpop.gremlin.structure.Edge) SchemaContainer(com.thinkaurelius.titan.graphdb.schema.SchemaContainer) Contain(com.thinkaurelius.titan.core.attribute.Contain) TitanGraphQuery(com.thinkaurelius.titan.core.TitanGraphQuery) Logger(org.slf4j.Logger) Iterator(java.util.Iterator) org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__) GraphTraversal(org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal) TestGraphConfigs(com.thinkaurelius.titan.testutil.TestGraphConfigs) Step(org.apache.tinkerpop.gremlin.process.traversal.Step) TimeUnit(java.util.concurrent.TimeUnit) ReadMarker(com.thinkaurelius.titan.diskstorage.log.ReadMarker) ConfigElement(com.thinkaurelius.titan.diskstorage.configuration.ConfigElement) ScanMetrics(com.thinkaurelius.titan.diskstorage.keycolumnvalue.scan.ScanMetrics) TraversalFilterStep(org.apache.tinkerpop.gremlin.process.traversal.step.filter.TraversalFilterStep) GraphCentricQueryBuilder(com.thinkaurelius.titan.graphdb.query.graph.GraphCentricQueryBuilder) SimpleQueryProfiler(com.thinkaurelius.titan.graphdb.query.profile.SimpleQueryProfiler) TitanElement(com.thinkaurelius.titan.core.TitanElement) OrderList(com.thinkaurelius.titan.graphdb.internal.OrderList) PropertyKey(com.thinkaurelius.titan.core.PropertyKey) HashSet(java.util.HashSet)

Example 2 with TitanGraphQuery

use of com.thinkaurelius.titan.core.TitanGraphQuery in project titan by thinkaurelius.

the class TitanIndexTest method testIndexing.

@Test
public void testIndexing() {
    PropertyKey text = makeKey("text", String.class);
    createExternalVertexIndex(text, INDEX);
    createExternalEdgeIndex(text, INDEX);
    PropertyKey location = makeKey("location", Geoshape.class);
    createExternalVertexIndex(location, INDEX);
    createExternalEdgeIndex(location, INDEX);
    PropertyKey time = makeKey("time", Long.class);
    createExternalVertexIndex(time, INDEX);
    createExternalEdgeIndex(time, INDEX);
    PropertyKey category = makeKey("category", Integer.class);
    mgmt.buildIndex("vcategory", Vertex.class).addKey(category).buildCompositeIndex();
    mgmt.buildIndex("ecategory", Edge.class).addKey(category).buildCompositeIndex();
    PropertyKey group = makeKey("group", Byte.class);
    createExternalVertexIndex(group, INDEX);
    createExternalEdgeIndex(group, INDEX);
    PropertyKey id = makeVertexIndexedKey("uid", Integer.class);
    EdgeLabel knows = ((StandardEdgeLabelMaker) mgmt.makeEdgeLabel("knows")).sortKey(time).signature(location).make();
    finishSchema();
    clopen();
    String[] words = { "world", "aurelius", "titan", "graph" };
    int numCategories = 5;
    int numGroups = 10;
    double distance, offset;
    int numV = 100;
    final int originalNumV = numV;
    for (int i = 0; i < numV; i++) {
        TitanVertex v = tx.addVertex();
        v.property(VertexProperty.Cardinality.single, "uid", i);
        v.property(VertexProperty.Cardinality.single, "category", i % numCategories);
        v.property(VertexProperty.Cardinality.single, "group", i % numGroups);
        v.property(VertexProperty.Cardinality.single, "text", "Vertex " + words[i % words.length]);
        v.property(VertexProperty.Cardinality.single, "time", i);
        offset = (i % 2 == 0 ? 1 : -1) * (i * 50.0 / numV);
        v.property(VertexProperty.Cardinality.single, "location", Geoshape.point(0.0 + offset, 0.0 + offset));
        Edge e = v.addEdge("knows", getVertex("uid", Math.max(0, i - 1)));
        e.property("text", "Vertex " + words[i % words.length]);
        e.property("time", i);
        e.property("category", i % numCategories);
        e.property("group", i % numGroups);
        e.property("location", Geoshape.point(0.0 + offset, 0.0 + offset));
    }
    for (int i = 0; i < words.length; i++) {
        int expectedSize = numV / words.length;
        assertCount(expectedSize, tx.query().has("text", Text.CONTAINS, words[i]).vertices());
        assertCount(expectedSize, tx.query().has("text", Text.CONTAINS, words[i]).edges());
        //Test ordering
        for (String orderKey : new String[] { "time", "category" }) {
            for (Order order : Order.values()) {
                for (TitanGraphQuery traversal : ImmutableList.of(tx.query().has("text", Text.CONTAINS, words[i]).orderBy(orderKey, order.getTP()), tx.query().has("text", Text.CONTAINS, words[i]).orderBy(orderKey, order.getTP()))) {
                    verifyElementOrder(traversal.vertices(), orderKey, order, expectedSize);
                }
            }
        }
    }
    assertCount(3, tx.query().has("group", 3).orderBy("time", incr).limit(3).vertices());
    assertCount(3, tx.query().has("group", 3).orderBy("time", decr).limit(3).edges());
    for (int i = 0; i < numV / 2; i += numV / 10) {
        assertCount(i, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, i).has("time", Cmp.LESS_THAN, i + i).vertices());
        assertCount(i, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, i).has("time", Cmp.LESS_THAN, i + i).edges());
    }
    for (int i = 0; i < numV; i += 10) {
        offset = (i * 50.0 / originalNumV);
        distance = Geoshape.point(0.0, 0.0).getPoint().distance(Geoshape.point(offset, offset).getPoint()) + 20;
        assertCount(i + 1, tx.query().has("location", Geo.WITHIN, Geoshape.circle(0.0, 0.0, distance)).vertices());
        assertCount(i + 1, tx.query().has("location", Geo.WITHIN, Geoshape.circle(0.0, 0.0, distance)).edges());
    }
    //Queries combining mixed and composite indexes
    assertCount(4, tx.query().has("category", 1).interval("time", 10, 28).vertices());
    assertCount(4, tx.query().has("category", 1).interval("time", 10, 28).edges());
    assertCount(5, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, 10).has("time", Cmp.LESS_THAN, 30).has("text", Text.CONTAINS, words[0]).vertices());
    offset = (19 * 50.0 / originalNumV);
    distance = Geoshape.point(0.0, 0.0).getPoint().distance(Geoshape.point(offset, offset).getPoint()) + 20;
    assertCount(5, tx.query().has("location", Geo.INTERSECT, Geoshape.circle(0.0, 0.0, distance)).has("text", Text.CONTAINS, words[0]).vertices());
    assertCount(numV, tx.query().vertices());
    assertCount(numV, tx.query().edges());
    //--------------
    clopen();
    for (int i = 0; i < words.length; i++) {
        int expectedSize = numV / words.length;
        assertCount(expectedSize, tx.query().has("text", Text.CONTAINS, words[i]).vertices());
        assertCount(expectedSize, tx.query().has("text", Text.CONTAINS, words[i]).edges());
        //Test ordering
        for (String orderKey : new String[] { "time", "category" }) {
            for (Order order : Order.values()) {
                for (TitanGraphQuery traversal : ImmutableList.of(tx.query().has("text", Text.CONTAINS, words[i]).orderBy(orderKey, order.getTP()), tx.query().has("text", Text.CONTAINS, words[i]).orderBy(orderKey, order.getTP()))) {
                    verifyElementOrder(traversal.vertices(), orderKey, order, expectedSize);
                }
            }
        }
    }
    assertCount(3, tx.query().has("group", 3).orderBy("time", incr).limit(3).vertices());
    assertCount(3, tx.query().has("group", 3).orderBy("time", decr).limit(3).edges());
    for (int i = 0; i < numV / 2; i += numV / 10) {
        assertCount(i, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, i).has("time", Cmp.LESS_THAN, i + i).vertices());
        assertCount(i, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, i).has("time", Cmp.LESS_THAN, i + i).edges());
    }
    for (int i = 0; i < numV; i += 10) {
        offset = (i * 50.0 / originalNumV);
        distance = Geoshape.point(0.0, 0.0).getPoint().distance(Geoshape.point(offset, offset).getPoint()) + 20;
        assertCount(i + 1, tx.query().has("location", Geo.WITHIN, Geoshape.circle(0.0, 0.0, distance)).vertices());
        assertCount(i + 1, tx.query().has("location", Geo.WITHIN, Geoshape.circle(0.0, 0.0, distance)).edges());
    }
    //Queries combining mixed and composite indexes
    assertCount(4, tx.query().has("category", 1).interval("time", 10, 28).vertices());
    assertCount(4, tx.query().has("category", 1).interval("time", 10, 28).edges());
    assertCount(5, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, 10).has("time", Cmp.LESS_THAN, 30).has("text", Text.CONTAINS, words[0]).vertices());
    offset = (19 * 50.0 / originalNumV);
    distance = Geoshape.point(0.0, 0.0).getPoint().distance(Geoshape.point(offset, offset).getPoint()) + 20;
    assertCount(5, tx.query().has("location", Geo.INTERSECT, Geoshape.circle(0.0, 0.0, distance)).has("text", Text.CONTAINS, words[0]).vertices());
    assertCount(numV, tx.query().vertices());
    assertCount(numV, tx.query().edges());
    newTx();
    int numDelete = 12;
    for (int i = numV - numDelete; i < numV; i++) {
        getVertex("uid", i).remove();
    }
    numV = numV - numDelete;
    //Copied from above
    for (int i = 0; i < words.length; i++) {
        assertCount(numV / words.length, tx.query().has("text", Text.CONTAINS, words[i]).vertices());
        assertCount(numV / words.length, tx.query().has("text", Text.CONTAINS, words[i]).edges());
    }
    for (int i = 0; i < numV / 2; i += numV / 10) {
        assertCount(i, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, i).has("time", Cmp.LESS_THAN, i + i).vertices());
        assertCount(i, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, i).has("time", Cmp.LESS_THAN, i + i).edges());
    }
    for (int i = 0; i < numV; i += 10) {
        offset = (i * 50.0 / originalNumV);
        distance = Geoshape.point(0.0, 0.0).getPoint().distance(Geoshape.point(offset, offset).getPoint()) + 20;
        assertCount(i + 1, tx.query().has("location", Geo.WITHIN, Geoshape.circle(0.0, 0.0, distance)).vertices());
        assertCount(i + 1, tx.query().has("location", Geo.WITHIN, Geoshape.circle(0.0, 0.0, distance)).edges());
    }
    assertCount(5, tx.query().has("time", Cmp.GREATER_THAN_EQUAL, 10).has("time", Cmp.LESS_THAN, 30).has("text", Text.CONTAINS, words[0]).vertices());
    offset = (19 * 50.0 / originalNumV);
    distance = Geoshape.point(0.0, 0.0).getPoint().distance(Geoshape.point(offset, offset).getPoint()) + 20;
    assertCount(5, tx.query().has("location", Geo.INTERSECT, Geoshape.circle(0.0, 0.0, distance)).has("text", Text.CONTAINS, words[0]).vertices());
    assertCount(numV, tx.query().vertices());
    assertCount(numV, tx.query().edges());
}
Also used : Order(com.thinkaurelius.titan.graphdb.internal.Order) StandardEdgeLabelMaker(com.thinkaurelius.titan.graphdb.types.StandardEdgeLabelMaker) TitanVertex(com.thinkaurelius.titan.core.TitanVertex) TitanGraphQuery(com.thinkaurelius.titan.core.TitanGraphQuery) EdgeLabel(com.thinkaurelius.titan.core.EdgeLabel) Edge(org.apache.tinkerpop.gremlin.structure.Edge) PropertyKey(com.thinkaurelius.titan.core.PropertyKey) Test(org.junit.Test)

Aggregations

EdgeLabel (com.thinkaurelius.titan.core.EdgeLabel)2 PropertyKey (com.thinkaurelius.titan.core.PropertyKey)2 TitanGraphQuery (com.thinkaurelius.titan.core.TitanGraphQuery)2 TitanVertex (com.thinkaurelius.titan.core.TitanVertex)2 Order (com.thinkaurelius.titan.graphdb.internal.Order)2 StandardEdgeLabelMaker (com.thinkaurelius.titan.graphdb.types.StandardEdgeLabelMaker)2 Edge (org.apache.tinkerpop.gremlin.structure.Edge)2 Test (org.junit.Test)2 Preconditions (com.google.common.base.Preconditions)1 ImmutableList (com.google.common.collect.ImmutableList)1 ImmutableMap (com.google.common.collect.ImmutableMap)1 Iterables (com.google.common.collect.Iterables)1 Iterators (com.google.common.collect.Iterators)1 Lists (com.google.common.collect.Lists)1 Sets (com.google.common.collect.Sets)1 Cardinality (com.thinkaurelius.titan.core.Cardinality)1 Multiplicity (com.thinkaurelius.titan.core.Multiplicity)1 RelationType (com.thinkaurelius.titan.core.RelationType)1 SchemaViolationException (com.thinkaurelius.titan.core.SchemaViolationException)1 TitanConfigurationException (com.thinkaurelius.titan.core.TitanConfigurationException)1