--- a/src/net/timbusproject/dpes/alternative/AlternativesBuilder/AlternativesBuilderHelper.java
+++ b/src/net/timbusproject/dpes/alternative/AlternativesBuilder/AlternativesBuilderHelper.java
@@ -22,6 +22,7 @@
import net.timbusproject.dpes.alternative.PreservationIdentifierException;
import net.timbusproject.dpes.alternative.Risk;
import org.sbaresearch.owl.AlternativesBuilder;
+import org.sbaresearch.owl.AnnotationNotFoundException;
import org.sbaresearch.owl.OwlApiFacade;
import org.sbaresearch.owl.OwlElementNotFoundException;
import org.semanticweb.owlapi.model.*;
@@ -109,4 +110,21 @@
return targetIRI;
}
+
+ public static String getFragmentOfResource(OwlApiFacade originalModelFacade, String affectedResourceName) throws OwlElementNotFoundException {
+ OWLNamedIndividual affectedIndiv = originalModelFacade.getIndividual(originalModelFacade.findIndividualByFragmentAndLabel(affectedResourceName).toString());
+ String affectedResourceFragment = originalModelFacade.createIri(affectedResourceName).getFragment();
+ try {
+ affectedResourceFragment = originalModelFacade.hasLabel(affectedIndiv) ? originalModelFacade.getLabel(affectedIndiv) : affectedResourceFragment;
+ } catch (AnnotationNotFoundException e) {
+ LOG.error("Unable to get label for resource: " + affectedResourceName + ". Using resource name as fallback.");
+ }
+ affectedResourceFragment = cleanName(affectedResourceFragment);
+ LOG.info("Getting alternatives for tool: " + affectedResourceFragment);
+ return affectedResourceFragment;
+ }
+
+ public static String cleanName(Object name) {
+ return name.toString().replace(" ", "-").replace("/", "-").replaceAll("[^a-zA-Z0-9_:-]", ""); // TODO: sync with kbgen
+ }
}