diff --git a/extras/indexingExample/src/main/java/MongoRyaDirectExample.java b/extras/indexingExample/src/main/java/MongoRyaDirectExample.java
index f2a01a5..1744606 100644
--- a/extras/indexingExample/src/main/java/MongoRyaDirectExample.java
+++ b/extras/indexingExample/src/main/java/MongoRyaDirectExample.java
@@ -823,13 +823,6 @@
     UpdateExecutionException, QueryEvaluationException, TupleQueryResultHandlerException, RDFParseException, IOException {
 
         final String query = LubmQuery.LUBM_QUERY_14.getSparqlQuery();
-//            "PREFIX lubm: <" + LUBM_PREFIX + "> \n" +
-//            "SELECT * WHERE \n" +
-//            "{ \n" +
-//            "  ?graduateStudent a lubm:GraduateStudent . \n" +
-//            "  ?underGradUniversity a lubm:University . \n"  +
-//            "  ?graduateStudent lubm:undergraduateDegreeFrom ?underGradUniversity . \n" +
-//            "}";
 
         log.info("Query to be Performed on LUBM Data :\n\n" + query + "\n");
 
@@ -838,11 +831,28 @@
 
         log.info("Executing LUBM Query");
         final CountingResultHandler resultHandler = new CountingResultHandler();
-        final TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
+        TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, query);
         tupleQuery.evaluate(resultHandler);
         log.info("Result count : " + resultHandler.getCount());
 
         Validate.isTrue(resultHandler.getCount() > 0);
+
+        resultHandler.resetCount();
+
+        final String deleteQuery = "DELETE WHERE { ?s ?p ?o }";
+
+        log.info("Deleting LUBM Data");
+        final Update update = conn.prepareUpdate(QueryLanguage.SPARQL, deleteQuery);
+        update.execute();
+
+        final String selectAllQuery = "SELECT * WHERE { ?s ?p ?o }";
+
+        log.info("Confirming LUBM Data Cleared");
+        tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, selectAllQuery);
+        tupleQuery.evaluate(resultHandler);
+        log.info("Result count : " + resultHandler.getCount());
+
+        Validate.isTrue(resultHandler.getCount() == 0);
     }
 
     private static void addTriples(final SailRepositoryConnection conn, final File triplesFile, final RDFFormat rdfFormat) throws RDFParseException, RepositoryException, IOException {
diff --git a/extras/rya.streams/client/src/test/java/org/apache/rya/streams/client/command/RunQueryCommandIT.java b/extras/rya.streams/client/src/test/java/org/apache/rya/streams/client/command/RunQueryCommandIT.java
index 7c661d2..03834e9 100644
--- a/extras/rya.streams/client/src/test/java/org/apache/rya/streams/client/command/RunQueryCommandIT.java
+++ b/extras/rya.streams/client/src/test/java/org/apache/rya/streams/client/command/RunQueryCommandIT.java
@@ -206,7 +206,6 @@
 
     @Test
     public void runQueryFromFile() throws Exception {
-        // TODO: Maybe test with org.apache.rya.api.utils.LubmQuery.LUBM_QUERY_1,2,3,etc...
         // NOTE: the order of the query statements previously lead to join
         // issues. When "lubm:undergraduateDegreeFrom" was the first statement
         // in the where clause (as opposed to the last) the
