@Override public UnaryOperator<VarPattern> visitIsa(GraqlParser.IsaContext ctx) { return var -> var.isa(visitVariable(ctx.variable())); }
@Override protected Pattern createCombinedPattern(){ if (getPredicateVariable().isUserDefinedName()) return super.createCombinedPattern(); return getSchemaConcept() == null? relationPattern() : isDirect()? relationPattern().isaExplicit(getSchemaConcept().label().getValue()): relationPattern().isa(getSchemaConcept().label().getValue()); }
(isDirect()? relationPattern.isaExplicit(getPredicateVariable()) : relationPattern.isa(getPredicateVariable()) ).admin(); return create(newPattern, this.getPredicateVariable(), this.getTypeId(), this.getPossibleTypes(), this.getParentQuery());
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; } }
relVar = isaProp instanceof IsaExplicitProperty ? relVar.isaExplicit(typeVariable.asUserDefined()) : relVar.isa(typeVariable.asUserDefined()); return RelationshipAtom.create(relVar.admin(), typeVariable, predicateId, parent);
@Override public RelationshipAtom rewriteWithRelationVariable(){ VarPattern newVar = Graql.var().asUserDefined(); VarPattern relVar = getPattern().admin().getProperty(IsaProperty.class) .map(prop -> newVar.isa(prop.type())) .orElse(newVar); for (RelationPlayer c: getRelationPlayers()) { VarPatternAdmin roleType = c.getRole().orElse(null); if (roleType != null) { relVar = relVar.rel(roleType, c.getRolePlayer()); } else { relVar = relVar.rel(c.getRolePlayer()); } } return create(relVar.admin(), this.getPredicateVariable(), this.getTypeId(), this.getPossibleTypes(), this.getParentQuery()); }
@Override public RelationshipAtom toRelationshipAtom(){ SchemaConcept type = getSchemaConcept(); if (type == null) throw GraqlQueryException.illegalAtomConversion(this, RelationshipAtom.class); GraknTx tx = getParentQuery().tx(); Label typeLabel = Schema.ImplicitType.HAS.getLabel(type.label()); return RelationshipAtom.create( Graql.var() .rel(Schema.ImplicitType.HAS_OWNER.getLabel(type.label()).getValue(), getVarName()) .rel(Schema.ImplicitType.HAS_VALUE.getLabel(type.label()).getValue(), getPredicateVariable()) .isa(typeLabel.getValue()) .admin(), getPredicateVariable(), tx.getSchemaConcept(typeLabel).id(), getParentQuery() ); }