use of com.vaticle.typedb.core.pattern.constraint.type.PlaysConstraint in project grakn by graknlabs.
the class TypeVariable method plays.
public PlaysConstraint plays(@Nullable TypeVariable relationType, TypeVariable roleType, @Nullable TypeVariable overriddenRoleType) {
PlaysConstraint playsConstraint = new PlaysConstraint(this, relationType, roleType, overriddenRoleType);
constrain(playsConstraint);
return playsConstraint;
}
use of com.vaticle.typedb.core.pattern.constraint.type.PlaysConstraint in project grakn by graknlabs.
the class Definer method definePlays.
private void definePlays(ThingType thingType, Set<PlaysConstraint> playsConstraints) {
try (ThreadTrace ignored = traceOnThread(TRACE_PREFIX + "define_plays")) {
playsConstraints.forEach(plays -> {
define(plays.relation().get());
LabelConstraint roleTypeLabel = plays.role().label().get();
RoleType roleType = getRoleType(roleTypeLabel).asRoleType();
if (plays.overridden().isPresent()) {
String overriddenLabelName = plays.overridden().get().label().get().properLabel().name();
Optional<? extends RoleType> overriddenType = roleType.getSupertypes().filter(rt -> rt.getLabel().name().equals(overriddenLabelName)).first();
if (overriddenType.isPresent()) {
thingType.setPlays(roleType, overriddenType.get());
} else {
throw TypeDBException.of(OVERRIDDEN_NOT_SUPERTYPE, roleTypeLabel.scopedLabel(), overriddenLabelName);
}
} else {
thingType.setPlays(roleType);
}
});
}
}
Aggregations