diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/sdb/RDFServiceSDB.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/sdb/RDFServiceSDB.java index b78649ffc..e75ddcac5 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/sdb/RDFServiceSDB.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/sdb/RDFServiceSDB.java @@ -202,11 +202,14 @@ public class RDFServiceSDB extends RDFServiceImpl implements RDFService { log.warn("This likely indicates a problem; excessive data may be deleted."); } - String rootFinder = "SELECT ?s WHERE { ?s ?p ?o OPTIONAL { ?ss ?pp ?s } FILTER (!bound(?ss)) }"; + String rootFinder = "SELECT ?s WHERE { ?s ?p ?o OPTIONAL { ?ss ?pp ?s FILTER(!isBlank(?ss)) } FILTER (!bound(?ss)) }"; Query rootFinderQuery = QueryFactory.create(rootFinder); QueryExecution qe = QueryExecutionFactory.create(rootFinderQuery, blankNodeModel); try { ResultSet rs = qe.execSelect(); + if (!rs.hasNext()) { + log.warn("No rooted blank node trees; deletion is not possible."); + } while (rs.hasNext()) { QuerySolution qs = rs.next(); Resource s = qs.getResource("s"); @@ -268,7 +271,6 @@ public class RDFServiceSDB extends RDFServiceImpl implements RDFService { private void removeUsingSparqlUpdate(Dataset dataset, Model model, String graphURI) { - StringBuffer patternBuff = new StringBuffer(); StmtIterator stmtIt = model.listStatements(); if (!stmtIt.hasNext()) { @@ -276,16 +278,6 @@ public class RDFServiceSDB extends RDFServiceImpl implements RDFService { return; } - while(stmtIt.hasNext()) { - Triple t = stmtIt.next().asTriple(); - patternBuff.append(SparqlGraph.sparqlNodeDelete(t.getSubject(), null)); - patternBuff.append(" "); - patternBuff.append(SparqlGraph.sparqlNodeDelete(t.getPredicate(), null)); - patternBuff.append(" "); - patternBuff.append(SparqlGraph.sparqlNodeDelete(t.getObject(), null)); - patternBuff.append(" .\n"); - } - StringBuffer queryBuff = new StringBuffer(); queryBuff.append("CONSTRUCT { \n"); addStatementPatterns(stmtIt, queryBuff, !WHERE_CLAUSE); @@ -294,13 +286,13 @@ public class RDFServiceSDB extends RDFServiceImpl implements RDFService { queryBuff.append(" GRAPH <" + graphURI + "> { \n"); } stmtIt = model.listStatements(); - addStatementPatterns(stmtIt, queryBuff, !WHERE_CLAUSE); + addStatementPatterns(stmtIt, queryBuff, WHERE_CLAUSE); if (graphURI != null) { queryBuff.append(" } \n"); } queryBuff.append("} \n"); - //log.debug(queryBuff.toString()); + log.debug(queryBuff.toString()); Query construct = QueryFactory.create(queryBuff.toString()); // make a plain dataset to force the query to be run in a way that diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/sparql/RDFServiceSparql.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/sparql/RDFServiceSparql.java index 3f811eb88..bef257bf9 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/sparql/RDFServiceSparql.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/rdfservice/impl/sparql/RDFServiceSparql.java @@ -568,7 +568,7 @@ public class RDFServiceSparql extends RDFServiceImpl implements RDFService { log.warn("This likely indicates a problem; excessive data may be deleted."); } - String rootFinder = "SELECT ?s WHERE { ?s ?p ?o OPTIONAL { ?ss ?pp ?s } FILTER (!bound(?ss)) }"; + String rootFinder = "SELECT ?s WHERE { ?s ?p ?o OPTIONAL { ?ss ?pp ?s FILTER(!isBlank(?ss)) } FILTER (!bound(?ss)) }"; Query rootFinderQuery = QueryFactory.create(rootFinder); QueryExecution qe = QueryExecutionFactory.create(rootFinderQuery, blankNodeModel); try { @@ -618,7 +618,6 @@ public class RDFServiceSparql extends RDFServiceImpl implements RDFService { private void removeUsingSparqlUpdate(Model model, String graphURI) { - StmtIterator stmtIt = model.listStatements(); if (!stmtIt.hasNext()) {