public boolean eca(@NonNull List<@NonNull SWRLBuiltInArgument> arguments) throws SWRLBuiltInException
{
checkNumberOfArgumentsEqualTo(2, arguments.size());
Set<OWLEquivalentClassesAxiom> axioms = getBuiltInBridge().getOWLOntology()
.getAxioms(AxiomType.EQUIVALENT_CLASSES, Imports.INCLUDED).stream().flatMap(a -> a.asPairwiseAxioms().stream())
.collect(Collectors.toSet());
if (axioms.isEmpty())
return false;
else {
Map<@NonNull Integer, @NonNull OWLObject> inputArgumentValues = getInputArgumentValues(arguments,
SWRLBuiltInArgumentType.CLASS_EXPRESSION, SWRLBuiltInArgumentType.CLASS_EXPRESSION);
Map<@NonNull Integer, @NonNull SWRLMultiValueVariableBuiltInArgument> outputMultiValueArguments = createOutputMultiValueArguments(
arguments);
for (OWLEquivalentClassesAxiom axiom : axioms) {
OWLClassExpression candidateValue1 = axiom.getClassExpressionsAsList().get(0);
OWLClassExpression candidateValue2 = axiom.getClassExpressionsAsList().get(1);
if (!noBoundArgumentsMismatch(inputArgumentValues, candidateValue1, candidateValue2)) {
if (outputMultiValueArguments.isEmpty())
return true;
else {
if (outputMultiValueArguments.containsKey(0))
outputMultiValueArguments.get(0).addArgument(createClassExpressionBuiltInArgument(candidateValue1));
if (outputMultiValueArguments.containsKey(1))
outputMultiValueArguments.get(1).addArgument(createClassExpressionBuiltInArgument(candidateValue2));
}
}
}
return processResultMultiValueArguments(arguments, outputMultiValueArguments);
}
}