/** * @param input collection to partition * @return a stream of elements for a triangular matrix of size {@code l.size()}, where l is the * list corresponding to the input collection. For input of length 3, the values are * (l.get(1),l.get(2)), (l.get(1),l.get(3)), (l.get(2),l.get(3)) */ public static <T> Stream<Pair<T>> pairs(Stream<T> input) { return pairs(asList(input)); }
/** * @param input collection to partition * @return a stream of elements for a triangular matrix of size {@code l.size()}, where l is the * list corresponding to the input collection. For input of length 3, the values are * (l.get(1),l.get(2)), (l.get(1),l.get(3)), (l.get(2),l.get(3)) */ public static <T> Stream<Pair<T>> pairs(Stream<T> input) { return pairs(asList(input)); }
/** * @param visitor visitor to apply to all pairwise elements in this axiom; pairs are not * ordered, i.e., only (i,j) will be considered, for i!=j; (j, i) is not considered. */ default void forEach(OWLPairwiseVoidVisitor<C> visitor) { pairs(operands()).forEach(v -> visitor.visit(v.i, v.j)); }
/** * @param visitor visitor to apply to all pairwise elements in this axiom; pairs are not * ordered, i.e., only (i,j) will be considered, for i!=j; (j, i) is not considered. * @return true if all pairs evaluation is true */ default boolean allMatch(OWLPairwiseBooleanVisitor<C> visitor) { return pairs(operands()).allMatch(v -> visitor.visit(v.i, v.j)); }
@Override public void visit(OWLEquivalentDataPropertiesAxiom axiom) { isLocal = false; if (pairs(axiom.properties()).map(v -> df.getOWLEquivalentDataPropertiesAxiom(v.i, v.j)) .anyMatch(ax -> !kernel.isEntailed(ax))) { return; } isLocal = true; }
@Override public void visit(OWLDisjointClassesAxiom axiom) { isLocal = false; if (pairs(axiom.classExpressions()).map(v -> df.getOWLDisjointClassesAxiom(v.i, v.j)) .anyMatch(ax -> !kernel.isEntailed(ax))) { return; } isLocal = true; }
@Override public void visit(OWLEquivalentClassesAxiom axiom) { isLocal = false; if (pairs(axiom.classExpressions()).map(v -> df.getOWLEquivalentClassesAxiom(v.i, v.j)) .anyMatch(ax -> !kernel.isEntailed(ax))) { return; } isLocal = true; }
@Override public void visit(OWLDisjointClassesAxiom axiom) { isLocal = false; if (pairs(axiom.classExpressions()).map(v -> df.getOWLDisjointClassesAxiom(v.i, v.j)) .anyMatch(ax -> !kernel.isEntailed(ax))) { return; } isLocal = true; }
/** * @param <T> type returned by visitor * @param visitor visitor to apply to all pairwise elements in this axiom; pairs are not * ordered, i.e., only (i,j) will be considered, for i!=j; (j, i) is not considered. * @return collection of all visitor return values that are not null */ default <T> Collection<T> walkPairwise(OWLPairwiseVisitor<T, C> visitor) { return asList(pairs(operands()).map(v -> visitor.visit(v.i, v.j)).filter(Objects::nonNull)); }
@Override public void visit(OWLEquivalentClassesAxiom axiom) { isLocal = false; if (pairs(axiom.classExpressions()).map(v -> df.getOWLEquivalentClassesAxiom(v.i, v.j)) .anyMatch(ax -> !kernel.isEntailed(ax))) { return; } isLocal = true; }
@Override public void visit(OWLEquivalentObjectPropertiesAxiom axiom) { isLocal = false; if (pairs(axiom.properties()).map(v -> df.getOWLEquivalentObjectPropertiesAxiom(v.i, v.j)) .anyMatch(ax -> !kernel.isEntailed(ax))) { return; } isLocal = true; }
private void generateChanges(Collection<? extends OWLClassExpression> classExpressions, boolean usePairwiseDisjointAxioms, OWLOntology targetOntology) { if (usePairwiseDisjointAxioms) { pairs(classExpressions) .forEach(v -> addChange( new AddAxiom(targetOntology, df.getOWLDisjointClassesAxiom(v.i, v.j)))); } else { addChange( new AddAxiom(targetOntology, df.getOWLDisjointClassesAxiom(classExpressions))); } } }
@Override public void visit(OWLDisjointObjectPropertiesAxiom axiom) { pairs(axiom.properties()).forEach(v -> { writeOpenBracket(); write(DISJOINT_ROLES); write(v.i); write(v.j); writeCloseBracket(); writeln(); }); }
@Override public void visit(OWLDifferentIndividualsAxiom axiom) { pairs(axiom.individuals()).forEach(v -> { writeOpenBracket(); write(DISTINCT); write(v.i); write(v.j); writeCloseBracket(); writeln(); }); }
@Override public void visit(OWLSameIndividualAxiom axiom) { pairs(axiom.individuals()).forEach(v -> { writeOpenBracket(); write(EQUAL); write(v.i); write(v.j); writeCloseBracket(); writeln(); }); }
@Override public void visit(OWLDifferentIndividualsAxiom axiom) { pairs(axiom.individuals()).forEach(v -> { writeOpenBracket(); write(DISTINCT); write(v.i); write(v.j); writeCloseBracket(); writeln(); }); }
@Override public void visit(OWLDisjointClassesAxiom axiom) { pairs(axiom.classExpressions()).forEach(v -> { writeOpenBracket(); write(DISJOINT); write(v.i); write(v.j); writeCloseBracket(); writeln(); }); }
@Override public void visit(OWLEquivalentObjectPropertiesAxiom axiom) { pairs(axiom.properties()).forEach(v -> { writeOpenBracket(); write(ROLES_EQUIVALENT); write(v.i); write(v.j); writeCloseBracket(); writeln(); }); }
@Override public void visit(OWLEquivalentClassesAxiom axiom) { pairs(axiom.classExpressions()).forEach(v -> { writeOpenBracket(); write(EQUIVALENT); write(v.i); write(v.j); writeCloseBracket(); writeln(); }); }
@Override public void visit(OWLEquivalentClassesAxiom axiom) { pairs(axiom.classExpressions()).forEach(v -> { writeOpenBracket(); write(EQUIVALENT); write(v.i); write(v.j); writeCloseBracket(); writeln(); }); }