Search in sources :

Example 1 with ThingVertex

use of com.vaticle.typedb.core.graph.vertex.ThingVertex in project grakn by graknlabs.

the class RelationIterator method createIterator.

private Forwardable<ThingVertex, Order.Asc> createIterator(int pos) {
    StructureEdge<?, ?> edge = edges.get(pos);
    ThingVertex player = answer.get(edge.to().id().asVariable().asRetrievable()).asThing();
    return SortedIterators.Forwardable.merge(iterate(edge.asNative().asRolePlayer().types()).map(roleLabel -> {
        TypeVertex roleVertex = graphMgr.schema().getType(roleLabel);
        return player.ins().edge(ROLEPLAYER, roleVertex).fromAndOptimised().filter(relRole -> relationTypes.contains(relRole.key().type().properLabel()));
    }), ASC).filter(relRole -> !scoped.contains(relRole.value())).mapSorted(relRole -> {
        scoped.record(pos, relRole.value());
        return relRole.key();
    }, relation -> new KeyValue<>(relation, null), ASC);
}
Also used : ILLEGAL_STATE(com.vaticle.typedb.core.common.exception.ErrorMessage.Internal.ILLEGAL_STATE) KeyValue(com.vaticle.typedb.core.common.collection.KeyValue) Identifier(com.vaticle.typedb.core.traversal.common.Identifier) Order(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Order) StructureEdge(com.vaticle.typedb.core.traversal.structure.StructureEdge) HashMap(java.util.HashMap) ASC(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Map(java.util.Map) AbstractFunctionalIterator(com.vaticle.typedb.core.common.iterator.AbstractFunctionalIterator) NoSuchElementException(java.util.NoSuchElementException) Label(com.vaticle.typedb.core.common.parameters.Label) GraphManager(com.vaticle.typedb.core.graph.GraphManager) RelationTraversal(com.vaticle.typedb.core.traversal.RelationTraversal) VertexMap(com.vaticle.typedb.core.traversal.common.VertexMap) FunctionalIterator(com.vaticle.typedb.core.common.iterator.FunctionalIterator) Iterator(java.util.Iterator) Set(java.util.Set) SortedIterators(com.vaticle.typedb.core.common.iterator.sorted.SortedIterators) Vertex(com.vaticle.typedb.core.graph.vertex.Vertex) Forwardable(com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Forwardable) ThingVertex(com.vaticle.typedb.core.graph.vertex.ThingVertex) List(java.util.List) Retrievable(com.vaticle.typedb.core.traversal.common.Identifier.Variable.Retrievable) ROLEPLAYER(com.vaticle.typedb.core.graph.common.Encoding.Edge.Thing.Optimised.ROLEPLAYER) Iterators.iterate(com.vaticle.typedb.core.common.iterator.Iterators.iterate) TypeDBException(com.vaticle.typedb.core.common.exception.TypeDBException) TypeVertex(com.vaticle.typedb.core.graph.vertex.TypeVertex) ThingVertex(com.vaticle.typedb.core.graph.vertex.ThingVertex) TypeVertex(com.vaticle.typedb.core.graph.vertex.TypeVertex)

Example 2 with ThingVertex

use of com.vaticle.typedb.core.graph.vertex.ThingVertex in project grakn by graknlabs.

the class RelationIterator method proposeNext.

private void proposeNext() {
    assert state == State.EMPTY;
    Forwardable<ThingVertex, Order.Asc> relationIterator = getIterator(proposer);
    // relationIterator requires clearing of scoped roles as it is stateful
    scoped.clear();
    while (relationIterator.hasNext()) {
        ThingVertex newRelation = relationIterator.next();
        if (!newRelation.equals(relation)) {
            relation = newRelation;
            state = State.PROPOSED;
            return;
        }
    }
    state = State.COMPLETED;
}
Also used : ThingVertex(com.vaticle.typedb.core.graph.vertex.ThingVertex)

Aggregations

ThingVertex (com.vaticle.typedb.core.graph.vertex.ThingVertex)2 KeyValue (com.vaticle.typedb.core.common.collection.KeyValue)1 ILLEGAL_STATE (com.vaticle.typedb.core.common.exception.ErrorMessage.Internal.ILLEGAL_STATE)1 TypeDBException (com.vaticle.typedb.core.common.exception.TypeDBException)1 AbstractFunctionalIterator (com.vaticle.typedb.core.common.iterator.AbstractFunctionalIterator)1 FunctionalIterator (com.vaticle.typedb.core.common.iterator.FunctionalIterator)1 Iterators.iterate (com.vaticle.typedb.core.common.iterator.Iterators.iterate)1 ASC (com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.ASC)1 Forwardable (com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Forwardable)1 Order (com.vaticle.typedb.core.common.iterator.sorted.SortedIterator.Order)1 SortedIterators (com.vaticle.typedb.core.common.iterator.sorted.SortedIterators)1 Label (com.vaticle.typedb.core.common.parameters.Label)1 GraphManager (com.vaticle.typedb.core.graph.GraphManager)1 ROLEPLAYER (com.vaticle.typedb.core.graph.common.Encoding.Edge.Thing.Optimised.ROLEPLAYER)1 TypeVertex (com.vaticle.typedb.core.graph.vertex.TypeVertex)1 Vertex (com.vaticle.typedb.core.graph.vertex.Vertex)1 RelationTraversal (com.vaticle.typedb.core.traversal.RelationTraversal)1 Identifier (com.vaticle.typedb.core.traversal.common.Identifier)1 Retrievable (com.vaticle.typedb.core.traversal.common.Identifier.Variable.Retrievable)1 VertexMap (com.vaticle.typedb.core.traversal.common.VertexMap)1