--- 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
+    }
 }