private void apply(EntityBasedDiff diff) { IRI iriOfNewlyCreatedClass = null; String code = null; MatchedAxiom splitAxiomWithBadDescription = null; MatchedAxiom splitFrom = null; for (MatchedAxiom match : diff.getAxiomMatches()) { if (match.getDescription().equals(MatchedAxiom.AXIOM_ADDED) && isSplitFromAnnotationAssertion(match.getTargetAxiom())) { splitAxiomWithBadDescription = match; splitFrom = new MatchedAxiom(null, match.getTargetAxiom(), SPLIT); iriOfNewlyCreatedClass = (IRI) ((OWLAnnotationAssertionAxiom) match.getTargetAxiom()).getSubject(); code = ((OWLLiteral) ((OWLAnnotationAssertionAxiom) match.getTargetAxiom()).getValue()) .getLiteral(); break; } } if (splitFrom != null) { changes.removeMatch(splitAxiomWithBadDescription); changes.addMatch(splitFrom); handleNewSplitAxioms(iriOfNewlyCreatedClass, code, diff); } }
private OWLClass getClassThatWasSplit(String code) { if (code == null) { return null; } Collection<OWLEntity> possiblySplitEntities = mapper.getTargetEntities(code); OWLClass classThatWasSplit = null; for (OWLEntity possiblySplityEntity : possiblySplitEntities) { if (possiblySplityEntity instanceof OWLClass) { if (classThatWasSplit != null) { return null; } else { classThatWasSplit = (OWLClass) possiblySplityEntity; EntityBasedDiff classThatWasSplitDiff = changes.getTargetDiffMap().get(classThatWasSplit); if (classThatWasSplitDiff != null) { classThatWasSplit = (OWLClass) classThatWasSplitDiff .getSourceEntity(); // if it was created we do really want null } } } } return classThatWasSplit; }
private void handleNewSplitAxioms( OWLClass newlyCreatedClass, OWLClass classThatWasSplit, EntityBasedDiff diff) { OWLOntology sourceOntology = diffMap.getSourceOntology(); Map<OWLEntity, IRI> newTargetToSplitSource = Collections.singletonMap((OWLEntity) newlyCreatedClass, classThatWasSplit.getIRI()); OWLObjectDuplicator duplicator = new OWLObjectDuplicator(newTargetToSplitSource, diffMap.getOWLDataFactory()); Set<OWLClassExpression> inferredParents = getInferredParents(sourceOntology, classThatWasSplit); for (MatchedAxiom match : new ArrayList<MatchedAxiom>(diff.getAxiomMatches())) { if (match.getDescription().equals(MatchedAxiom.AXIOM_ADDED) && cameFromSourceOntology( (OWLAxiom) duplicator.duplicateObject(match.getTargetAxiom()), sourceOntology, classThatWasSplit, inferredParents)) { MatchedAxiom modifiedBySplit = new MatchedAxiom(null, match.getTargetAxiom(), COPIED_FROM_SPLIT); changes.removeMatch(match); changes.addMatch(modifiedBySplit); } } }