我有在B中导入的本体A.我想重命名一个实体,所以我写道:
OWLEntityRenamer renamer = new OWLEntityRenamer(manager, Collections.singleton(A));
Map<OWLEntity, IRI> entity2IRIMap = new HashMap<>();
entity2IRIMap.put(datafactory.getOWLNamedIndividual(iriBase+"Skyfos"), IRI.create(iriBase+"Skyphos"));
manager.applyChanges(renamer.changeIRI(entity2IRIMap));
manager.save(A);
manager.save(B);
现在,实体在A中正确重命名,但在B中我有两个实体。特别是在B中,使用“Skyfos”的每个对象属性继续使用“Skyfos”而不是“Skyphos”。谢谢。
这里的问题是OWLEntityRenamer要求修改所有本体。
您只将本体A传递给了重命名者。如果B已经使用旧的IRI,则不会更改。将两个本体传递给重命名器并再试一次。