private static VarPattern createIdVar(Var varName, ConceptId typeId){ return varName.id(typeId); }
private static VarPattern createIdVar(Var varName, Label label, GraknTx graph){ SchemaConcept schemaConcept = graph.getSchemaConcept(label); if (schemaConcept == null) throw GraqlQueryException.labelNotFound(label); return varName.id(schemaConcept.id()); }
@Nullable public IdPredicate getTypePredicate(){ if (typePredicate == null && getTypeId() != null) { typePredicate = IdPredicate.create(getPredicateVariable().id(getTypeId()), getParentQuery()); } return typePredicate; }
/** * Get the resource edge id if there is one. Return null if not. */ public static ConceptId getResourceEdgeId(GraknTx graph, ConceptId conceptId1, ConceptId conceptId2) { if (mayHaveResourceEdge(graph, conceptId1, conceptId2)) { Optional<Concept> firstConcept = graph.graql().match( var("x").id(conceptId1), var("y").id(conceptId2), var("z").rel(var("x")).rel(var("y"))) .get("z") .stream().map(answer -> answer.get("z")) .findFirst(); if (firstConcept.isPresent()) { return firstConcept.get().id(); } } return null; }
public Pattern pattern(Relationship concept) { VarPattern relationPattern = Graql.var(); Set<Pattern> idPatterns = new HashSet<>(); for (Map.Entry<Role, Set<Thing>> entry : concept.rolePlayersMap().entrySet()) { for (Thing var : entry.getValue()) { Var rolePlayer = Graql.var(); relationPattern = relationPattern.rel(Graql.label(entry.getKey().label()), rolePlayer); idPatterns.add(rolePlayer.asUserDefined().id(var.id())); } } relationPattern = relationPattern.isa(Graql.label(concept.type().label())); Pattern pattern = relationPattern; for (Pattern idPattern : idPatterns) { pattern = pattern.and(idPattern); } return pattern; } }