@Override public int getArity() { return predicate.getArity(); }
protected AbstractDataAtomImpl(P predicate, ImmutableList<? extends VariableOrGroundTerm> variableOrGroundTerms) { this.predicate = predicate; this.arguments = variableOrGroundTerms; this.string = null; if (predicate.getArity() != arguments.size()) { throw new IllegalArgumentException("Arity violation: " + predicate + " was expecting " + predicate.getArity() + ", not " + arguments.size()); } }
private Stream<ExtensionalDataNode> selectNodesToRemovePerConstraint(ImmutableSet<Variable> requiredAndCooccuringVariables, FunctionalDependency constraint, ImmutableCollection<Collection<ExtensionalDataNode>> clusters, AtomPredicate predicate) { ImmutableList<Integer> determinantIndexes = constraint.getDeterminants().stream() .map(Attribute::getIndex) .collect(ImmutableCollectors.toList()); ImmutableList<Integer> dependentIndexes = constraint.getDependents().stream() .map(Attribute::getIndex) .collect(ImmutableCollectors.toList()); ImmutableSet<Integer> independentIndexes = IntStream.range(1, predicate.getArity() + 1) .filter(i -> !dependentIndexes.contains(i)) .filter(i -> !determinantIndexes.contains(i)) .boxed() .collect(ImmutableCollectors.toSet()); return clusters.stream() .flatMap(cluster -> selectNodesToRemovePerCluster(cluster, requiredAndCooccuringVariables, independentIndexes)); }
private Stream<DataNode> selectNodesToRemovePerConstraint(ImmutableSet<Variable> requiredAndCooccuringVariables, FunctionalDependency constraint, ImmutableCollection<Collection<DataNode>> clusters, AtomPredicate predicate) { ImmutableList<Integer> determinantIndexes = constraint.getDeterminants().stream() .map(Attribute::getIndex) .collect(ImmutableCollectors.toList()); ImmutableList<Integer> dependentIndexes = constraint.getDependents().stream() .map(Attribute::getIndex) .collect(ImmutableCollectors.toList()); ImmutableSet<Integer> independentIndexes = IntStream.range(1, predicate.getArity() + 1) .filter(i -> !dependentIndexes.contains(i)) .filter(i -> !determinantIndexes.contains(i)) .boxed() .collect(ImmutableCollectors.toSet()); return clusters.stream() .flatMap(cluster -> selectNodesToRemovePerCluster(cluster, requiredAndCooccuringVariables, independentIndexes)); }