@Override public UnaryOperator<VarPattern> visitPropValue(GraqlParser.PropValueContext ctx) { return var -> var.val(visitPredicate(ctx.predicate())); }
@Override public UnaryOperator<VarPattern> visitPropHas(GraqlParser.PropHasContext ctx) { Label type = visitLabel(ctx.label()); VarPattern relation = Optional.ofNullable(ctx.relation).map(this::getVariable).orElseGet(Graql::var); VarPattern resource = Optional.ofNullable(ctx.resource).map(this::getVariable).orElseGet(Graql::var); if (ctx.predicate() != null) { resource = resource.val(visitPredicate(ctx.predicate())); } VarPattern finalResource = resource; return var -> var.has(type, finalResource, relation); }
/** * Map a {@link Attribute} to a var IF it is not attached in a has relation to another instance * @param attribute {@link Attribute} to be mapped * @return var patterns representing the given instance */ private static VarPattern map(Attribute attribute){ if(isHasResourceResource(attribute)){ return var(); } VarPattern var = base(attribute); var = var.val(attribute.value()); return var; }