Search in sources :

Example 1 with ConnectedComponentVertexProgram

use of ai.grakn.graql.internal.analytics.ConnectedComponentVertexProgram in project grakn by graknlabs.

the class TinkerComputeQueryRunner method run.

public <T> ComputeJob<T> run(ConnectedComponentQuery<T> query) {
    return runCompute(query, tinkerComputeQuery -> {
        if (!tinkerComputeQuery.selectedTypesHaveInstance()) {
            LOG.info("Selected types don't have instances");
            return (T) Collections.emptyMap();
        }
        Set<LabelId> subLabelIds = convertLabelsToIds(tinkerComputeQuery.subLabels());
        GraknVertexProgram<?> vertexProgram;
        if (query.sourceId().isPresent()) {
            ConceptId conceptId = query.sourceId().get();
            if (!tinkerComputeQuery.verticesExistInSubgraph(conceptId)) {
                throw GraqlQueryException.instanceDoesNotExist();
            }
            vertexProgram = new ConnectedComponentVertexProgram(conceptId);
        } else {
            vertexProgram = new ConnectedComponentsVertexProgram();
        }
        Long clusterSize = query.clusterSize();
        GraknMapReduce<?> mapReduce;
        if (query.isMembersSet()) {
            mapReduce = new ClusterMemberMapReduce(ConnectedComponentsVertexProgram.CLUSTER_LABEL, clusterSize);
        } else {
            mapReduce = new ClusterSizeMapReduce(ConnectedComponentsVertexProgram.CLUSTER_LABEL, clusterSize);
        }
        Memory memory = tinkerComputeQuery.compute(vertexProgram, mapReduce, subLabelIds).memory();
        return memory.get(mapReduce.getClass().getName());
    });
}
Also used : ConnectedComponentVertexProgram(ai.grakn.graql.internal.analytics.ConnectedComponentVertexProgram) Memory(org.apache.tinkerpop.gremlin.process.computer.Memory) ClusterSizeMapReduce(ai.grakn.graql.internal.analytics.ClusterSizeMapReduce) LabelId(ai.grakn.concept.LabelId) ConnectedComponentsVertexProgram(ai.grakn.graql.internal.analytics.ConnectedComponentsVertexProgram) ClusterMemberMapReduce(ai.grakn.graql.internal.analytics.ClusterMemberMapReduce) ConceptId(ai.grakn.concept.ConceptId)

Aggregations

ConceptId (ai.grakn.concept.ConceptId)1 LabelId (ai.grakn.concept.LabelId)1 ClusterMemberMapReduce (ai.grakn.graql.internal.analytics.ClusterMemberMapReduce)1 ClusterSizeMapReduce (ai.grakn.graql.internal.analytics.ClusterSizeMapReduce)1 ConnectedComponentVertexProgram (ai.grakn.graql.internal.analytics.ConnectedComponentVertexProgram)1 ConnectedComponentsVertexProgram (ai.grakn.graql.internal.analytics.ConnectedComponentsVertexProgram)1 Memory (org.apache.tinkerpop.gremlin.process.computer.Memory)1