use of ai.grakn.concept.Label in project grakn by graknlabs.
the class GraknTxPropertyTest method whenCallingGetRole_TheResultIsTheSameAsGetSchemaConcept.
@Property
public void whenCallingGetRole_TheResultIsTheSameAsGetSchemaConcept(@Open GraknTx graph, @FromTx Role role) {
Label label = role.getLabel();
assertSameResult(() -> graph.getSchemaConcept(label), () -> graph.getRole(label.getValue()));
}
use of ai.grakn.concept.Label in project grakn by graknlabs.
the class GraknTxPropertyTest method whenCallingGetRelationType_TheResultIsTheSameAsGetSchemaConcept.
@Property
public void whenCallingGetRelationType_TheResultIsTheSameAsGetSchemaConcept(@Open GraknTx graph, @FromTx RelationshipType type) {
Label label = type.getLabel();
assertSameResult(() -> graph.getSchemaConcept(label), () -> graph.getRelationshipType(label.getValue()));
}
use of ai.grakn.concept.Label in project grakn by graknlabs.
the class TinkerComputeQueryRunner method run.
public ComputeJob<Map<Long, Set<String>>> run(CorenessQuery query) {
return runCompute(query, tinkerComputeQuery -> {
long k = query.minK();
if (k < 2L)
throw GraqlQueryException.kValueSmallerThanTwo();
Set<Label> ofLabels;
// Check if ofType is valid before returning emptyMap
if (query.targetLabels().isEmpty()) {
ofLabels = tinkerComputeQuery.subLabels();
} else {
ofLabels = query.targetLabels().stream().flatMap(typeLabel -> {
Type type = tx.getSchemaConcept(typeLabel);
if (type == null)
throw GraqlQueryException.labelNotFound(typeLabel);
if (type.isRelationshipType())
throw GraqlQueryException.kCoreOnRelationshipType(typeLabel);
return type.subs();
}).map(SchemaConcept::getLabel).collect(Collectors.toSet());
}
Set<Label> subLabels = Sets.union(tinkerComputeQuery.subLabels(), ofLabels);
if (!tinkerComputeQuery.selectedTypesHaveInstance()) {
return Collections.emptyMap();
}
ComputerResult result;
Set<LabelId> subLabelIds = convertLabelsToIds(subLabels);
Set<LabelId> ofLabelIds = convertLabelsToIds(ofLabels);
try {
result = tinkerComputeQuery.compute(new CorenessVertexProgram(k), new DegreeDistributionMapReduce(ofLabelIds, CorenessVertexProgram.CORENESS), subLabelIds);
} catch (NoResultException e) {
return Collections.emptyMap();
}
return result.memory().get(DegreeDistributionMapReduce.class.getName());
});
}
use of ai.grakn.concept.Label in project grakn by graknlabs.
the class RelationshipAtom method getRoleVarMap.
/**
* @return map containing roleType - (rolePlayer var - rolePlayer type) pairs
*/
@Memoized
public Multimap<Role, Var> getRoleVarMap() {
ImmutableMultimap.Builder<Role, Var> builder = ImmutableMultimap.builder();
GraknTx graph = getParentQuery().tx();
getRelationPlayers().forEach(c -> {
Var varName = c.getRolePlayer().var();
VarPatternAdmin rolePattern = c.getRole().orElse(null);
if (rolePattern != null) {
// try directly
Label typeLabel = rolePattern.getTypeLabel().orElse(null);
Role role = typeLabel != null ? graph.getRole(typeLabel.getValue()) : null;
// try indirectly
if (role == null && rolePattern.var().isUserDefinedName()) {
IdPredicate rolePredicate = getIdPredicate(rolePattern.var());
if (rolePredicate != null) {
Role r = graph.getConcept(rolePredicate.getPredicate());
if (r == null)
throw GraqlQueryException.idNotFound(rolePredicate.getPredicate());
role = r;
}
}
if (role != null)
builder.put(role, varName);
}
});
return builder.build();
}
use of ai.grakn.concept.Label in project grakn by graknlabs.
the class RelationshipAtom method getRoleRelationPlayerMap.
private Multimap<Role, RelationPlayer> getRoleRelationPlayerMap() {
Multimap<Role, RelationPlayer> roleRelationPlayerMap = ArrayListMultimap.create();
Multimap<Role, Var> roleVarMap = getRoleVarMap();
List<RelationPlayer> relationPlayers = getRelationPlayers();
roleVarMap.asMap().forEach((role, value) -> {
Label roleLabel = role.getLabel();
relationPlayers.stream().filter(rp -> rp.getRole().isPresent()).forEach(rp -> {
VarPatternAdmin roleTypeVar = rp.getRole().orElse(null);
Label rl = roleTypeVar != null ? roleTypeVar.getTypeLabel().orElse(null) : null;
if (roleLabel != null && roleLabel.equals(rl)) {
roleRelationPlayerMap.put(role, rp);
}
});
});
return roleRelationPlayerMap;
}
Aggregations