@Override public final VarPattern plays(String type) { return plays(Graql.label(type)); }
@Override public final VarPattern isaExplicit(String type) { return isaExplicit(Graql.label(type)); }
@Override public final VarPattern isa(String type) { return isa(Graql.label(type)); }
@Override public final VarPattern sub(String type) { return sub(Graql.label(type)); }
@Override public final VarPattern has(String type) { return has(Graql.label(type)); }
@Override public final VarPattern rel(String role, VarPattern roleplayer) { return rel(Graql.label(role), roleplayer); }
@Override public Stream<VarPatternAdmin> getTypes() { return Stream.of(label(type()).admin()); }
/** * Add relates edges to a var, given a type * @param var var to be modified * @param type type from which metadata extracted * @return var with appropriate relates edges */ private static VarPattern relates(VarPattern var, RelationshipType type){ for(Role role:type.roles().collect(Collectors.toSet())){ var = var.relates(Graql.label(role.label())); } return var; }
/** * Add plays edges to a var, given a type * @param var var to be modified * @param type type from which metadata extracted * @return var with appropriate plays edges */ private static VarPattern plays(VarPattern var, Type type) { for(Role role:type.playing().collect(Collectors.toSet())){ var = var.plays(Graql.label(role.label())); } return var; }
@Override public final VarPattern rel(String role, String roleplayer) { return rel(Graql.label(role), Graql.var(roleplayer)); }
/** * Add the roleplayers of a {@link Relationship} to the relationship var * @param var var representing the relationship * @param relationship {@link Relationship} that contains roleplayer data * @return var pattern with roleplayers */ private static VarPattern roleplayers(VarPattern var, Relationship relationship){ for(Map.Entry<Role, Set<Thing>> entry: relationship.rolePlayersMap().entrySet()){ Role role = entry.getKey(); for (Thing thing : entry.getValue()) { var = var.rel(Graql.label(role.label()), thing.id().getValue()); } } return var; }
public static HasAttributeProperty of(Label attributeType, VarPatternAdmin attribute, VarPatternAdmin relationship) { attribute = attribute.isa(label(attributeType)).admin(); return new AutoValue_HasAttributeProperty(attributeType, attribute, relationship); }
/** * Helper method to check whether the concept types in the scope have any instances * * @return */ private boolean scopeContainsInstance() { if (scopeTypeLabels().isEmpty()) return false; List<Pattern> checkSubtypes = scopeTypeLabels().stream() .map(type -> Graql.var("x").isa(Graql.label(type))).collect(Collectors.toList()); return tx.graql().infer(false).match(Graql.or(checkSubtypes)).iterator().hasNext(); }
@Override public VarPattern visitVariable(GraqlParser.VariableContext ctx) { if (ctx == null) { return var(); } else if (ctx.label() != null) { return label(visitLabel(ctx.label())); } else { return getVariable(ctx.VARIABLE()); } }
public Pattern pattern(Entity concept) { Var entityVar = Graql.var().asUserDefined(); return entityVar .isa(Graql.label(concept.type().label())) .id(concept.id()); } }
public static HasAtom create(Var var, Var predicateVar, ConceptId predicateId, ReasonerQuery parent) { Label label = parent.tx().getConcept(predicateId).asType().label(); return create(var.has(Graql.label(label)), predicateVar, predicateId, parent); }
/** * Given an thing, return a var with the type. * @param thing thing to map * @return var patterns representing given thing */ private static VarPattern base(Thing thing){ VarPattern var = var(thing.id().getValue()).isa(Graql.label(thing.type().label())); return hasResources(var, thing); }
@Override public Atomic mapToAtom(VarPatternAdmin var, Set<VarPatternAdmin> vars, ReasonerQuery parent) { //NB: HasResourceType is a special case and it doesn't allow variables as resource types Var varName = var.var().asUserDefined(); Label label = this.resourceType().getTypeLabel().orElse(null); Var predicateVar = var().asUserDefined(); SchemaConcept schemaConcept = parent.tx().getSchemaConcept(label); ConceptId predicateId = schemaConcept != null? schemaConcept.id() : null; //isa part VarPatternAdmin resVar = varName.has(Graql.label(label)).admin(); return HasAtom.create(resVar, predicateVar, predicateId, parent); } }
/** * Create a var with the information underlying all Types * @param schemaConcept type to be mapped * @return {@link VarPattern} containing basic information about the given type */ private static VarPattern formatBase(SchemaConcept schemaConcept) { VarPattern var = var().label(schemaConcept.label()); SchemaConcept superType = schemaConcept.sup(); if (schemaConcept.sup() != null) { var = var.sub(Graql.label(superType.label())); } if(schemaConcept.isType()) { Type type = schemaConcept.asType(); var = plays(var, type); var = isAbstract(var, type); } return var; }