@Override public Void visit(OWLDifferentIndividualsAxiom axiom) { List<Long> nodes = transform(axiom.getIndividualsAsList(), new Function<OWLIndividual, Long>() { @Override public Long apply(OWLIndividual individual) { return getOrCreateNode(getIri(individual)); } }); getOrCreateRelationshipPairwise(nodes, OwlRelationships.OWL_DIFFERENT_FROM); return null; }
@Override public void visit(final OWLDifferentIndividualsAxiom axiom) { if (!_addAxioms) { _reloadRequired = true; return; } final List<OWLIndividual> inds = axiom.getIndividualsAsList(); if (inds.size() == 2) { final Iterator<OWLIndividual> iter = inds.iterator(); iter.next().accept(this); final ATermAppl i1 = _term; iter.next().accept(this); final ATermAppl i2 = _term; _kb.addDifferent(i1, i2); } else { final ATermAppl[] terms = new ATermAppl[inds.size()]; int i = 0; for (final OWLIndividual ind : inds) { ind.accept(this); terms[i++] = _term; } _kb.addAllDifferent(ATermUtils.makeList(terms)); } }
@Override public void visit(final OWLDifferentIndividualsAxiom axiom) { if (!_addAxioms) { _reloadRequired = true; return; } final List<OWLIndividual> inds = axiom.getIndividualsAsList(); if (inds.size() == 2) { final Iterator<OWLIndividual> iter = inds.iterator(); iter.next().accept(this); final ATermAppl i1 = _term; iter.next().accept(this); final ATermAppl i2 = _term; _kb.addDifferent(i1, i2); } else { final ATermAppl[] terms = new ATermAppl[inds.size()]; int i = 0; for (final OWLIndividual ind : inds) { ind.accept(this); terms[i++] = _term; } _kb.addAllDifferent(ATermUtils.makeList(terms)); } }
@Override public void visit(final OWLDifferentIndividualsAxiom axiom) { if (!_addAxioms) { _reloadRequired = true; return; } final List<OWLIndividual> inds = axiom.getIndividualsAsList(); if (inds.size() == 2) { final Iterator<OWLIndividual> iter = inds.iterator(); iter.next().accept(this); final ATermAppl i1 = _term; iter.next().accept(this); final ATermAppl i2 = _term; _kb.addDifferent(i1, i2); } else { final ATermAppl[] terms = new ATermAppl[inds.size()]; int i = 0; for (final OWLIndividual ind : inds) { ind.accept(this); terms[i++] = _term; } _kb.addAllDifferent(ATermUtils.makeList(terms)); } }
public boolean dia(@NonNull List<@NonNull SWRLBuiltInArgument> arguments) throws SWRLBuiltInException { checkNumberOfArgumentsEqualTo(2, arguments.size()); Set<OWLDifferentIndividualsAxiom> axioms = getBuiltInBridge().getOWLOntology() .getAxioms(AxiomType.DIFFERENT_INDIVIDUALS, 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.NAMED_INDIVIDUAL, SWRLBuiltInArgumentType.NAMED_INDIVIDUAL); Map<@NonNull Integer, @NonNull SWRLMultiValueVariableBuiltInArgument> outputMultiValueArguments = createOutputMultiValueArguments( arguments); for (OWLDifferentIndividualsAxiom axiom : axioms) { OWLNamedIndividual candidateValue1 = axiom.getIndividualsAsList().get(0).asOWLNamedIndividual(); OWLNamedIndividual candidateValue2 = axiom.getIndividualsAsList().get(1).asOWLNamedIndividual(); if (!noBoundArgumentsMismatch(inputArgumentValues, candidateValue1, candidateValue2)) { if (outputMultiValueArguments.isEmpty()) return true; // We have a match and there are no unbound arguments - return immediately else { // We have a match so update any unbound arguments with the matched values if (outputMultiValueArguments.containsKey(0)) outputMultiValueArguments.get(0).addArgument(createNamedIndividualBuiltInArgument(candidateValue1)); if (outputMultiValueArguments.containsKey(1)) outputMultiValueArguments.get(1).addArgument(createNamedIndividualBuiltInArgument(candidateValue2)); } } } return processResultMultiValueArguments(arguments, outputMultiValueArguments); } }